derobert 's를 보완하는 또 다른 대답.
첫째, 최신 인텔 CPU에서 매뉴얼이 오래되었습니다. 최신 CPU에는 고해상도 타이머가 있으며 최신 Linux는 틱이 적습니다. 문자 그대로 타이머 틱이 없음을 의미합니다. 따라서 버킷을 하나의 타이머에 넣을 수있을만큼 큰 버킷을 만드는 모든 의견은 관련이 없습니다. 실제로 버킷 비유는 사용자가 타이머 세분성 및 전송 속도 간의 상호 작용을 이해하는 데 도움을주기위한 것입니다. Linux는 최신 하드웨어에 나노초 타이머를 가지고 있으므로 유용성을 잃습니다.
TBF의 경우 버스트 매개 변수는 속도 제한 ( rate로 지정 )이 시작 되기 전에 무제한 속도로 전송 될 수있는 바이트 수 입니다. 속도 제한이 다시 버스트하는 유일한 방법으로 시작되면 전송을 해당 속도 미만으로 제한하는 것입니다. .
예를 들어, tbf 버스트 매개 변수가 10K 바이트이고 tbf 속도 매개 변수가 2K 바이트 / 초이고 현재 속도가 제한되어 있습니다 (즉, 버스트가 소진되어 2kbps로 전송하는 것으로 제한됨). 10 초 동안 1Kbps로 전송하는 속도를 자발적으로 줄이면 10K 바이트 버스트 허용량이 다시 누적됩니다 (= (2000 [bytes / sec]-1000 [bytes / sec]) * 10 sec). tbf를 사용하면 버스트 매개 변수 보다 더 많이 누적 할 수 없으므로 1kbps 아래로 10 초 이상 유지해도 효과가 없습니다 .
완전히 지출을 중단하면 버스트 수당을 다시 5 초 (= 100000 [바이트] / 2000 [바이트 / 초])로 다시 얻게됩니다.
버스트 허용 한도를 다시 사용하지 않아도 누적 된만큼 사용할 수 있습니다.
이것을 보는 또 다른 방법은 다음과 같습니다. 버스트 바이트를 무제한 속도 로 보낼 수 있으며 , 그 후에 장기 평균 속도가 rate를 초과 할 수 없습니다 . 그러나 장기 평균이므로 속도 이하 로 떨어지면 최고 속도로 전송하여 따라 잡을 수 있지만 최대 버스트 바이트 동안 만 전송이 가능합니다. 당신이 따라 잡을 수 없습니다).
다른 주름은 TBF 에 이러한 속도 제한 기 중 두 개가 있으며 트래픽이 두 가지를 모두 통과해야한다는 것입니다. 두 번째 매개 변수에서는 버스트 매개 변수를 mtu 라고 하고 속도를 peakrate 라고 합니다. 첫 번째 버스트가 버스트를 보낼 수있는 속도를 제한하기 위해이 두 번째 것을 사용해야합니다. 이 두 번째 것을 사용하는 것은 선택 사항이며, 사용하지 않으면 버스트가 장치 속도로 전송됩니다.
마지막으로, tbf에는 limit 매개 변수가 있습니다. 프로그램이 지속적으로 rate 보다 빠르게 전송하면 패킷이 대기열에 쌓입니다. 커널 메모리는 무한하지 않으므로 limit 은 커널이 패킷을 삭제하기 전에 몇 바이트를 만들 수 있는지를 말합니다.
tbf
Linux 트래픽 제어 프레임 워크의 일부입니다.man tbf
또는man tc-tbf
문서를 가지고해야한다.