BGPマルチパスとは
BGPは同じプレフィックスに複数の経路があっても、ベストパスを1つだけ選んでルーティングテーブルに入れます。 RFC 4271の9.1.2.2は、同じ優先度の経路が複数あるときの扱いをこう定めています。
The local speaker can select only one of these routes for inclusion in the associated Loc-RIB.
マルチパスは、この制限を実装側で緩めて複数の経路を同時にルーティングテーブルへ入れ、負荷分散する機能です。
IOS XRではmaximum-pathsで有効にします。
マルチパスはRFCで標準化されていません。 BGPの仕様に「複数の経路を転送に使う」という規定はなく、各実装が独自に持つ拡張です。 そのため候補になる条件、上限値、コマンド名はベンダーごとに違います。
マルチパスが変えるのは転送テーブルの中身だけです。
| 項目 | マルチパスで変わるか |
|---|---|
| ベストパス選択の結果 | 変わらない。ベストパスは1つのまま |
| ピアへ広告する経路 | 変わらない。広告するのはベストパスだけで、ピアには何も送られない |
| ルーティングテーブル(転送) | 変わる。ベストパスと同等の経路が複数入り、パケットはフローごと(送信元・宛先アドレスなどのハッシュ)にどれかの経路へ振り分けられる |
振り分けはパケットごとではなくフローごとです。送信元・宛先アドレスなどのハッシュ値でネクストホップを選ぶため、同じ送信元・宛先の通信は常に同じ経路を通ります。逆に、送信元が違っても同じ経路に載ることはあります。ハッシュの表は経路の本数ごとに組み直されるので、本数が変わると振り分けも変わります。
3種類のマルチパス
どの種類の経路を束ねるかで3つに分かれます。IOS XRではmaximum-pathsのキーワードで指定します。
| 種類 | コマンド | 束ねる対象 |
|---|---|---|
| eBGPマルチパス | maximum-paths ebgp <数> | eBGPで学習した経路同士 |
| iBGPマルチパス | maximum-paths ibgp <数> | iBGPで学習した経路同士 |
| eiBGPマルチパス | maximum-paths eibgp <数> | eBGPとiBGPが混ざっていてもよい |
候補になる条件
マルチパスに入るのは、ベストパスと次の属性がすべて一致する経路です。ベストパス選択が「同点のまま決着しなかった」経路が候補になります。
| 条件 | 内容 |
|---|---|
WEIGHT | ベストパスと同じ |
LOCAL_PREF | ベストパスと同じ |
AS_PATHの長さ | ベストパスと同じ |
ORIGIN | ベストパスと同じ |
MULTI_EXIT_DISC | ベストパスと同じ |
AS_PATHの中身 | ベストパスと完全に一致(AS番号の並びまで同じ) |
種類ごとに追加の条件があります。
| 種類 | 追加の条件 |
|---|---|
| eBGP | 外部(またはコンフェデレーション外部)ピアから学習した経路であること。NEXT_HOPまでのIGPメトリックがベストパスと同じであること |
| iBGP | 内部ピアから学習した経路であること。NEXT_HOPまでのIGPメトリックがベストパスと同じであること |
| eiBGP | IOS XRでは、直結のeBGP経路と数ホップ先のiBGP経路のようにIGPメトリックが違っていても束ねられる |
eiBGPマルチパスはMPLS VPNのPE向けに作られた機能です。 Ciscoのガイドでは「BGP Multipath Load Sharing for Both eBGP and iBGP in an MPLS-VPN」として、IPv4 VRFアドレスファミリーでのみ設定できる機能として説明されています。PEはCEからのeBGP経路と対向PEからのiBGP経路を束ね、iBGP側のパケットはラベルで対向PEまで運ばれるので、途中のルータ(P)はBGPを見ません。
その後、VRFの外(素のIPv4 / IPv6)でも設定できるように拡張されましたが、同じガイドは「顧客サイトのPE 1台だけに設定すること。複数台に設定するとPE間でトラフィックがループすることがある」と注意しています。素のIPv4ではiBGP側のパケットがIGPの経路で途中のルータに渡り、そのルータは自分のBGPテーブルで転送先を決めるためです。途中のルータのベストパスが元のルータ経由なら、パケットは送り返されてループになります。
この検証のR1がその形で、iBGP側のネクストホップ(R2のLo0)へはR3を経由しますが、R3の192.168.4.0/24のベストパスはR1経由です。
multipath-relax:AS_PATHの中身を問わない
AS_PATHの中身が一致することという条件は、実運用でよく問題になります。
2つの上流ISPから同じ宛先を受け取ると、AS_PATHの長さは同じでも通るASが違うため、既定では束ねられません。
multipath-relaxを有効にすると、この条件が長さが同じであればよいに緩みます。
| 設定 | AS_PATHに求める条件 |
|---|---|
| 既定 | 中身が完全に一致(65001 65004と65001 65004のみ束ねる) |
multipath-relaxあり | 長さが同じであればよい(65001 65004と65003 65004も束ねる) |
ADD-PATH(RFC 7911)との違い
複数の経路を扱う仕組みとしてADD-PATH(RFC 7911)がありますが、層が違います。 ADD-PATHは「ピアへ何本広告するか」、マルチパスは「自分の転送テーブルへ何本入れるか」の話です。
| 項目 | マルチパス | ADD-PATH(RFC 7911) |
|---|---|---|
| 標準化 | されていない(実装ごとの拡張) | RFC 7911 |
| 変えるもの | 転送テーブルに入れる経路数 | ピアへ広告する経路数 |
| ピアから見た違い | 無い(広告されるのはベストパスだけ) | 同じプレフィックスの経路が複数届く |
| 仕組み | ローカルの設定のみ | Capabilityの交換とPath Identifierが必要 |
IOS XRでの設定と確認
| 項目 | 内容 |
|---|---|
maximum-paths ebgp <数> | eBGPマルチパス。address-familyごとに設定する。指定できるのは2〜1024(XRd 26.1.1)。設定しなければ1(マルチパスなし) |
maximum-paths ibgp <数> / eibgp <数> | iBGP同士 / eBGPとiBGPの混在 |
bgp bestpath as-path multipath-relax | AS_PATHの一致条件を長さだけに緩める |
show bgp <プレフィックス> | マルチパスに入った経路にmultipathが付く |
show route <プレフィックス> | 複数のネクストホップがBGP multi pathとして並ぶ。転送の実体 |
show cef exact-route <送信元> <宛先> | その送信元・宛先のフローがどのネクストホップを通るかを、転送テーブルのハッシュから引く |
実際の設定は、各STEPのshow configuration commit changesで示します。
実機での検証
XRd 26.1.1のルータ7台で確認します。
- AS 65001はR1・R2が境界、R3が内部(iBGPフルメッシュ、
next-hop-self、OSPF area 0)。AS 65002はR4、AS 65003はR5、AS 65004はR6、AS 65005はR7 - 各ルータはLo1の
192.168.N.0/24をnetwork文で広告する。R1・R3はLo2、R7はLo2〜Lo4も広告し、送信元を変えた通信に使う - R7はR4の背後に置いた通信の発信元です。 R7から
192.168.6.0/24への通信は必ずR4を通り、R4のマルチパスで振り分けられます - 出方向・入方向ポリシーはネイバーごとに別名(中身は
pass)、全ネイバーにsoft-reconfiguration inbound always
3種類のマルチパスは、別々のルータで確認します。観測点は次の3か所で固定です。
| 観測点 | プレフィックス | 届いている経路 | 確認する種類 |
|---|---|---|---|
| R4 | 192.168.6.0/24 | R1経由とR2経由(どちらもAS_PATH 65001 65004で完全一致)、R5経由(65003 65004で長さだけ同じ) | eBGPマルチパスとmultipath-relax |
| R3 | 192.168.4.0/24 | R1経由とR2経由のiBGP 2本(IGPメトリックが同じ) | iBGPマルチパス |
| R1 | 192.168.4.0/24 | R4からのeBGPとR2からのiBGP | eiBGPマルチパス |
検証の全体像
| STEP | 操作 | 確かめること |
|---|---|---|
| 0 | マルチパスなし | R4は3経路を持つがベストは1本。ネクストホップは1つで、R7の4つの送信元はすべて同じ経路を通る |
| 1 | R4にmaximum-paths ebgp 2 | 完全一致する2本が束ねられ、R7の送信元によってR1経由とR2経由に分かれる。R5への広告は変わらず、UPDATEも流れない |
| 2 | R4にmultipath-relaxとebgp 3 | AS_PATHの中身が違うR5経由も入って3本になる |
| 3 | R4の入方向でR5経由のLOCAL_PREFを90に | 属性がずれた経路は候補から外れて2本に戻る。ベストパスは変わらない |
| 4 | R3にmaximum-paths ibgp 2 | iBGP同士が束ねられ、R1のLo0とR2のLo0の2つになる |
| 5 | R1にmaximum-paths eibgp 2 | eBGPとiBGPが束ねられる。ただしiBGP側の経路上にあるR3が自分のBGP経路で転送するため、一部のフローがR1とR3の間でループする |
| 6 | STEP 1〜5の設定を戻す(最終状態) | multipathの表示が消え、ネクストホップも1つに戻る |
以降の節で使うshowはすべて観測点のルータで採取したもので、送信元ごとの経路はshow cef exact-route(転送テーブルの答え)と、その送信元からのtraceroute(実際の転送)の両方で確認します。
tracerouteは各ホップに3発送っており、途中のルータが2発目にだけ応答しないことがあります(ICMPの応答をルータが制限しているためで、経路の違いではありません)。
STEP 0:マルチパスなし
R4は3経路を持っていますが、転送に使うのはベストパスの1本だけです。 show bgpではR1経由(10.1.4.1)だけがbestで、multipathは付いていません。
RP/0/RP0/CPU0:R4#show bgp 192.168.6.0/24
Mon Sep 14 21:13:24.256 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 60 60
Last Modified: Sep 14 21:08:56.023 for 00:04:28
Paths: (3 available, best #1)
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
Path #1: Received by speaker 0
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
65001 65004, (received & used)
10.1.4.1 from 10.1.4.1 (10.0.0.1)
Origin IGP, localpref 100, valid, external, best, group-best
Received Path ID 0, Local Path ID 1, version 54
Origin-AS validity: (disabled)
Path #2: Received by speaker 0
Not advertised to any peer
65001 65004, (received & used)
10.2.4.2 from 10.2.4.2 (10.0.0.2)
Origin IGP, localpref 100, valid, external
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)
Path #3: Received by speaker 0
Not advertised to any peer
65003 65004, (received & used)
10.4.5.5 from 10.4.5.5 (10.0.0.5)
Origin IGP, localpref 100, valid, external, group-best
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)ルーティングテーブルにはネクストホップが1つだけ入ります。
RP/0/RP0/CPU0:R4#show route 192.168.6.0/24
Mon Sep 14 21:13:24.863 UTC
Routing entry for 192.168.6.0/24
Known via "bgp 65002", distance 20, metric 0
Tag 65001, type external
Installed Sep 14 21:08:55.779 for 00:04:29
Routing Descriptor Blocks
10.1.4.1, from 10.1.4.1, BGP external
Route metric is 0, Wt is 1
No advertising protos. R7の4つの送信元から192.168.6.1へのtracerouteは、2ホップ目がすべてR1(10.1.4.1)です。
RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.7.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:16:06.561 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 62 msec 4 msec 4 msec
2 10.1.4.1 7 msec 14 msec 6 msec
3 10.1.6.6 32 msec * 11 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.71.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:16:10.364 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 5 msec 5 msec 5 msec
2 10.1.4.1 8 msec 8 msec 7 msec
3 10.1.6.6 11 msec * 14 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.75.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:16:14.148 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 6 msec 7 msec 6 msec
2 10.1.4.1 9 msec 48 msec 9 msec
3 10.1.6.6 13 msec * 12 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.79.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:16:18.042 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 6 msec 5 msec 5 msec
2 10.1.4.1 9 msec 10 msec 8 msec
3 10.1.6.6 13 msec * 13 msec R3とR1も同様に2経路を持ち、ベストパスは1本です(R3はR1経由の10.0.0.1、R1は直結のeBGP 10.1.4.4)。
RP/0/RP0/CPU0:R3#show bgp 192.168.4.0/24
Mon Sep 14 21:12:26.450 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 28 28
Last Modified: Sep 14 21:09:05.023 for 00:03:21
Paths: (2 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
65002, (received & used)
10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 28
Path #2: Received by speaker 0
Not advertised to any peer
65002, (received & used)
10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
Origin IGP, metric 0, localpref 100, valid, internal
Received Path ID 0, Local Path ID 0, version 0RP/0/RP0/CPU0:R1#show bgp 192.168.4.0/24
Mon Sep 14 21:10:39.491 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 27 27
Last Modified: Sep 14 21:08:19.023 for 00:02:20
Paths: (2 available, best #2)
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.1.6.6 10.0.0.3 10.0.0.2
Path #1: Received by speaker 0
Not advertised to any peer
65002, (received & used)
10.0.0.2 (metric 3) from 10.0.0.2 (10.0.0.2)
Origin IGP, metric 0, localpref 100, valid, internal
Received Path ID 0, Local Path ID 0, version 0
Path #2: Received by speaker 0
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.1.6.6 10.0.0.3 10.0.0.2
65002, (received & used)
10.1.4.4 from 10.1.4.4 (10.0.0.4)
Origin IGP, metric 0, localpref 100, valid, external, best, group-best
Received Path ID 0, Local Path ID 1, version 27
Origin-AS validity: (disabled)STEP 1:R4にmaximum-paths ebgp 2
AS_PATHまで完全に一致するR1経由とR2経由の2本が束ねられ、R5経由は入りません。 設定はこの1行だけです。
RP/0/RP0/CPU0:R4#show configuration commit changes last 1
Mon Sep 14 21:16:46.478 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router bgp 65002
address-family ipv4 unicast
maximum-paths ebgp 2
!
!
endshow bgpではR1経由とR2経由にmultipathが付き、ベストパスはR1経由のままです。R5経由はAS_PATHの中身(65003 65004)が違うので候補になりません。
RP/0/RP0/CPU0:R4#show bgp 192.168.6.0/24
Mon Sep 14 21:21:36.760 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 74 74
Last Modified: Sep 14 21:16:48.023 for 00:04:48
Paths: (3 available, best #1)
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
Path #1: Received by speaker 0
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
65001 65004, (received & used)
10.1.4.1 from 10.1.4.1 (10.0.0.1)
Origin IGP, localpref 100, valid, external, best, group-best, multipath
Received Path ID 0, Local Path ID 1, version 74
Origin-AS validity: (disabled)
Path #2: Received by speaker 0
Not advertised to any peer
65001 65004, (received & used)
10.2.4.2 from 10.2.4.2 (10.0.0.2)
Origin IGP, localpref 100, valid, external, multipath
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)
Path #3: Received by speaker 0
Not advertised to any peer
65003 65004, (received & used)
10.4.5.5 from 10.4.5.5 (10.0.0.5)
Origin IGP, localpref 100, valid, external, group-best
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)ルーティングテーブルには2つのネクストホップがBGP multi pathとして入ります。
RP/0/RP0/CPU0:R4#show route 192.168.6.0/24
Mon Sep 14 21:21:37.403 UTC
Routing entry for 192.168.6.0/24
Known via "bgp 65002", distance 20, metric 0
Tag 65001, type external
Installed Sep 14 21:16:47.563 for 00:04:49
Routing Descriptor Blocks
10.1.4.1, from 10.1.4.1, BGP external, BGP multi path
Route metric is 0
10.2.4.2, from 10.2.4.2, BGP external, BGP multi path
Route metric is 0
No advertising protos. CEFの表ではLoad distribution: 0 1 0 1のように、ハッシュ値ごとにどちらのネクストホップを使うかが決まっています。フローはこの表で振り分けられます。
RP/0/RP0/CPU0:R4#show cef 192.168.6.0/24
Mon Sep 14 21:21:37.722 UTC
192.168.6.0/24, version 165, internal 0x5000001 0x40 (ptr 0x88529f80) [1], 0x0 (0x0), 0x0 (0x0)
Updated Sep 14 21:16:47.658
local adjacency to GigabitEthernet0/0/0/0
Prefix Len 24, traffic index 0, precedence n/a, priority 4
gateway array (0x8938bc68) reference count 6, flags 0x2010, source rib (7), 0 backups
[1 type 3 flags 0x48501 (0x8942e380) ext 0x0 (0x0) (collapsed)]
LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
gateway array update type-time 1 Sep 14 21:16:47.568
LDI Update time Sep 14 21:16:47.658
via 10.1.4.1/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 0 NHID 0x0 [0x8852af40 0x0]
next hop 10.1.4.1/32 via 10.1.4.1/32
via 10.2.4.2/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 1 NHID 0x0 [0x8852ae60 0x0]
next hop 10.2.4.2/32 via 10.2.4.2/32
Load distribution: 0 1 0 1 (refcount 1)
Hash OK Interface Address
0 Y GigabitEthernet0/0/0/0 10.1.4.1
1 Y GigabitEthernet0/0/0/1 10.2.4.2
2 Y GigabitEthernet0/0/0/0 10.1.4.1
3 Y GigabitEthernet0/0/0/1 10.2.4.2 送信元ごとに引いた結果は、192.168.7.1と192.168.71.1がR1経由、192.168.75.1と192.168.79.1がR2経由です。
RP/0/RP0/CPU0:R4#show cef exact-route 192.168.7.1 192.168.6.1
Mon Sep 14 21:21:39.556 UTC
192.168.6.0/24, version 165, internal 0x5000001 0x40 (ptr 0x88529f80) [1], 0x0 (0x0), 0x0 (0x0)
Updated Sep 14 21:16:47.658
local adjacency to GigabitEthernet0/0/0/0
Prefix Len 24, traffic index 0, precedence n/a, priority 4
via GigabitEthernet0/0/0/0
via 10.1.4.1/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 0 NHID 0x0 [0x8852af40 0x0]
next hop 10.1.4.1/32 via 10.1.4.1/32RP/0/RP0/CPU0:R4#show cef exact-route 192.168.71.1 192.168.6.1
Mon Sep 14 21:21:39.741 UTC
192.168.6.0/24, version 165, internal 0x5000001 0x40 (ptr 0x88529f80) [1], 0x0 (0x0), 0x0 (0x0)
Updated Sep 14 21:16:47.658
local adjacency to GigabitEthernet0/0/0/0
Prefix Len 24, traffic index 0, precedence n/a, priority 4
via GigabitEthernet0/0/0/0
via 10.1.4.1/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 0 NHID 0x0 [0x8852af40 0x0]
next hop 10.1.4.1/32 via 10.1.4.1/32RP/0/RP0/CPU0:R4#show cef exact-route 192.168.75.1 192.168.6.1
Mon Sep 14 21:21:39.972 UTC
192.168.6.0/24, version 165, internal 0x5000001 0x40 (ptr 0x88529f80) [1], 0x0 (0x0), 0x0 (0x0)
Updated Sep 14 21:16:47.657
local adjacency to GigabitEthernet0/0/0/1
Prefix Len 24, traffic index 0, precedence n/a, priority 4
via GigabitEthernet0/0/0/1
via 10.2.4.2/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 1 NHID 0x0 [0x8852ae60 0x0]
next hop 10.2.4.2/32 via 10.2.4.2/32RP/0/RP0/CPU0:R4#show cef exact-route 192.168.79.1 192.168.6.1
Mon Sep 14 21:21:40.291 UTC
192.168.6.0/24, version 165, internal 0x5000001 0x40 (ptr 0x88529f80) [1], 0x0 (0x0), 0x0 (0x0)
Updated Sep 14 21:16:47.658
local adjacency to GigabitEthernet0/0/0/1
Prefix Len 24, traffic index 0, precedence n/a, priority 4
via GigabitEthernet0/0/0/1
via 10.2.4.2/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 1 NHID 0x0 [0x8852ae60 0x0]
next hop 10.2.4.2/32 via 10.2.4.2/32R7からのtracerouteもこのとおりに分かれます。2ホップ目がR1(10.1.4.1)とR2(10.2.4.2)に分かれているのが、マルチパスで転送が変わった証拠です。
RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.7.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:24:18.641 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 6 msec 5 msec 5 msec
2 10.1.4.1 9 msec 8 msec 7 msec
3 10.1.6.6 12 msec * 12 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.71.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:24:22.443 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 7 msec 5 msec 5 msec
2 10.1.4.1 9 msec 8 msec 8 msec
3 10.1.6.6 13 msec * 14 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.75.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:24:26.346 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 6 msec 5 msec 5 msec
2 10.2.4.2 9 msec 50 msec 8 msec
3 10.2.3.3 12 msec 11 msec 12 msec
4 10.1.3.1 12 msec 11 msec 11 msec
5 10.1.6.6 17 msec * 17 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.79.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:24:30.241 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 7 msec 50 msec 6 msec
2 10.2.4.2 9 msec 8 msec 23 msec
3 10.2.3.3 12 msec 11 msec 11 msec
4 10.1.3.1 12 msec 11 msec 11 msec
5 10.1.6.6 15 msec * 18 msec 一方、ピアへの広告は変わりません。R5へのadvertised-routesはSTEP 0と同じで、R4-R5間のキャプチャーにはKEEPALIVEしかありません(UPDATEは1つも流れていません)。
RP/0/RP0/CPU0:R4#show bgp neighbors 10.4.5.5 advertised-routes
Mon Sep 14 21:21:42.361 UTC
Network Next Hop From AS Path
192.168.1.0/24 10.4.5.4 10.1.4.1 65002 65001i
192.168.2.0/24 10.4.5.4 10.1.4.1 65002 65001i
192.168.3.0/24 10.4.5.4 10.1.4.1 65002 65001i
192.168.4.0/24 10.4.5.4 Local 65002i
192.168.6.0/24 10.4.5.4 10.1.4.1 65002 65001 65004i
192.168.7.0/24 10.4.5.4 10.4.7.7 65002 65005i
192.168.13.0/24 10.4.5.4 10.1.4.1 65002 65001i
192.168.35.0/24 10.4.5.4 10.1.4.1 65002 65001i
192.168.71.0/24 10.4.5.4 10.4.7.7 65002 65005i
192.168.75.0/24 10.4.5.4 10.4.7.7 65002 65005i
192.168.79.0/24 10.4.5.4 10.4.7.7 65002 65005i
Processed 11 prefixes, 11 paths$ tshark -r bgp-multipath-step1-r4r5.pcap -Y bgp
1 0.000000 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
3 9.319897 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
5 59.999511 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
7 69.320302 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
9 119.999457 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
11 129.320784 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
13 180.000764 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
15 189.321086 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
17 240.000615 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
19 249.321227 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
21 300.000736 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
23 309.321196 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
25 360.001210 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
27 369.322027 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE Message
29 420.001005 10.4.5.4 → 10.4.5.5 BGP 73 KEEPALIVE Message
31 429.322356 10.4.5.5 → 10.4.5.4 BGP 73 KEEPALIVE MessageSTEP 2:R4にmultipath-relaxとebgp 3
AS_PATHの中身が違うR5経由も候補に入り、3本になります。
RP/0/RP0/CPU0:R4#show configuration commit changes last 1
Mon Sep 14 21:24:46.493 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router bgp 65002
bgp bestpath as-path multipath-relax
address-family ipv4 unicast
maximum-paths ebgp 3
!
!
endRP/0/RP0/CPU0:R4#show bgp 192.168.6.0/24
Mon Sep 14 21:29:36.100 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 81 81
Last Modified: Sep 14 21:24:48.023 for 00:04:48
Paths: (3 available, best #1)
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
Path #1: Received by speaker 0
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
65001 65004, (received & used)
10.1.4.1 from 10.1.4.1 (10.0.0.1)
Origin IGP, localpref 100, valid, external, best, group-best, multipath
Received Path ID 0, Local Path ID 1, version 81
Origin-AS validity: (disabled)
Path #2: Received by speaker 0
Not advertised to any peer
65001 65004, (received & used)
10.2.4.2 from 10.2.4.2 (10.0.0.2)
Origin IGP, localpref 100, valid, external, multipath
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)
Path #3: Received by speaker 0
Not advertised to any peer
65003 65004, (received & used)
10.4.5.5 from 10.4.5.5 (10.0.0.5)
Origin IGP, localpref 100, valid, external, multipath
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)RP/0/RP0/CPU0:R4#show route 192.168.6.0/24
Mon Sep 14 21:29:36.462 UTC
Routing entry for 192.168.6.0/24
Known via "bgp 65002", distance 20, metric 0
Tag 65001, type external
Installed Sep 14 21:24:47.761 for 00:04:48
Routing Descriptor Blocks
10.1.4.1, from 10.1.4.1, BGP external, BGP multi path
Route metric is 0
10.2.4.2, from 10.2.4.2, BGP external, BGP multi path
Route metric is 0
10.4.5.5, from 10.4.5.5, BGP external, BGP multi path
Route metric is 0
No advertising protos. ネクストホップが3つになるとハッシュの表も組み直されるため、送信元ごとの振り分けはSTEP 1と同じではありません。192.168.71.1がR5経由(10.4.5.5)に移り、他の3つはR1経由です。
RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.7.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:32:18.313 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 7 msec 6 msec 5 msec
2 10.1.4.1 10 msec 10 msec 8 msec
3 10.1.6.6 14 msec * 16 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.71.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:32:21.918 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 8 msec 5 msec 5 msec
2 10.4.5.5 10 msec 7 msec 7 msec
3 10.5.6.6 11 msec * 14 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.75.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:32:25.433 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 6 msec 5 msec 24 msec
2 10.1.4.1 9 msec 9 msec 8 msec
3 10.1.6.6 12 msec * 12 msec RP/0/RP0/CPU0:R7#traceroute 192.168.6.1 source 192.168.79.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:32:29.102 UTC
Type escape sequence to abort.
Tracing the route to 192.168.6.1
1 10.4.7.4 5 msec 4 msec 5 msec
2 10.1.4.1 8 msec 9 msec 7 msec
3 10.1.6.6 10 msec * 14 msec STEP 3:R4の入方向でR5経由のLOCAL_PREFを90に
属性が1つでもベストパスと違えば候補から外れます。 R5からの入方向ポリシーでLOCAL_PREFを90にすると、R5経由はmultipathが外れて2本に戻ります。ベストパス(R1経由)は変わりません。
RP/0/RP0/CPU0:R4#show configuration commit changes last 1
Mon Sep 14 21:32:45.693 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
route-policy FROM-R5
set local-preference 90
pass
end-policy
!
endPaths: (4 available)になっているのは、soft-reconfiguration inbound alwaysが保持している受信そのままの経路(received-only、localpref 100)が並ぶためです。転送に使われるのはlocalpref 90のほうで、これがベストパスと一致しないので候補になりません。
RP/0/RP0/CPU0:R4#show bgp 192.168.6.0/24
Mon Sep 14 21:37:33.225 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 87 87
Last Modified: Sep 14 21:32:47.023 for 00:04:46
Paths: (4 available, best #1)
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
Path #1: Received by speaker 0
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.4.7.7 10.4.5.5
65001 65004, (received & used)
10.1.4.1 from 10.1.4.1 (10.0.0.1)
Origin IGP, localpref 100, valid, external, best, group-best, multipath
Received Path ID 0, Local Path ID 1, version 81
Origin-AS validity: (disabled)
Path #2: Received by speaker 0
Not advertised to any peer
65001 65004, (received & used)
10.2.4.2 from 10.2.4.2 (10.0.0.2)
Origin IGP, localpref 100, valid, external, multipath
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)
Path #3: Received by speaker 0
Not advertised to any peer
65003 65004
10.4.5.5 from 10.4.5.5 (10.0.0.5)
Origin IGP, localpref 90, valid, external
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)
Path #4: Received by speaker 0
Not advertised to any peer
65003 65004, (received-only)
10.4.5.5 from 10.4.5.5 (10.0.0.5)
Origin IGP, localpref 100, valid, external
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: (disabled)RP/0/RP0/CPU0:R4#show route 192.168.6.0/24
Mon Sep 14 21:37:33.799 UTC
Routing entry for 192.168.6.0/24
Known via "bgp 65002", distance 20, metric 0
Tag 65001, type external
Installed Sep 14 21:32:47.057 for 00:04:46
Routing Descriptor Blocks
10.1.4.1, from 10.1.4.1, BGP external, BGP multi path
Route metric is 0
10.2.4.2, from 10.2.4.2, BGP external, BGP multi path
Route metric is 0
No advertising protos. R4-R5間のキャプチャーにUPDATEは無く、R5への広告も変わっていません。なおR1-R4間には、R5から受けている192.168.5.0/24の再広告が1つ流れます。入方向ポリシーの再評価で経路の版が変わったための再送で、中身はそれまでと同じです。
STEP 4:R3にmaximum-paths ibgp 2
iBGP同士も同じ条件で束ねられます。 R3はR1経由とR2経由をiBGPで受けており、NEXT_HOP(R1・R2のLo0)までのIGPメトリックはどちらも2です。
RP/0/RP0/CPU0:R3#show configuration commit changes last 1
Mon Sep 14 21:40:42.595 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router bgp 65001
address-family ipv4 unicast
maximum-paths ibgp 2
!
!
endRP/0/RP0/CPU0:R3#show bgp 192.168.4.0/24
Mon Sep 14 21:44:37.129 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 37 37
Last Modified: Sep 14 21:40:44.023 for 00:03:53
Paths: (2 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
65002, (received & used)
10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best, multipath
Received Path ID 0, Local Path ID 1, version 37
Path #2: Received by speaker 0
Not advertised to any peer
65002, (received & used)
10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
Origin IGP, metric 0, localpref 100, valid, internal, multipath
Received Path ID 0, Local Path ID 0, version 0ルーティングテーブルにはR1のLo0(10.0.0.1)とR2のLo0(10.0.0.2)の2つが入ります。
RP/0/RP0/CPU0:R3#show route 192.168.4.0/24
Mon Sep 14 21:44:38.487 UTC
Routing entry for 192.168.4.0/24
Known via "bgp 65001", distance 200, metric 0
Tag 65002, type internal
Installed Sep 14 21:40:43.864 for 00:03:54
Routing Descriptor Blocks
10.0.0.1, from 10.0.0.1, BGP multi path
Route metric is 0
10.0.0.2, from 10.0.0.2, BGP multi path
Route metric is 0
No advertising protos. R3自身の2つの送信元からのtracerouteは、1ホップ目がR1(10.1.3.1)とR2(10.2.3.2)に分かれます。
RP/0/RP0/CPU0:R3#traceroute 192.168.4.1 source 192.168.3.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:45:00.949 UTC
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 10.1.3.1 6 msec 5 msec 5 msec
2 10.1.4.4 9 msec * 11 msec RP/0/RP0/CPU0:R3#traceroute 192.168.4.1 source 192.168.35.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:45:04.816 UTC
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 10.2.3.2 5 msec 5 msec 5 msec
2 10.2.4.4 8 msec * 8 msec STEP 5:R1にmaximum-paths eibgp 2
eBGPとiBGPの経路が束ねられますが、素のIPv4ではiBGP側の経路がループします。
RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Mon Sep 14 21:48:47.524 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router bgp 65001
address-family ipv4 unicast
maximum-paths eibgp 2
!
!
endR4直結のeBGP経路(10.1.4.4)とR2からのiBGP経路(10.0.0.2、IGPメトリック3)の両方にmultipathが付きます。iBGP側にはbackupとadd-pathも付いていますが、転送に使われない印ではありません。
RP/0/RP0/CPU0:R1#show bgp 192.168.4.0/24
Mon Sep 14 21:50:55.020 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 37 37
Last Modified: Sep 14 21:48:49.023 for 00:02:06
Paths: (2 available, best #2)
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.1.6.6 10.0.0.3 10.0.0.2
Path #1: Received by speaker 0
Not advertised to any peer
65002, (received & used)
10.0.0.2 (metric 3) from 10.0.0.2 (10.0.0.2)
Origin IGP, metric 0, localpref 100, valid, internal, multipath, backup, add-path
Received Path ID 0, Local Path ID 3, version 37
Path #2: Received by speaker 0
Advertised IPv4 Unicast paths to peers (in unique update groups):
10.1.6.6 10.0.0.3 10.0.0.2
65002, (received & used)
10.1.4.4 from 10.1.4.4 (10.0.0.4)
Origin IGP, metric 0, localpref 100, valid, external, best, group-best, multipath
Received Path ID 0, Local Path ID 1, version 37
Origin-AS validity: (disabled)ルーティングテーブルとCEFの両方に2つのネクストホップが入り、ハッシュ表ではiBGP側のパケットがR3(10.1.3.3)へ出ていきます。
RP/0/RP0/CPU0:R1#show route 192.168.4.0/24
Mon Sep 14 21:50:56.138 UTC
Routing entry for 192.168.4.0/24
Known via "bgp 65001", distance 20, metric 0
Tag 65002
Number of pic paths 1 , type internal and external
Installed Sep 14 21:48:48.786 for 00:02:07
Routing Descriptor Blocks
10.0.0.2, from 10.0.0.2, BGP backup path, BGP multi path
Route metric is 0
10.1.4.4, from 10.1.4.4, BGP external, BGP multi path
Route metric is 0
No advertising protos. RP/0/RP0/CPU0:R1#show cef 192.168.4.0/24
Mon Sep 14 21:50:56.479 UTC
192.168.4.0/24, version 75, internal 0x5000001 0x40 (ptr 0x8851a0b0) [1], 0x0 (0x0), 0x0 (0x0)
Updated Sep 14 21:48:48.790
local adjacency to GigabitEthernet0/0/0/0
Prefix Len 24, traffic index 0, precedence n/a, priority 4
gateway array (0x896e4640) reference count 6, flags 0x102810, source rib (7), 0 backups
[1 type 3 flags 0x48501 (0x897886c8) ext 0x0 (0x0) (collapsed)]
LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
gateway array update type-time 1 Sep 14 21:48:48.790
LDI Update time Sep 14 21:48:48.892
via 10.0.0.2/32, 3 dependencies, recursive, bgp-multipath, backup [flags 0x6180]
path-idx 0 NHID 0x0 [0x8851a5f0 0x0]
next hop 10.0.0.2/32 via 10.0.0.2/32
via 10.1.4.4/32, 2 dependencies, recursive, bgp-ext, bgp-multipath [flags 0x60a0]
path-idx 1 NHID 0x0 [0x8851ac10 0x0], Internal 0x8a94a0a0
next hop 10.1.4.4/32 via 10.1.4.4/32
Load distribution: 0 1 0 1 (refcount 1)
Hash OK Interface Address
0 Y GigabitEthernet0/0/0/0 10.1.3.3
1 Y GigabitEthernet0/0/0/1 10.1.4.4
2 Y GigabitEthernet0/0/0/0 10.1.3.3
3 Y GigabitEthernet0/0/0/1 10.1.4.4 R1の2つの送信元はどちらもiBGP側に載り、R3へ送られます。R3はSTEP 4のマルチパスで、R1経由とR2経由に振り分けます。 192.168.1.1のフローはR3でR2側に載ってR4へ届きますが、192.168.13.1のフローはR3でR1側に載り、R1がまたR3へ送るので、R1とR3の間を往復してTTLが尽きます(pingは0/50)。
RP/0/RP0/CPU0:R1#traceroute 192.168.4.1 source 192.168.1.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:51:18.816 UTC
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 10.1.3.3 6 msec 5 msec 5 msec
2 10.2.3.2 8 msec 8 msec 8 msec
3 10.2.4.4 19 msec * 13 msec RP/0/RP0/CPU0:R1#ping 192.168.4.1 source 192.168.13.1 count 50 timeout 1
Mon Sep 14 21:51:20.831 UTC
Type escape sequence to abort.
Sending 50, 100-byte ICMP Echos to 192.168.4.1 timeout is 1 seconds:
..................................................
Success rate is 0 percent (0/50)
RP/0/RP0/CPU0:R1#traceroute 192.168.4.1 source 192.168.13.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:52:34.527 UTC
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 10.1.3.3 7 msec 5 msec 5 msec
2 10.1.3.1 6 msec 50 msec 4 msec
3 10.1.3.3 7 msec 7 msec 7 msec
4 10.1.3.1 22 msec 8 msec 8 msec
5 10.1.3.3 11 msec 12 msec 11 msec
6 10.1.3.1 12 msec 57 msec 13 msec R3自身の通信も巻き込まれます。STEP 4では通っていた192.168.3.1のフローは、R3がR1へ送り、R1がiBGP側でR3へ送り返すので、同じくループします。
RP/0/RP0/CPU0:R3#ping 192.168.4.1 source 192.168.3.1 count 50 timeout 1
Mon Sep 14 21:54:14.260 UTC
Type escape sequence to abort.
Sending 50, 100-byte ICMP Echos to 192.168.4.1 timeout is 1 seconds:
..................................................
Success rate is 0 percent (0/50)
RP/0/RP0/CPU0:R3#traceroute 192.168.4.1 source 192.168.3.1 probe 3 timeout 1 maxttl 6
Mon Sep 14 21:55:26.451 UTC
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 10.1.3.1 6 msec 59 msec 5 msec
2 10.1.3.3 5 msec 5 msec 5 msec
3 10.1.3.1 52 msec 7 msec 7 msec
4 10.1.3.3 8 msec 9 msec 8 msec
5 10.1.3.1 10 msec 11 msec 9 msec
6 10.1.3.3 9 msec 9 msec 10 msec Ciscoのガイドが「複数のPEに設定するとPE間でループすることがある」と注意しているのはこの現象です。ラベルで対向PEまで運ぶMPLS VPNなら、途中のルータ(P)はBGPを見ないので送り返しは起きません。
STEP 6:STEP 1〜5の設定を戻す(最終状態)
3台の設定を戻すとmultipathの表示が消え、ルーティングテーブルのネクストホップはSTEP 0と同じ1つに戻ります。
RP/0/RP0/CPU0:R4#show route 192.168.6.0/24
Mon Sep 14 22:04:26.012 UTC
Routing entry for 192.168.6.0/24
Known via "bgp 65002", distance 20, metric 0
Tag 65001, type external
Installed Sep 14 21:59:19.870 for 00:05:06
Routing Descriptor Blocks
10.1.4.1, from 10.1.4.1, BGP external
Route metric is 0, Wt is 1
No advertising protos. RP/0/RP0/CPU0:R3#show route 192.168.4.0/24
Mon Sep 14 22:03:28.455 UTC
Routing entry for 192.168.4.0/24
Known via "bgp 65001", distance 200, metric 0
Tag 65002, type internal
Installed Sep 14 21:59:26.478 for 00:04:02
Routing Descriptor Blocks
10.0.0.1, from 10.0.0.1
Route metric is 0, Wt is 1
No advertising protos. RP/0/RP0/CPU0:R1#show route 192.168.4.0/24
Mon Sep 14 22:01:40.729 UTC
Routing entry for 192.168.4.0/24
Known via "bgp 65001", distance 20, metric 0
Tag 65002, type external
Installed Sep 14 21:59:33.214 for 00:02:07
Routing Descriptor Blocks
10.1.4.4, from 10.1.4.4, BGP external
Route metric is 0, Wt is 1
No advertising protos. 検証Configおよびshow結果
各STEPで7台すべてから、次のファイルをルータごとに分けて取得しています。検証Configは..._run.txtです(最終状態はSTEP 6のもの)。
| ファイル | 内容 |
|---|---|
..._show.txt | show version / show interface description / show route / show route bgp / show bgp summary / show bgp / show bgp <プレフィックス>(192.168.1.0/24〜192.168.7.0/24)/ show route と show cef の 192.168.6.0/24・192.168.4.0/24 / show bgp neighbors / show bgp update-group / show rpl route-policy / ピアごとのadvertised-routes / routes / received routes。R1〜R3はshow ospf neighbor、観測点(R4・R3・R1)はshow cef exact-routeも |
..._log.txt | そのSTEPの範囲だけに絞ったshow logging。各STEPの開始時にlogmsgでマーカーを入れ、その時刻をshow logging startに指定して取得したもの |
..._run.txt | そのSTEP時点のshow running-config(=そのSTEPの検証Config) |
..._ping.txt | R7の4つの送信元から192.168.6.1へ、R3・R1のLo1/Lo2から192.168.4.1へのping(50発、timeout 1秒)とtraceroute(probe 3) |
..._trace.txt | show bgp trace neighbor / show bgp trace error |
..._commit.cfg | そのSTEPで実際にcommitした設定だけ。 設定を変えたルータの分のみ |
STEP 0:マルチパスなし
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | - |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | - |
| R4 | show | log | run | - | trace | - |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
STEP 1:R4にmaximum-paths ebgp 2
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | - |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | - |
| R4 | show | log | run | - | trace | cfg |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
STEP 2:R4にmultipath-relaxとebgp 3
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | - |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | - |
| R4 | show | log | run | - | trace | cfg |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
STEP 3:R4の入方向でR5経由のLOCAL_PREFを90に
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | - |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | - |
| R4 | show | log | run | - | trace | cfg |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
STEP 4:R3にmaximum-paths ibgp 2
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | - |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | cfg |
| R4 | show | log | run | - | trace | - |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
STEP 5:R1にmaximum-paths eibgp 2
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | cfg |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | - |
| R4 | show | log | run | - | trace | - |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
STEP 6:STEP 1〜5の設定を戻す(最終状態)
| ルータ | show出力 | syslog | running-config | ping | trace | commit |
|---|---|---|---|---|---|---|
| R1 | show | log | run | ping | trace | cfg |
| R2 | show | log | run | - | trace | - |
| R3 | show | log | run | ping | trace | cfg |
| R4 | show | log | run | - | trace | cfg |
| R5 | show | log | run | - | trace | - |
| R6 | show | log | run | - | trace | - |
| R7 | show | log | run | ping | trace | - |
パケットキャプチャーはSTEPごとに、R4-R5間(R5への広告が変わらないことの確認)とR1-R4間で取得しています。
| STEP | R4-R5間 | R1-R4間 |
|---|---|---|
| 0 | pcap | pcap |
| 1 | pcap | pcap |
| 2 | pcap | pcap |
| 3 | pcap | pcap |
| 4 | pcap | pcap |
| 5 | pcap | pcap |
| 6 | pcap | pcap |
参考
| 資料 | タイトル | 概要 |
|---|---|---|
| RFC 4271 | A Border Gateway Protocol 4 (BGP-4) | 9.1.2.2 Loc-RIBに入れる経路は1つ |
| RFC 7911 | Advertisement of Multiple Paths in BGP | ADD-PATH。マルチパスとは層が違う |
| Cisco IOS XE 17.x IP Routing Configuration Guide | BGP Multipath Load Sharing for Both eBGP and iBGP in an MPLS-VPN | eiBGPマルチパスの元の機能。MPLS VPN向けで、IPv4 VRFアドレスファミリーでのみ設定できる |
| Cisco IOS XE 17.x IP Routing Configuration Guide | eiBGP Multipath for Non-VRF Interfaces (IPv4/IPv6) | VRF外への拡張(IOS 15.4(1)T〜)。「顧客サイトのPE 1台だけに設定する。複数台に設定するとPE間でループすることがある」 |
| Cisco ASR 9000 Routing Command Reference, IOS XR 6.4.x | maximum-paths (BGP) | IOS XRではeibgpをVRFの内外どちらのIPv4 / IPv6アドレスファミリーでも設定できる |
| Cisco 8000 BGP Configuration Guide, IOS XR | EIBGP policy-based multipath with equal-cost multipath | IOS XR 7.10.1以降のdefault VRFでのeiBGP。route-policyで候補を絞る前提の機能 |
関連記事
- BGP(Border Gateway Protocol)
- BGPメッセージ
- BGPネイバーの状態遷移
- iBGPとeBGPの違い
- BGP next-hop-self
- BGPルートリフレクタ
- BGPパス属性とベストパス選択
- BGP ORIGIN属性
- BGP AS_PATH属性
- BGP NEXT_HOP属性
- BGP LOCAL_PREF属性
- BGP MED属性
- BGP WEIGHT属性
- BGP COMMUNITY属性
- BGP経路集約(aggregate-address)
- MP-BGP(マルチプロトコル拡張)
- BGP Extended Community(拡張コミュニティ)
- BGPマルチパス(maximum-paths)
- BGPの4バイトAS番号(RFC 6793)
- BGPのプライベートAS番号の除去(remove-private-AS)
- BGPのADD-PATH(RFC 7911)
- BGP PIC(Prefix Independent Convergence)
- BGP Best External(ベストでない外部経路の広告)