minzzl
리눅스 tc 명령어 사용법 본문
안녕하세요 ~!
논문 관련 실험에서 tc 가 사용이 되는데요 ...
관련들이 뭔가 제 마음에 들지 않아서 .. 이렇게 작성을 해보려고 합니다.
TC 명령어
TC는 Traffic Control의 약자로, 네트워크의 트래픽을 제어하는 도구입니다.
사실 평소에는 크게 사용할 일이 없지만.. 저와 같은 네트워크 상황을 시물레이션 해볼 필요가 있는 사람에게는 너무나도 유용한 도구입니다.
즉 이를 이용하면 UDP 또는 TCP 응용 프로그램의 패킷 지연 및 손실을 시뮬레이션하거나 특정 서비스의 대역폭 사용을 제한하여 인터넷 연결(DSL, 케이블, T1 등)을 시뮬레이션할 수 있습니다.
Network Delay
추가
첫 번째 예는 인터페이스에 일정한 지연을 추가하는 방법입니다.
tc qdisc add dev eth0 root netem delay 200ms
각각의 옵션이 의미하는 것은 무엇일까요?
qdisc: 스케줄러 수정(일명 큐잉 규칙)
add: 새 규칙 추가
dev eth0: 장치 eth0에 규칙이 적용
root: 아웃바운드 트래픽 스케줄러(출력 qdisc라고도 함)를 수정
netem: 네트워크 에뮬레이터를 사용하여 WAN 속성을 에뮬레이트
delay: 수정된 네트워크 속성
200ms: 200ms의 지연
참고: 이렇게 하면 출력 스케줄러에만 200ms의 지연이 추가됩니다. 만약 입력 및 출력 스케줄러에 모두 지연을 추가한다면, 총 지연은 400 ms가 되었을 것이며, 일반적으로 이러한 모든 트래픽 제어 규칙은 송신 스케줄러에만 적용됩니다.
물론 다들 아시겠지만, 현재 연결된 망에서의 네트워크 상황을, TC 명령어를 통해 시뮬레이션 하는 것이기 때문에 현재 어느 망에 연결되어있는지 확인 후 (ifconfig 명령어 이용), 그 망의 이름을 dev [망이름] 이라고 수정해주어야합니다 !
변경
1) 단순 변경
현재는 200ms 지연의 상황으로 가정했지만, 만약 400ms의 상황으로 바꾸고 싶다면 add 대신 change를 사용하면됩니다.
tc qdisc change dev eth0 root netem delay 200ms
2) 100ms 및 무작위 +-10ms 균일 분포의 지연
tc qdisc change dev eth0 root netem delay 100ms 10ms
3) 100ms 지연 및 상관 값 25%를 갖는 랜덤 10ms 균일 변동 (네트워크 지연이 완전히 랜덤하지 않기 때문에)
tc qdisc change dev eth0 root netem delay 100ms 10ms 25%
4) 100ms 및 랜덤 +-10ms 정규 분포의 지연(다른 분포 옵션은 파레토 및 파레토 정규 분포)
add dev eth0 root netem delay 100ms 20ms distribution normal
삭제
이를 삭제 하기 위한 명령어는 아래와 같습니다.
tc qdisc del dev eth0 root
확인
만약 잘 삭제 되었는지 확인하고 싶다면, 혹은 현재 설정된 네트워크 상황을 확인하고 싶다면 아래와 같이 입력하면 됩니다.
tc qdisc show dev eth0
Packet Loss and Packet Corruption
네트워크 지연 뿐만 아니라 패킷 손실과 같은 상황도 가정해볼 수 있습니다.
추가
tc qdisc add dev eth0 root netem loss 10%
변경
1) 패킷의 임의 오프셋에서 단일 비트 오류를 도입하여 패킷의 5 %를 손상
tc qdisc change dev eth0 root netem corrupt 5%
2) 전송된 패킷의 1%를 복제
tc qdisc change dev eth0 root netem duplicate 1%
삭제
이를 삭제 하기 위한 명령어는 위와 동일합니다.
tc qdisc del dev eth0 root
Bandwidth limit
송신 대역폭을 제한하려면 다음 명령을 사용할 수 있습니다.
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
tbf: 토큰 버퍼 필터를 사용하여 트래픽 속도를 조작
rate: 지속 최대 속도
burst: 최대 허용 버스트
latency: 지연 시간이 긴 패킷이 삭제됨
'논문 > QUIC' 카테고리의 다른 글
[Congestion control] -혼잡제어에 대한 소개 (2) | 2023.02.23 |
---|---|
TCP의 window based Flow Contorl (흐름제어) (0) | 2023.02.21 |
QUIC 프로토콜 이해 - 2장. 웹을 파헤치는 이유와 방법 (0) | 2022.12.19 |
QUIC 프로토콜 이해 - 1장. HTTP 역사와 HTTP2 (0) | 2022.12.01 |