数あるLink TE Attributeの中でAttribute Flagsにフォーカスして書いてみます。
MPLS TEのCSPF計算時に特定のリンクを考慮したくないときにexplicit route、
exclude route、あるいはreservable bandwidthをrequired bandwidthよりも小
さくすることなどの手法が考えられる。
これらの方法の他に、リンクにユーザ定義のFlag bitsを付与してCSPF計算に考
慮したくないリンクを定義付けすることができる。このようにリンクに付与する
ユーザ定義情報はAttribute Flagsといい、ビット長は32bit。
Attribute Flags
- Min: 0x0
- Max: 0xFFFFFFFF
- Def: 0x0
Attribute Flags設定コマンド
Router(config-if)# mpls traffic-eng attribute-flags 0x0101
各リンクのこのような定義されたAttribute Flags情報をOSPFあるいはISISといっ
たリンクステートプロトコルによって伝播される。
TEトンネルを形成するときにどのAttribute Flagsが付与されたリンクを経路と
して考慮するかを決定するためにAffinity Bitsを使用する。
Affinity Bitsも32bit長となっていて、さらに32bit長のmaskを組み合わせるこ
とで一部のAffinity Bitsだけを考慮することができる。リンクをCSPF計算に用
いるためにAttribute FlagsとAffinity Bitsのそれぞれの32bitが一致する必要
があるが、maskで0のビットはDon't Careとなり、両者が違う値でも大丈夫。
Affinity bits
- Min: 0x0
- Max: 0xFFFFFFFF
- Def: 0x0
mask
- Min: 0x0
- Max: 0xFFFFFFFF
- Def: 0x0000FFFF
Affinity bitsとmaskの設定コマンド
Router(config-if)# tunnel mpls traffic-eng affinity 0x0101 mask 0x303
上の例ですと、
0x0101を2進数に変換すると
0100000001
0x303を2進数に変換すると
1100000011
ということは、
0100000001
1100000011
----------
01******01
*はDon't Care bitである。
この時リンクのAttribute Flagsの第1,2,9,10ビットがそれぞれ1,0,1,0であれば
CSPF計算の対象となることができる。
例えば、次のような3つのAttribute Flagsがあるとする。
a. 0x3A1
b. 0x1E9
c. 0x114
このうち、bのAttribute FlagsだけがCSPF計算に使える。
なぜかというと、
0x3A1 -> 1110100001 -> 11******01
第10bit目が1なので、Affinityの10bit目とは違うのでCSPF計算に使えない
0x3A1 -> 0111101001 -> 01******01
Don't Care bit除いて、全bitがAffinityと同じなのでCSPF計算に使える
0x3A1 -> 0100010100 -> 01******00
第1bit目が0なので、Affinityの1bit目とは違うのでCSPF計算に使えない
ラボの進捗 148Labs done
PR