여기서 다루는 내용을 계산해 봅시다. CAR은 기본적으로 이전 버전의 IOS 정책이므로이 모든 개념이 두 가지 모두에 적용됩니다.
Committed Information Rate (CIR) = 5,000,000 (5Mbps)
Burst Commit Bucket (Bc) = 937,500
Burst Excess Bucket (Be) = 1,875,000
Time Interval (Tc) = Bc / CIR = 0.1875 s = 187.5 ms
흐름을 제한하려는 속도는 5Mbps입니다. 커밋 버킷은 937,500 바이트입니다. 버스트 버킷은 1,875,000 바이트입니다. 버킷은 187.5ms마다 리필됩니다.
언급했듯이 IOS는 버킷 메커니즘을 사용하여 통과 할 수있는 트래픽 양을 제한합니다. 임의의 시간 동안 인터페이스 대역폭의 X %로 트래픽을 스무딩하지 않습니다! 대신, 지불 할 토큰이있는 한 인터페이스의 대역폭에 완전히 액세스 할 수 있습니다.
또한 이것이 정책 정책이므로 RED / WRED가 작동하지 않습니다. RED는 관리 대기열이있는 경우에만 발생합니다. 폴리싱에는 버퍼링 / 큐잉이 없으며 쉐이핑에만 있습니다.
Commit Bucket (Bc)을 먼저 다루겠습니다. 현재 초과 버킷 (Be)이 없다고 가정합니다.
* 커밋 버킷 만 (2 색 경찰관) *
CIR 내에서만 정확하게 보낼 수있는 매우 엄격한 경찰입니다. 파열하지 않습니다. 버킷은 하나뿐입니다 (Bc). 트래픽에 대한 두 가지 "색상"이 있습니다 ( 적합 및 초과) .
Time = 0 ms-버킷이 937,500 바이트 상당의 토큰으로 가득 차기 시작합니다. 인터페이스를 통해 7,500 바이트를 전송한다고 가정 해 봅시다. 이제 IOS는 버킷을 7,500 바이트 씩 줄이고 버킷에는 930,000 바이트의 토큰이 있습니다. 전송 된 트래픽은 "적합한"것으로 간주되고 "적합한 행동"이 적용됩니다.
시간 = 187.5ms- 이제 Tc를 누르고 Bc 버킷을 다시 채 웁니다. 937,500 바이트 상당의 토큰이 추가되었습니다. 여분의 토큰이 쏟아져 나옵니다.
시간 = 190ms-커밋 버킷에 937,500 개의 토큰이 있습니다. 2,000,000 바이트의 트래픽이 수신됩니다. 버킷에 토큰이 있으면 처음 937,500 바이트가 정상적으로 전송됩니다. 나머지 트래픽은 "초과"로 간주되며 "초과 동작"에 따라 처리됩니다. 다시 말해, 정책에는 버퍼링이 없으며 (셰이핑이라고 함) 전송, 발언 및 전송 또는 삭제합니다.
시간 = 375ms- Tc를 다시 누르면 Bc 버킷에 937,500 개의 토큰이 채워집니다.
* 초과 버킷이 포함 된 커밋 버킷 (3 색 경찰관) *
필요에 따라 초과 버킷 (Be)을 추가 할 수 있습니다. 이를 통해 트래픽이 일시적으로 Bc 버킷을 초과 할 수 있습니다. 전체 CIR은 동일하게 유지되어야합니다. 이 세 가지 "색상"경찰관 : 준수, 초과 및 위반 .
Time = 0 ms-두 버킷 (Bc 및 Be)이 가득 차기 시작합니다. Bc에는 937,500 개의 토큰이 있고 Be에는 1,875,000 개의 토큰이 있습니다.
시간 = 50ms- 2,000,000 바이트의 트래픽이 도착합니다. 라우터는 먼저 Bc 버킷 토큰을 줄입니다. Bc 버킷을 0으로 줄입니다. Bc에서 다루는 937,500 바이트의 트래픽은 "적합한"것으로 간주되며 "적합한 행동"이 적용됩니다.
아직 토큰이없는 1,062,500 바이트의 트래픽이 남습니다. 이제 라우터는 Be 버킷에 들어가고 나머지 트래픽을 커버하기 위해 1,062,500 개의 토큰을 뺍니다. 이 바이트는 "초과"로 간주되며 "초과 동작"이 적용됩니다. 귀하의 예에서, 트래픽은 삭제되지만 잠재적으로이를 말하거나 전송할 수 있습니다.
집에서 점수를 유지하고 있다면, Bc는 이제 토큰이없고, Be는 812,500 개의 토큰을 갖습니다.
시간 = 75ms- 이제 라우터는 1,200,000 바이트의 트래픽을 더받습니다. Bc 버킷이 비어 있으므로 아무런 도움이 없습니다. Be 버킷이 도움이 될 수 있으므로 토큰으로 처음 812,500 바이트의 트래픽을 처리하며 비어 있습니다. 이 트래픽은 "초과"로 간주되며 "초과 동작"이 적용됩니다.
이제 버킷이 건조되었지만 처리 할 387,500 바이트가 남아 있습니다. 이 트래픽은 "위반"으로 간주되며 항상 CAR을 사용하여 삭제됩니다 (MQC 및 "violate-action"을 사용하여 police 명령을 사용하여 다른 작업을 수행 할 수 있음).
Time = 187.5 ms- 이제 버킷을 채울 시간 인 첫 번째 Tc 간격에 도달합니다. 요점은 Bc 가치의 토큰 만 리필한다는 것입니다! Bc 버킷은 먼저 937,500으로 채워집니다. Be 버킷은 비어 있습니다.
시간 = 375ms- 조용하고 다음 Tc 간격으로 만듭니다. Bc 가치의 토큰이 Bc 버킷에 추가됩니다. Bc 버킷이 이미 가득 찼기 때문에 초과 토큰은 손실되지 않으며 대신 Be 버킷으로 "흘려"넘겨집니다. 이제 Bc 버킷에는 937,500 개의 토큰이 가득 차 있으며 Be 버킷에는 부분적으로 937,500 개의 토큰이 가득합니다.
Time = 562.5 ms- 여전히 조용하고 다음 Tc에 있습니다. Bc 가치의 토큰이 Bc 버킷에 추가되어 이미 가득 찼습니다. 모든 것이 Be 버킷 (이미 937,500 개의 토큰이 있음)으로 흘러 들어갑니다. Be는 최대 1,875,000 개의 토큰을 채 웁니다.
* 최종 참고 사항 *
구성에서 Be 버킷을 사용하지 않습니다. Bc 버킷 만 사용하여 속도 제한 / 정책 중입니다. 데이터를 전송하는 경찰관 / 셰이퍼가 동일하게 구성되지 않고 Tc와 동기화되지 않은 경우 의도하지 않은 부작용이 발생할 수 있습니다.
CAR / rate-limit가 매우 오래되어 더 이상 사용되지 않습니다. 더 많은 정보와 옵션을 제공하므로 MQC 및 최신 QoS로 전환하여이를 구현하십시오.
위의 직렬화 지연 (라인에서 데이터를 전송하는 데 걸리는 시간)을 완전히 무시하고 실제 시나리오에서 수학이 제대로 작동하지 않을 것이라고 확신합니다. 그러나 사용중인 정확한 수에 관계없이 개념은 확실합니다.
* MQC 예 *
policy-map PM-FA0/0-IN
class class-default
police cir 5000000 bc 937500 be 1875000
!
interface Fa0/0
service-policy input PM-FA0/0-IN
!
* 출처 *