TCP 스트림의 혼잡 창을 관찰하고 싶기 때문에 veth 쌍과 브리지를 통해 서로 연결된 두 개의 노드(Linux 네임스페이스 사용)가 있습니다.
대역폭을 10mbps로 제한하기 위해 각 인터페이스에서 대기열 길이가 1000 패킷인 htb qdisc를 사용하고 있습니다.
그런 다음 iperf
그들 사이에 세션을 설정했습니다.
비트레이트가 qdisc가 형성하는 대역폭에 적응한다는 것을 알 수 있습니다.
그러나 pcap 파일과 대기열 삭제 카운터를 확인하면 결과적으로 삭제나 재전송이 전혀 없는 것으로 나타납니다.
두 번째 스트림을 시작하면 둘 다 5mbps의 공평한 공유를 얻습니다.
어떻게 되어가나요? 혼잡 제어가 신호를 수신하지 못하는 경우 TCP는 어떻게 트래픽 크기를 조정합니까? 내가 뭐 놓친 거 없니?
답변1
와, TCP 작은 대기열 기능이 실제로 작동하는 것을 보셨을 것 같습니다. 단일 시스템 내에서 TCP 소형 대기열은 qdisc 및 장치 버퍼에 대기 중인 패킷을 기본값인 128KB로 제한합니다.
해당 제한에 도달하면 TCP는 실제로 버퍼 오버플로 없이 조절됩니다.
이는 드롭을 얻으려면 3개의 VM(예:분리시뮬레이션 커널) 함께 - 송신자, "라우터" 및 수신자.
netem
대기 시간이나 제한된 대역폭을 시뮬레이션하는 데 사용할 때 별도의 컴퓨터/VM을 사용하는 이유가 있을 수도 있다는 것을 막연하게 기억합니다. 전반적으로 이것은 좋은 접근 방식인 것 같습니다.