はじめに
IOS-XR 64bit の動作する NCS540, NCS560, NCS5500 シリーズルータでは、トラフィックを処理する際の
shaping のレート計算時に L1 overhead (IFG/プリアンブル/SFD) の 20byte を含め、計算を行います。
RP/0/RP0/CPU0:NCS540(config-pmap-c)#do sh qos int gigabitEthernet 0/0/0/7 output
Tue Mar 3 07:08:59.867 JST
NOTE:- Configured values are displayed within parentheses
Interface GigabitEthernet0/0/0/7 ifh 0x138 -- output policy
NPU Id: 0
Total number of classes: 1
Interface Bandwidth: 1000000 kbps
Policy Name: shoriuch
VOQ Base: 1048
Accounting Type: Layer1 (Include Layer 1 encapsulation and above)
------------------------------------------------------------------------------
Level1 Class = class-default
Egressq Queue ID = 1048 (Default LP queue)
Queue Max. BW. = 100830 kbps (100 mbits/sec)
Queue Min. BW. = 0 kbps (default)
Inverse Weight / Weight = 1 / (BWR not configured)
Guaranteed service rate = 100000 kbps
TailDrop Threshold = 12517376 bytes / 1001 ms (1000 ms)
WRED not configured for this class
-----
Modular QoS Configuration Guide for Cisco NCS 560 Series Routers, Cisco IOS XR Release 6.6.x
https://www.cisco.com/c/en/us/td/docs/iosxr/ncs560/qos/66x/b-qos-cg-66x-ncs560/cg_65_qos_congestion_management.html#concept_5AE37FD77CD745E7B3926C6459E71786
The traffic shaping performed on outgoing interfaces is done at the Layer 1 level and includes the Layer 1 header in the rate calculation.
------
そのため、試験時のテスタでのレート設定や、実環境での設計において、該当の機器が受信するトラフィックのレートが、L1 overhead を含めた L1 rate であるのか、それらを除いた L2 rate であるのかを考慮する必要があります。
特に small packet での確認において、そのオーバーヘッドの有無から、想定外に精度が悪く見える可能性があります。
ただし、NCS540, NCS560, NCS5500 シリーズルータでの shaping 精度は +-5% であることに留意する必要があります。
注意点
例えば以下の例においては、Te 0/0/0/1 で 100Mbps の shaping を設定した上で 64 byte packet で十分なトラフィックを印加した場合
show policy-map interface でレートを確認すると、約 79Mbps に見えています。
これは show policy-map interface のレート計算は L2 rate で計算されているからとなり
実際には L1 rate で確認を行うと、約 100 Mbps で正常に shaping されている例となります。
shaping のケースでは、show policy-map interface のレート情報を直接参考にすることはできません。
interface TenGigE0/0/0/1
service-policy output TEST
policy-map TEST
class out-class5
shape average 100 mbps
!
class class-default
shape average 10 mbps
!
end-policy-map
RP/0/RP0/CPU0:NCS560#show policy-map interface tenGigE 0/0/0/1 output
Tue Mar 3 10:33:59.476 JST
TenGigE0/0/0/1 output: TEST
Class out-class5
Classification statistics (packets/bytes) (rate - kbps)
Matched : 6104664878/402907881948 7670950
Transmitted : 64278214/4242362124 78918 <<< 実際には L1 100Mbps で shaping されている
Total Dropped : 6040386664/398665519824 7592032
Queueing statistics
Queue ID : 1165
Taildropped(packets/bytes) : 6040386664/398665519824
Class class-default
Classification statistics (packets/bytes) (rate - kbps)
Matched : 4/448 0
Transmitted : 4/448 0
Total Dropped : 0/0 0
Queueing statistics
Queue ID : 1160
Taildropped(packets/bytes) : 0/0
Policy Bag Stats time: 1583199239612 [Local Time: 03/03/20 10:33:59.612]
ワークアラウンド
service-policy の設定時に "account user-defined" として、ユーザオーバーヘッドの指定を行うことができます。
この例では 20byte を指定しているため、L1 overhead 分を shaping 計算から除外しますので
L2 rate で shaping の計算を行うようにできます。
interface TenGigE0/0/0/1
service-policy output TEST account user-defined 20
RP/0/RP0/CPU0:NCS560(config-if)# service-policy output TEST account user-defined ?
<-63,+63> Overhead accounting value