저는 현재 TC를 사용하여 실제 네트워크 상황을 시뮬레이션하는 것을 목표로 Quic 및 TCP 프로토콜을 실험하고 있습니다. 그러나 대역폭을 32mbit로 설정하려고 할 때 손실 0.1%, 대기 시간 20ms, 지터 1ms로 문제가 발생했습니다. TCP 성능은 예상했던 대로였지만 Quic은 TCP의 3.6MB/s에 비해 약 250KB/s로 상당히 느렸습니다.
더 자세히 조사한 결과 지터를 제거하고 0ms로 설정하면 Quic이 제대로 작동하여 TCP와 유사한 성능을 발휘할 수 있다는 것을 발견했습니다. 또한 속도 제한을 제거하면서 지터를 1ms로 재설정하면 정상적인 동작이 발생합니다. 그러나 Quic은 지터와 속도 제한이 동시에 설정된 경우 비정상적인 동작을 나타냅니다.
지연 및 손실 수정도 시도했지만 예상대로 작동합니다.
나는 사용하고있다빨리 가세요Quick을 구현합니다. TC 구성 샘플 코드는 다음과 같습니다.
tc qdisc add dev "$interface" root handle 1: htb default 10
tc class add dev "$interface" parent 1: classid 1:1 htb rate 32mbit ceil 32mbit
tc class add dev "$interface" parent 1:1 classid 1:10 htb rate 32mbit ceil 32mbit
tc class add dev "$interface" parent 1:1 classid 1:20 htb rate 32mbit ceil 32mbit
tc filter add dev "$interface" parent 1: protocol ip prio 16 u32 match ip protocol 17 0xff flowid 1:10
tc filter add dev "$interface" parent 1: protocol ip prio 16 u32 match ip protocol 6 0xff flowid 1:20
tc qdisc add dev "$interface" parent 1:10 handle 100: netem delay 20ms 1ms loss 0.2%
tc qdisc add dev "$interface" parent 1:20 handle 200: netem delay 20ms 1ms loss 0.2%
이 동작이 Quic 구현의 패킷 순서에 있는 지터 및 버그와 관련이 있는지 확실하지 않습니다. 대역폭 제한이 제거되면 문제가 해결된 것처럼 보였기 때문입니다. 어떤 통찰력이나 아이디어라도 대단히 감사하겠습니다. 감사해요.