TC 속도 제한으로 패킷 손실을 줄입니다.

TC 속도 제한으로 패킷 손실을 줄입니다.

이 tc 명령을 사용하여 인터페이스의 업로드 속도를 제한합니다.

tc qdisc add dev eth1 root tbf rate 2mbit burst 10kb latency 70ms peakrate 2.4mbit minburst 1540

그러나 심각한 패킷 손실이 발생합니다. WAN(WAN)을 통해 들어오는 데이터가 eth07GB인 경우 속도 제한 인터페이스의 데이터는 6.2GB가 됩니다 eth1. 패킷 손실을 줄일 수 있는 다른 속도 제한 솔루션이 있습니까?

답변1

제가 올바르게 이해했다면 로컬 연결 인터페이스에서 송신 트래픽을 제한하여 ISP로부터의 수신 트래픽을 제한하려고 하시는 것입니다.

손실된 패킷은 TCP가 정체를 감지하는 방법 중 하나이고 라우터가 정체 신호를 보내는 방법 중 하나이기 때문에 나타나는 패킷 손실은 아마도 예상된 것입니다. 이는 또한 라우터가 TCP 혼잡 회피를 위반하지 않고 tc를 통해 제공한 제한을 존중할 수 있는 유일한 합리적인 방법이기도 합니다. (tc에는 RED를 사용할 수 있는 기능이 있지만 그것이 존재한다는 것 외에는 알려줄 만큼 지식이 부족합니다.)

인바운드 인터페이스에서 송신 트래픽을 조정하는 대신 tc를 확인할 수 있습니다.수신 대기열 규율, ISP 연결 인터페이스와 TC 필터에 연결하여 수신 트래픽을 감시합니다. 이것이 라우터가 정체 신호를 보내는 유일한 방법일 수 있기 때문에 패킷 손실은 여전히 ​​발생합니다.

예를 보려면 LARTC 레시피 항목을 참조하세요."궁극의 교통 규제 기관", 이는 tc의 수신 qdisc를 사용합니다.

답변2

이는 tx 큐의 크기에 따라 다릅니다. 엄격하게 제한하면 TC는 패킷을 큐에 넣지 않고 삭제할 수만 있습니다. 불행히도 저는 unix tc가 아닌 cisco ios에서만 이 작업을 수행하는 방법을 알고 있습니다.

답변3

이 문제를 해결하려면 대기열 크기를 늘릴 수 있습니다. (jdborg가 말했듯이) 죄송합니다. 직접 댓글을 달 수 있을 만큼 높은 평가를 받지 못했습니다.

이것은 예이다

이 명령으로 원하지 않는 패킷 손실이 발생하는 경우 sudo tc qdisc add dev eno1 root tbf rate 1mbit burst 32kbit latency 400ms

400ms지연을 에서 로 변경하여 버퍼(큐) 크기를 늘리면 문제를 해결할 수 있습니다.10000ms

이제 명령은 다음과 같습니다sudo tc qdisc add dev eno1 root tbf rate 1mbit burst 32kbit latency 10000ms

간단히 말해서:위와 같이 대기열 크기를 늘리면 패킷 손실 문제가 해결됩니다. 얼마나 더 추가해야 하는지가 문제일 뿐입니다.

내 연구

단 400ms의 대기열로 10Mbps iPerf 테스트를 수행했는데 그 결과 90%의 UDP 패킷 손실이 발생했습니다. 대기열을 10000ms로 설정한 상태에서 iPerf 테스트를 다시 실행하면 패킷 손실이 0%로 나타났습니다.

iPerf 테스트를 설정하는 방법

iPerf 테스트는 PC#1을 iPerf 서버로, PC#2를 iPerf 클라이언트로 수행했습니다. PC#2의 아웃바운드 연결은 tc다음 명령을 통해 제한됩니다.여기에 이미지 설명을 입력하세요.

관련 정보