1

동일한 호스트에서 UDP를 통해 통신하는 두 개의 앱이 있으며 다양한 지연 (지터)을 사용하지만 순서가 잘못된 패킷은 보내지 않습니다. 루프백 인터페이스에 대한이 규칙이 있습니다.netem 루프백 인터페이스 패킷을 재정렬

sudo tc qdisc add dev lo root handle 1: netem delay 10ms 100ms 

이것은 지터를 성공적으로 생성하는 것으로 보입니다. 그러나, 순서 패킷이 있습니다. 기본적으로 나는 수신기 측에서 패킷을 보낸 사람으로부터 보낸 순서대로 패킷을 수신하고 싶습니다. 즉, 지터가있는 다양한 지연이 있습니다.

몇 가지 기본 reorder 명령을 시도해 보았습니다. reorder 100 %를 사용하면 재주문을 수행하지만이 경우에는 지터가 없습니다. reorder 명령을 100 % 미만으로 사용하면 순서가 잘못된 패킷이 있습니다.

sudo tc qdisc add dev lo parent 1:1 pfifo limit 1000 

을하지만 여전히 주문 패킷 나가 :

은 다음 명령을 실행하면, 패킷 순서에 머물 것이라고 here을 말한다. 어떤 도움이라도 대단히 감사합니다. 공식 문서에 따르면

+0

btw, 어떻게 동일한 호스트에서 에뮬레이션을 설정 했습니까? ('lo'와'handle 1 '은 무엇이고 어떻게 추가 할 수 있습니까?) 나는 똑같은 일을하려고합니다. – mucaho

답변

0

(§1)-delay section이 코드
# tc qdisc change dev eth0 root netem delay 100ms 10ms.

는 ... 추가 지연이 코드에서이 100ms ± 10m

로 원인 두 번째 ms 명령 줄 인수가 첫 번째 인수보다 큽니다.


는 (0.2) 또한 packet re-ordering section 코드


# tc qdisc change dev eth0 root netem delay 100ms 75ms

하에 ... 약간의 재정렬을 야기 할 것이다. 첫 번째 패킷이 100ms (100ms base - 0ms jitter)의 랜덤 지연을 얻고 두 번째 패킷이 1ms 후에 전송되고 50ms (100ms base - 50ms jitter)의 지연을 얻으면; 두 번째 패킷이 먼저 전송됩니다.


추측 : (테스트하지 않았다)
스위치
에서 마지막 두 개의 인수의 위치 sudo tc qdisc add dev lo root handle 1: netem delay 10ms 100ms

sudo tc qdisc add dev lo root handle 1: netem delay 100ms 10ms

비록 에 따라 (§에 2) 아직도 패킷이 재정렬 될 수 있습니다. 요 20ms 미만의 패킷을 연속적으로 보내십시오. 첫 번째 패킷은 100 + 10 = 110ms 지연을 가져오고, 두 번째 패킷은 1ms 후에 100-10 = 90ms 지연을 가져옵니다. 두 번째 패킷은 첫 번째 패킷보다 먼저 도착합니다.

+0

답변을 주셔서 감사합니다 - netem으로 패킷 재정렬을 피할 수없는 것 같습니다. 지터가 자주 발생하지만 패킷 순서를 변경하지 않는 실제 시나리오를 모방하려고했습니다. – Volverine