Netem - 특정 호스트와 주고받는 패킷을 지연하는 방법

Netem - 특정 호스트와 주고받는 패킷을 지연하는 방법

호스트 A와 호스트 가 있다고 가정합니다 B. 우리는 이를 사용하여 netem특정 지연을 두고 B패킷을 보내는 시나리오를 시뮬레이션하려고 합니다. 두 가지 경우에 이를 수행하는 방법: (1) 호스트에서 실행 중 (2) 호스트에서 실행 중. A
netem
netemA
netem'B

어떤 아이디어가 있나요?

답변1

들어오고 나가는 패킷에 지연이 발생하는 방법에 대한 몇 가지 유용한 소스가 있습니다.이 NetEm 위키 페이지정보량이 많기 때문에. 나가는 패킷 지연에 대한 자세한 내용은 "1.1 WAN 지연 시뮬레이션" 및 "2.3 들어오는 패킷에 대해 netem을 사용하는 방법" 섹션을 참조하세요. 나는 이것을 내 설정에서 시도했지만 문제가 없었습니다.

기본 지연:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
21.800

클라이언트에만 100ms 지연이 있습니다(B):

# tc qdisc add dev $my_interface root netem delay 100ms

결과:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
102184.355

클라이언트 측에서만 100ms 지연이 있습니다(A).

먼저 중간 기능 블록 의사 장치 IFB를 만듭니다(이더넷 브리지도 작동함).

# modprobe ifb
# ip link set dev ifb0 up

다음으로, 들어오는 모든 트래픽을 먼저 IFB 장치를 통과하도록 리디렉션합니다.

# tc qdisc add dev $my_interface ingress
# tc filter add dev $my_interface parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0

이제 my_interface로 들어오는 트래픽인 IFB 장치로 나가는 트래픽에 대한 지연을 추가하기만 하면 됩니다.

# tc qdisc add dev ifb0 root netem delay 100ms

결과:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
154442.238

이 두 결과를 다음에 적용하십시오.

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
333803.282

보시다시피 지연은 추가된 100ms(또는 이전 예에서는 200ms) + 기본 지연을 초과합니다. NetEm은 파이프라인의 특정 지점에서 지연을 유발하므로 지연될 경우 예상보다 지연 시간이 길어지면 부작용이 발생할 수 있습니다.

관련 정보