このページの内容
BIERフォワーディング
概要
BIER転送は、BIERヘッダーのビット文字列に基づいています。ビット文字列に設定された各ビットは、マルチキャストパケットを受信すべきBFER(BIER Forwarding Egress Router)を表しています。ビットは、各BFERまたはBFIRに割り当てられた一意のBFR-IDからマッピングされます。BFIRでもBFERでもないトランジットBIER転送ルーター(BFR)にはBFR-IDが割り当てられていないことに注意してください。
BFR は、着信 BIER パケットのビット文字列内のセット ビットのインデックスを使用して、BIER 転送テーブル(BIFT)を検索します。ビット文字列に設定された各ビットは特定のBFRに対応するため、転送BFRはパケットの転送先ネイバーを決定できます。
BIFTは、トポロジーなどのIGPルーティングアンダーレイで各BFERがどのように到達するかを計算することによって作成されます。トポロジーに複数のBIERサブドメインを含めることができますが、サブドメインは1つのトポロジーにのみ関連付けられます。BFRは複数のサブドメインに属しており、サブドメインごとに異なるBFR-IDを持つ場合があります。
BFERの数がBSLより大きい場合、BFERのセットごとに1つずつ、複数のコピーが送信されます。異なるコピーの同じビットが異なるBFER用であるため、各コピー(異なるBFERのセットの場合)は、異なるコピーの同じビットが異なるBFER用であるため、転送に異なるBIFTを使用します(たとえば、BitStringLengthが256ビットであることを考えると、copy-1のビット-1はBFER 1用ですが、copy-2ではBFER 257用です)。
MPLS ラベルは、MPLS データ プレーン内の BIER ヘッダーの先頭に挿入され、BIER ヘッダーが続こうとしていることを示します。
このBIERラベルは、パケットの転送に使用するBIFTも示します。
ルーティングプロトコル拡張は、BIERラベルなどのカプセル化情報を信号化し、BFRがサポートするすべての<サブドメイン、BitStringLength、セット>タプルのBIFTを計算するために使用されます。BIER情報は、BFRプレフィックス、つまりループバックアドレスのルートアドバタイズメントに添付されます。
<サブドメインのBitStringLength>タプルに対してBFERプレフィックスへのルートが計算されると、キーが(BFR-ID % BitStringLength)で、ネクストホップ情報が<ネクストホップネイバー、<サブドメインのネイバーBIERラベル、BitStringLength、set>ネイバーのF-BM>であるエントリが追加されます。ネイバーのF-BMは、このネイバーが到達したこのセット内のすべてのBFERのビットの論理ORです。
この概念を説明するために、A、B、C、D、E、Fの6つのBFRで構成されるシンプルなネットワークトポロジーの例を見てみましょう。
このうち、ルーターA、D、E、Fはエッジルーター、すなわちBFERまたはBFIRのいずれかとして機能します。それぞれに固有のBFR-IDが割り当てられています:Dに1、Fに2、Eに3、Aに4。BSL(bitstringlength)は4ビットに設定されており、SI(Set-ID)は現在0です。すべての BFRS はサブドメイン 32 に属します。
これらの各BFR-IDは、4ビットビット文字列のビットにマッピングされます。これは、以下の割り当てに変換されます。
ルーターD:0:0001
ルーターF:0:0010
ルーターE:0:0100
ルーターA:0:1000
残りのBFR(BおよびC)はトランジットBFRであり、BFR-IDは割り当てられていません。
BFR A がビット文字列 0111 の BIER パケットを BFR B に送信すると、BFR B はパケットが BFR E、F、D 向けであると判断します。BFR B は、同じパケットの 2 つのコピーを BFR E に、もう 1 つは BFR C に送信します。BFR C へのコピーは、BFR D および F に対応する更新されたビット文字列 0011 とともに送信されます。パケットがBFR Cに到達すると、パケットのコピー1つをBFR Dに送信し、もう1つをBFR Fに送信することが決定されます。
この転送決定は、BFR B の BIFT に基づいています。
BIFT に、BFR A、D、E、F に到達できる BFR ネイバーがリストされていることを確認してください。F-BM は BFR ネイバーのプロパティであり、そのネイバーを介して到達可能なすべての BFER を表します。たとえば、BFR ネイバー C の F-BM は 0011 であり、これは BFR C が BFER D と F をカバーできることを意味します。ルーター D の F-BM は 0001、BFR F の F-BM は 0010 です。BFR C の F-BM は、このネイバー (0011) が到達したこのセット内のすべての BFER のビットの論理的な「OR」です。
BIFTルートルックアップ
上記の同じ例を使用して、BFR A がビット文字列 0111 の BIER パケットを BFR B に送信すると、BFR B は、受信ビット文字列(一番右のビット)に設定されている最低ビットのインデックスを使用して BIFT を検索します。ルーティングテーブルの最初のエントリー(インデックス1)はルックアップに一致するため、BIERパケットはF-BMが0011のBFRネイバーCに転送されるべきであることを意味します。BFR B は、受信ビット文字列と BFR C の F-BM の論理「AND」である更新されたビット文字列 0011 を使用してコピーを BFR C に送信します。
次に、BFR B は BFR C の F-BM を使用して受信ビット文字列の一部のビットをクリアし、結果のビット文字列の最低セット ビットのインデックスを使用して BIFT を検索します。テーブルルックアップの結果、F-BM 0100を持つBFRネイバーEが得られます。BFR B は、受信ビット文字列と BFR ネイバー E の F-BM の論理的な「AND」演算である、更新されたビット文字列 0100 を使用してコピーを BFR E に送信します。
このプロセスは、受信ビット文字列がすべてゼロになるまで続きます。
MVPNでのBIER転送
MVPNトンネルを通過するパケットのフローを例に挙げましょう。
PE1(イングレス):
show mvpn instance vrf1 コマンドを発行して、プロバイダートンネルvrf1情報を表示します。
user@routerPE1> show mvpn instance vrf1
MVPN instance:
Instance : vrf1
MVPN Mode : SPT-ONLY
Sender-Based RPF: Disabled. Reason: Not enabled by configuration.
Hot Root Standby: Disabled. Reason: Not enabled by configuration.
Provider tunnel: I-P-tnl:BIER: subdomain-id 10 bfr-id 1 label 990001
Neighbor Inclusive Provider Tunnel Label-In St Segment
10.2.2.2 BIER: subdomain-id 10 bfr-id 2 bier-prefix 10.2.2.2 990001
10.3.3.3 BIER: subdomain-id 10 bfr-id 3 bier-prefix 10.3.3.3 990001
10.4.4.4
C-mcast IPv4 (S:G) Provider Tunnel Label-In St FwdNh Segment
172.11.21.21/32:232.252.1.1/32 BIER: subdomain-id 10 bfr-id 1 label 990001 RM M-8169
172.11.21.21/32:232.252.1.2/32 BIER: subdomain-id 10 bfr-id 1 label 990001 RM M-8169
172.11.21.21/32:232.252.2.1/32 BIER: subdomain-id 10 bfr-id 1 label 990001 RM M-8169
172.11.21.21/32:232.252.2.2/32 BIER: subdomain-id 10 bfr-id 1 label 990001 RM M-8169
show multicast route extensive instance vrf1 display-tunnel-nameとshow mvpn instance vrf1 display-tunnel-nameを発行して、BIER トンネルの名前を表示します。
包括的トンネルには、BFR-ID 2の10.2.2.2とBFR-ID 3の10.3.3.3の2つのMVPNネイバーがあります。そのため、ビット2と3が設定されます。ネイバー10.4.4.4はトンネルをアドバタイズしていなかったため、考慮されません。
ラベル 990001 は、 set routing-instances routing-instance-name vrf-table-label static label ステートメントを発行することで静的に設定されます。
FBMでは、256バイトのbitstringlengthに対して8つの値が存在し、":"で区切り、各値は32のBFIR/BFERを表します。
show multicast route instance vrf1 extensiveコマンドを発行して、マルチキャストルート情報を表示します。
user@routerPE1> show multicast route instance vrf1 extensive Instance: vrf1 Family: INET Group: 232.252.1.1 Source: 172.11.21.21/32 Upstream interface: et-0/0/10.1 Downstream interface list: Push 990001, BS:0:0:0:0:0:0:0:00000006, label 16 Number of outgoing interfaces: 1 Session description: Source specific multicast Statistics: 0 kBps, 1 pps, 44 packets Next-hop ID: 8169 Upstream protocol: MVPN Route state: Active Forwarding state: Forwarding Cache lifetime/timeout: forever Wrong incoming interface notifications: 0 Uptime: 01:26:43 ......trimmed
VRFに到着する(172.11.21.21、232.252.1.1)パケットは、上記のルートに一致します。ラベル990001が最初に適用されるため、エグレスPEはBIERヘッダーを削除したときに対応するVRFを見つけることができます。次に、ビット文字列 0:0:0:0:0:0:0:0:0:00000006 と BIER ラベル 16 を持つ BIER ヘッダーが課され、これはプロバイダー トンネル のサブドメインに対してこの BFIR によってアドバタイズされます。その結果は、別のBFRから受信したBIERパケットであるかのように扱われます。
ラベル16は、ローカルのmpls.0テーブルで検索されます。 show route table mpls.0 protocol bier label 16 extensive コマンドを発行して、検索された BIFT を表示します。
user@routerPE1> show route table mpls.0 protocol bier label 16 extensive mpls.0: 26 destinations, 26 routes (26 active, 0 holddown, 0 hidden) 16 (1 entry, 1 announced) TSI: KRT in-kernel 16 /52 -> {[6025]} Opaque data client: BIER Opaque data: TLV type:32820 APP flag:0x80 Address: 0x56026719ae20 Opaque-data reference count: 24 Stats ID Group: Kernel ID = 4097, Stats IDs = { 4026531842 } *BIER Preference: 70 Next hop type: Multicast (IPv4) Composite, Next hop index: 6025 Address: 0x560263988dc4 Next-hop reference count: 2, key opaque handle: 0x560269c537a0 Nexthop key opaque app data dump: TLV Type:32776, :bier-10-0.bier.0, Num of entries:256, 1-3, 2-8091, 3-8103, 4-8092 Kernel Table Id: 0 State: <Active OpaqueData> Local AS: 200 Age: 1:49:17 Validation State: unverified Task: bier global task Announcement bits (1): 1-KRT AS path: I Statistics - Packets: 0, pps: 0, Bytes: 0 Stats ID Group: Kernel ID = 4097, Stats IDs = { 4026531842 } Thread: junos-main
BFR-ID 2とBFR-ID 3は、BIFT :bier-10-0.bier.0 とそれに対応するプッシュラベルで検索され、ネクストホップが決定されます。このネクストホップ情報を表示するには、 show route table :bier-10-0.bier.0 コマンドを発行します。
user@routerPE1> show route table :bier-10-0.bier.0
:bier-10-0.bier.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1/16
*[BIER/70] 01:56:21
to table mpls.0
2/16
*[BIER/70] 01:51:14
> to 10.1.2.2 via et-0/0/11.0, Push 16
to 10.1.2.2 via et-0/0/25.0, Push 16
3/16
*[BIER/70] 01:51:06
> to 10.1.2.2 via et-0/0/11.0, Push 16
to 10.1.5.5 via et-0/0/9.0, Push 16
to 10.1.2.2 via et-0/0/25.0, Push 16
4/16
*[BIER/70] 01:50:36
> to 10.1.5.5 via et-0/0/9.0, Push 16
F-BM とその BIER ネイバーを表示するには、 show route table :bier-10-0.bier.0 extensive コマンドを発行します。
user@routerPE1> show route table :bier-10-0.bier.0 extensive :bier-10-0.bier.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden) 2/16 (1 entry, 0 announced) *BIER Preference: 70 Next hop type: List, Next hop index: 8091 Address: 0x560263986adc Next-hop reference count: 2, non-key opaque handle: 0x56026719b540 Nexthop nonkey opaque app data dump: TLV type:32829, Flag:0x4 Kernel Table Id: 0 Next hop: ELNH Address 0x56026337c87c, selected Next hop type: Router, Next hop index: 8083 Address: 0x56026337c87c Next-hop reference count: 2, key opaque handle: 0x560269c4eb80, non-key opaque handle: 0x560269c50ce0 Nexthop key opaque app data dump: TLV type:32794 APP data:Bier nbr 0x5602661cd418, label:16, Addr:10.2.2.2 Nexthop nonkey opaque app data dump: TLV type:32829, Flag:0x4, FBM:0:0:0:0:0:0:0:00000006 , Next-hop session id: 5 Kernel Table Id: 0 Next hop: 10.1.2.2 via et-0/0/11.0 Label operation: Push 16 Label TTL action: prop-ttl Load balance label: Label 16: None; Label element ptr: 0x560266949df0 Label parent element ptr: (nil) Label element references: 3 Label element child references: 0 Label element lsp id: 0 Statistics ID Group: Kernel ID = 4110, Stats IDs = { 4026531855 } ...trimmed
F-BMは、 show bier neighbor コマンドを発行して表示することもできます。
出力には、パケット(pps)も表示されます。以下の出力例では、ネクストホップが10.1.2.2のBIERネイバー10.2.2.2のパケットカウンターは 141753 を示し、他のネイバーはnullを示しています。これは、マルチキャストトラフィックの現在の転送パスを示しています。ビット文字列をF-BMでマスクした後、プッシュラベル16を使用してネイバーに転送されます。
user@routerPE1> show bier neighbor BIER info: Subdomain ID: 10 BSL: 256 BIER Neighbor Label Nexthop Packets(pps) Bytes 10.2.2.2 16 10.1.2.2 141753( 1) 18711396 FBM:0:0:0:0:0:0:0:00000006 10.2.2.2 16 10.1.2.2 0( 0) 0 FBM:0:0:0:0:0:0:0:00000006 10.5.5.5 16 10.1.5.5 0( 0) 0 FBM:0:0:0:0:0:0:0:0000000c
PE2について:
受信ラベルはローカルのmpls.0テーブルで検索され、対応するBIFTが決定されます。 show route table mpls.0 protocol bier label 16 extensive コマンドを発行して、ラベル 16 のテーブル情報を表示します。
user@routerPE2> show route table mpls.0 protocol bier label 16 extensive
mpls.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
16 (1 entry, 1 announced)
TSI:
KRT in-kernel 16 /52 -> {[6021]}
Opaque data client: BIER
Opaque data: TLV type:32820 APP flag:0x80
Address: 0x560719d9aac0
Opaque-data reference count: 24
Stats ID Group: Kernel ID = 4097, Stats IDs = { 4026531842 }
*BIER Preference: 70
Next hop type: Multicast (IPv4) Composite, Next hop index: 6021
Address: 0x56071658a084
Next-hop reference count: 2, key opaque handle: 0x56071c81ffe0
Nexthop key opaque app data dump: TLV Type:32776, :bier-10-0.bier.0, Num of entries:256, 1-9093, 2-3, 3-9082, 4-9140
Kernel Table Id: 0
State: <Active OpaqueData>
Local AS: 200
Age: 1:55:50
Validation State: unverified
Task: bier global task
Announcement bits (1): 1-KRT
AS path: I
Statistics - Packets: 0, pps: 0, Bytes: 0
Stats ID Group: Kernel ID = 4097, Stats IDs = { 4026531842 }
Thread: junos-main
ビット 2 と 3 は、BIFT :bier-10-0.bier.0で検索されます。ビット2の場合、ネクストホップはローカルmpls.0テーブルであり、ビット3の場合、ネクストホップはプッシュラベル16のPE3です。 show route table :bier-10-0.bier.0 コマンドを発行して、この情報を確認します。
user@routerPE2> show route table :bier-10-0.bier.0
:bier-10-0.bier.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1/16
*[BIER/70] 02:00:43
> to 10.1.2.1 via et-0/0/11.0, Push 16
to 10.1.2.1 via et-0/0/24.0, Push 16
2/16
*[BIER/70] 02:05:35
to table mpls.0
3/16
*[BIER/70] 02:00:48
> to 10.2.3.3 via et-0/0/12.0, Push 16
4/16
*[BIER/70] 02:00:04
> to 10.2.3.3 via et-0/0/12.0, Push 16
to 10.2.5.5 via et-0/0/9.0, Push 16
ビット2では、vrfラベル 990001 がmpls.0テーブルで検索され、対応するvrfが検索されます。
root@user@routerPE2> show route table mpls.0 label 990001
mpls.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
990001 *[VPN/0] 02:08:30
> via lsi.0 (vrf1), Pop
show multicast route instance vrf1 extensive コマンドを発行して、ルートを表示します。
user@routerPE2> show multicast route instance vrf1 extensive
Instance: vrf1 Family: INET
Group: 232.252.1.1
Source: 172.11.21.21/32
Upstream interface: lsi.0
Downstream interface list:
et-0/0/10.1
Number of outgoing interfaces: 1
Session description: Unknown
Statistics: 0 kBps, 0 pps, 0 packets
Next-hop ID: 6017
Upstream protocol: MVPN
Route state: Active
Forwarding state: Forwarding
Cache lifetime/timeout: forever
Wrong incoming interface notifications: 0
Uptime: 00:18:11
Sensor ID: 0xf0000017
PE3の場合:
PE2 と同様に、受信ラベルはローカルの mpls.0 テーブルで検索され、対応する BIFT が決定されます。 show route table mpls.0 protocol bier label 16 extensive コマンドを発行して、ラベル 16 のテーブル情報を表示します。
user@routerPE3> show route table mpls.0 label 16 extensive mpls.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden) 16 (1 entry, 1 announced) TSI: KRT in-kernel 16 /52 -> {[6013]} Opaque data client: BIER Opaque data: TLV type:32820 APP flag:0x80 Address: 0x55c74399b1e0 Opaque-data reference count: 24 Stats ID Group: Kernel ID = 4097, Stats IDs = { 4026531842 } *BIER Preference: 70 Next hop type: Multicast (IPv4) Composite, Next hop index: 6013 Address: 0x55c740189184 Next-hop reference count: 2, key opaque handle: 0x55c74642ea20 Nexthop key opaque app data dump: TLV Type:32776, :bier-10-0.bier.0, Num of entries:256, 1-9088, 2-9085, 3-3, 4-9116 Kernel Table Id: 0 State: <Active OpaqueData> Local AS: 200 Age: 2:04:31 Validation State: unverified Task: bier global task Announcement bits (1): 1-KRT AS path: I Statistics - Packets: 0, pps: 0, Bytes: 0 Stats ID Group: Kernel ID = 4097, Stats IDs = { 4026531842 } Thread: junos-main
show route table :bier-10-0.bier.0 コマンドを発行して、ネクストホップ情報を表示します。ビット3がBIFTで検索され、ネクストホップはローカルのmpls.0テーブルです。
user@routerPE3> show route table :bier-10-0.bier.0
:bier-10-0.bier.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1/16
*[BIER/70] 02:06:09
> to 10.3.5.5 via ae0.0, Push 16
to 10.2.3.2 via et-0/0/11.0, Push 16
2/16
*[BIER/70] 02:06:15
> to 10.2.3.2 via et-0/0/11.0, Push 16
3/16
*[BIER/70] 02:10:46
to table mpls.0
4/16
*[BIER/70] 02:05:52
> to 10.3.4.4 via et-0/0/13.0, Push 16
mpls.0テーブルでvrfラベル 990001 を検索し、ビット3のvrfを見つけます。
user@routerPE3> show route table mpls.0 label 990001
mpls.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
990001 *[VPN/0] 02:11:39
> via lsi.0 (vrf1), Pop
show multicast route instance vrf1 extensiveコマンドを発行して、vrf内のルートを表示します。
user@routerPE3> show multicast route instance vrf1 extensive
Instance: vrf1 Family: INET
Group: 232.252.1.1
Source: 172.11.21.21/32
Upstream interface: lsi.0
Downstream interface list:
et-0/0/10.1
Number of outgoing interfaces: 1
Session description: Unknown
Statistics: 0 kBps, 0 pps, 0 packets
Next-hop ID: 6017
Upstream protocol: MVPN
Route state: Active
Forwarding state: Forwarding
Cache lifetime/timeout: forever
Wrong incoming interface notifications: 0
Uptime: 00:21:33
Sensor ID: 0xf0000015