Dual Token Bucket CB Policing với một tốc độ duy nhất cung cấp chức năng rất hữu ích. Sau một khoảng thời hoạt động thấp, một vụ bùng nổ dữ liệu có thể được xem là một trong hai trạng thái conform và exceed lưu lượng truy cập, mà không vi phạm hợp đồng lưu lượng. Bởi vì dữ liệu có xu hướng bùng phát, ý tưởng về một policer với khả năng bùng nổ tạo ra rất nhiều ý nghĩa.
Dual Token Bucket CB Policing cũng cung cấp một tính năng bùng nổ, nhưng với hai tốc độ, CB policer cho phép bạn thiết lập hai tốc độ khác nhau. Các gói tin có tốc độ thấp hơn tốc độ thông tin cam kết (CIR) conform với hợp đồng lưu lượng. Thứ hai duy trì một tốc độ Peak Information Rate (PIR) xác định một tốc độ lưu lượng truy cập trên CIR. Các gói tin vượt quá tốc độ thông tin cam kết(CIR) nhưng vẫn nhỏ hơn tộc độ thông tin đỉnh được gọi là vượt quá hợp đồng nhưng không vi phạm. Cuối cùng các gói tin vượt quá cả PIR được gọi là vi phạm hợp đồng.
Cơ chế policer bổ sung thẻ vào xô và cơ chế policer lấy thẻ ra khỏi xô trong quá trình quyết định đối với các gói tin conforms, exceeds hoặc violates hợp đồng lưu lượng.
74
Một vài sự khác biệt tồn tại trong quá trình bổ sung thẻ vào xô theo một tốc độ và three-color của policing phần trước. Đầu tiên, lưu ý rằng cả hai xô đầy khi có sự xuất hiện của một gói tin mà cần phải được khống chế. Tuy nhiên, xô PIR được nạp với các thẻ trực tiếp thay vì nạp đầy xô CIR rồi mới tràn xuống xô PIR. Điều này có nghĩa là xô PIR không phải dựa vào một giai đoạn hoạt động thấp hoặc không có để có được nhiều thẻ. Cũng lưu ý rằng khi bơm lại, bất kỳ thẻ đã tràn ra từ một trong hai xô đều bị loại bỏ.
Cách làm đầy lại của hai xô dựa trên hai tỉ lệ khác nhau là rất quan trọng. Ví dụ, hãy tưởng tượng bạn thiết lập một CIR 128 kbps (12 kilobyte / giây), và một PIR 252 kbps (32 kilobyte / giây). Nếu 0,1 giây trôi qua trước khi các gói tin đến tiếp theo, sau đó xô CIR sẽ được bổ sung với 1,2 KB thẻ (1/10 của 1 giây giá trị của thẻ, theo byte), trong khi xô PIR sẽ được bổ sung với 3,2 KB thẻ . Vì vậy có nhiều thẻ để sử dụng trong xô PIR hơn so với xô CIR.
Cách policer loại bỏ thẻ trong xô để quyết định xem gói tin nào là conforms, exceeds hoặc violates hợp đồng lưu lượng. Về logic thì nó hoạt động tương tự như single rate, hai xô policing được mô tả trước đó, như những gì xảy ra sau đây cho phù hợp với các gói:
Nếu số byte trong gói nhỏ hơn hoặc bằng (<=) số lượng thẻ trong xô CIR, các gói dữ liệu conform. CB Policing loại bỏ các thẻ từ CIR bằng số byte trong gói tin, và thực hiện các hành động cho các gói tin conform với hợp đồng. CB Policing cũng loại bỏ cùng một số thẻ từ xô PIR.
Nếu gói dữ liệu không conform, và số byte trong gói nhỏ hơn hoặc bằng (<=) số lượng thẻ trong xô PIR, các gói tin exceed. CB Policing loại bỏ các thẻ từ xô PIR bằng số byte trong gói tin, và thực hiện các hành động cho các gói tin vượt quá hợp đồng.
Nếu gói dữ liệu không conform cũng không exceed, nó vi phạm hợp đồng lưu lượng. CB Policing không loại bỏ các thẻ từ một trong hai thùng, và thực hiện các hành động cho các gói tin vi phạm hợp đồng.
Vi dụ: Hãy tưởng tượng rằng CB Policing đã được cấu hình như sau:
CIR 128 kbps (12 kilobytes/second)
Bc of 8000 bytes
PIR of 252 kbps (32K kilobytes/second)
Be of 12,000 bytes
Số lượng thẻ trong PIR lớn hơn gấp hai lần CIR. Bây giờ tưởng tượng rằng cả hai thùng có đầy đủ thẻ, và một loạt các gói tin đến cùng một thời điểm. Vì các gói tin đến cùng một thời điểm nên số lượng thẻ bổ xung vào xô là không đáng kể, giả sử là không có thẻ mới được thêm vào xô trong ví dụ này
Đối với 8.000 byte tiếp theo của gói tin, policer quyết định rằng các gói tin vượt quá hợp đồng, và policer loại bỏ thẻ từ xô PIR. Cuối cùng, sau khi phần còn lại của các gói dữ liệu được coi là vi phạm hợp đồng lưu lượng, ít nhất là cho đến khi một số thời gian trôi qua, cho phép nhiều thẻ mới được thêm vào hai xô.
75 Tóm tắt cơ chế CB Policing Feature Behavior of Single-Rate, Two-Color Behavior of Single- Rate, Three-Color Behavior of Dual- Rate, Three-Color Size of "first" bucket
Bc (bytes) Bc (bytes) Bc (bytes) Size of
"second" bucket
N/A Be (bytes) Be (bytes)
Refill of first bucket
Prorated portion of Bc based on packet arrival time
Prorated portion of Bc based on packet arrival time
Prorated portion of Bc based on packet arrival time
Refill of second bucket
N/A Filled by spilled Tokens from refill of first bucket
Prorated portion of Be based on packet arrival time Logic for "conform" action 1st bucket => packet size; decrement 1st bucket by packet size 1st bucket => packet size; decrement 1st
bucket by packet size
1st bucket => packet size; decrement both buckets by packet size
Logic to choose "exceed" action
All packets that do not conform
Doesn't conform, but 2nd bucket => packet size; decrement 2nd
bucket by packet size
Doesn't conform, but 2nd bucket => packet size; decrement 2nd
bucket by packet size Logic to
choose "violate" action
N/A All other packets All other packets