BGPルータは接続によって動作が異なります。同一のASで接続する方式はiBGP、異なるASで接続する方式はeBGPになります。
iBGPの特徴
- スプリットホライズンによるループフリー
- 直接接続していないルータ同士の接続が可能 (TTL 225)
スプリットホライズンによるループフリー
AS内の経路のループを防止するために、iBGPで受信した経路はiBGP経路に送信しないスプリットホライズンの仕様となっています。そのためAS内のBGPルータに経路を伝搬させるにはiBGPをフルメッシュで接続する必要があります。
※iBGP内ではフルメッシュ構成ではない接続方式としてiBGP経路を反射(リフレクタ)されるルートリフレクタの方式があります。
フルメッシュの設定ではないため、スプリットホライズンによるAS内で経路が到達できない状態
1 2 3 4 5 6 7 8 9 |
R13#show ip bgp summary BGP router identifier 10.0.0.13, local AS number 10 BGP table version is 9, main routing table version 9 2 networks peaked at 11:04:54 Oct 30 2021 UTC (01:28:15.630 ago) Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.0.12 4 10 141 140 9 0 0 02:03:28 0 R13# |
上記構成では R11とR13間にiBGPの設定がないため、AS10内のiBGPがフルメッシュが未完成の状態です。この構成ではAS20の20.0.0.0/8の経路がR11,R12までは経路が到達していますが、R13には経路を受信していません。
※eBGPからiBGP(R20-->R11-->R12)へは経路を広報します。ポイントはiBGPからiBGP(R11-->R12 STOP R13)の経路広報をしません。
1 2 3 4 5 6 7 8 9 10 11 12 |
R11#show ip bgp 20.0.0.0/8 BGP routing table entry for 20.0.0.0/8, version 2 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 Refresh Epoch 1 20 30.10.20.20 from 30.10.20.20 (20.0.0.20) Origin IGP, metric 0, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0 Updated on Oct 30 2021 10:23:00 UTC R11# |
1 2 3 4 5 6 7 8 9 10 11 |
R12#show ip bgp 20.0.0.0/8 BGP routing table entry for 20.0.0.0/8, version 2 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 20 30.10.20.20 (metric 2) from 10.0.0.11 (10.0.0.11) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0x0 Updated on Oct 30 2021 10:27:13 UTC R12# |
1 2 3 |
R13#show ip bgp 20.0.0.0/8 % Network not in table R13# |
iBGPの接続は直接接続した隣接ルータ以外にも接続が可能です。iBGPのパケットのttlは255となっているため、ルータを超えて(hop)接続することが可能です。上記構成図においてもR11とR13を直接接続するインターフェイスはありませんが、iBGPはR11-R13間でiBGPの接続が可能です。
iBGP間の接続にはloopback間で接続することが一般的です。物理IFでiBGPを設定すると設定したインターフェイスがDownするとiBGPが切断されてしまいます。loopbackを利用することで、IFがDownしても迂回ルートが存在すればiBGPの接続を維持することが可能です。
上記例ではR11のloopbackとR13のloopback間で通信ができる状態(他プロトコルで経路を広報)にする必要があります。上記例ではAS10内の各ルータはOSPFで接続されて、loopback間で通信可能の状態にしています。
1 2 3 4 5 6 7 8 9 10 11 12 |
R11#show ip bgp 20.0.0.0/8 BGP routing table entry for 20.0.0.0/8, version 2 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 Refresh Epoch 1 20 30.10.20.20 from 30.10.20.20 (20.0.0.20) Origin IGP, metric 0, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0 Updated on Oct 30 2021 10:23:00 UTC R11# |
1 2 3 4 5 6 7 8 9 10 11 |
R12#show ip bgp 20.0.0.0/8 BGP routing table entry for 20.0.0.0/8, version 2 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 20 30.10.20.20 (metric 2) from 10.0.0.11 (10.0.0.11) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0x0 Updated on Oct 30 2021 10:27:13 UTC R12# |
1 2 3 4 5 6 7 8 9 10 11 12 |
R13#show ip bgp 20.0.0.0/8 BGP routing table entry for 20.0.0.0/8, version 2 Paths: (1 available, best #1, table default) Flag: 0x100 Not advertised to any peer Refresh Epoch 2 20 30.10.20.20 (metric 3) from 10.0.0.11 (10.0.0.11) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0x0 Updated on Oct 30 2021 11:04:54 UTC R13# |
R11〜R13間にiBGPを接続することで、R13にもAS20からの経路 20.0.0.0/8 を受信することができました。R12,R13ともに経路が受信元(from)は R11(10.0.0.11)となります。
上記構成図のR11-R12のリンクでのR11-R13間のBGPのパケットキャプチャファイル
R11からの送信pktのttlが255 R13からの受信pktのttlが254となっています。(R13はR12を1hopしてttlが1減算されたpktを受信した結果です)
上記構成図のCisco IOS-XEでのConfig例
eBGPの特徴
- AS-PATH を利用したループフリー
- 直接接続している隣接ルータ間しか接続ができない (TTL 1)
AS-PATHを利用したループフリー
eBGPでの経路はeBGPで受信した経路は他のeBGPに送信します。iBGPから受信した経路もeBGPに送信します。
eBGPで経路を送信する際に自身のAS番号をAS-Pathアトリビュートに追加します。経路を受信する際は自身のASが含む経路は廃棄する。廃棄することで経路のループを防ぐことができます。
上記構成図でそれぞれのルータをeBGPで接続しています。今回はループフリー機能を確認するために、R10にR30向けのeBGPのneighborのout向けにroute-mapにてAS Pathを3つ追加(prepend)を実施しています。※AS-Pathの追加はroute-mapで手動で追加することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 |
R10#show ip bgp BGP table version is 2, local router ID is 10.0.0.0 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0 0.0.0.0 0 32768 i R10# |
R10が10.0.0.0/8の経路を生成(NextHop 0.0.0.0)しています。
1 2 3 4 5 6 7 8 9 10 11 12 |
R20#show ip bgp BGP table version is 6, local router ID is 20.0.0.0 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0 10.10.20.10 0 0 10 i R20# |
R20 では 10.0.0.0/8 がAS10がAS_Pathに追加されて AS Path が 10 となります
1 2 3 4 5 6 7 8 9 10 11 12 |
R40#show ip bgp BGP table version is 8, local router ID is 40.0.0.0 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0 20.20.40.20 0 20 10 i R40# |
R40 では 10.0.0.0/8 は AS10 ->AS20 経由でR20から(NextHop 20.20.40.20)の経路を受信しているため R20でAS20が追加されたことで AS Path 20 10 となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
R30#show ip bgp BGP table version is 11, local router ID is 30.0.0.0 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0 30.30.40.40 0 40 20 10 i * 10.10.30.10 0 0 10 10 10 10 i R30# |
R30は 10.0.0.0/8 の経路を R10から(NextHop 10.10.30.10)とR40から(NextHop 30.30.40.40) それぞれ経路を受け取っています。
R10側は route-map で AS-Path を prepend することで AS-Path が 10 10 10 10 となっています。
R40側は AS10 -> A20 -> AS40 を経由しているため、AS-Pathが 40 20 10 となっています。
BGPのベストパスセレクションからBestPath( > )は AS-PATH長が短いR40側(Next 30.30.40.40)を選択しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
R30#show ip bgp neighbors 10.10.30.10 advertised-routes BGP table version is 11, local router ID is 30.0.0.0 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0 30.30.40.40 0 40 20 10 i Total number of prefixes 1 R30# |
R30からR10に向かって送信(advertised-routes)している経路はBestパスとして選択された R40から受信した経路(NextHop 30.30.40.40)をR10に広報しています。
1 2 3 4 |
R10#show ip bgp neighbors 10.10.30.30 route Total number of prefixes 0 R10# |
R10でのR30から受信(route)した経路を確認すると送信側ではR40からの経路を送信していましたが受信側では経路が廃棄されています。これはAS-PATHに自身のAS番号(10)が含まれているため受信時に経路を廃棄したためです。
eBGPで設定したBGPのパケットは TTL を 1として送信します。
eBGPのパケットはttlが1のためiBGPで紹介したようなルータをhopする設定してもルートをhopしたタイミングでttlが1から0に減算されパケットを廃棄(TTL expired)します。したがってeBGPは直接接続したIF間で設定する必要があります。
※ebgp-multihopでttlをデフォルトの1から変更することでiBGPにようにルータをhopして設定することは可能です。
上記パケットキャプチャーファイルにはR10-R30間のeBGPが接続時のBGPのパケットになります。ttlが1になっていることを確認できます。
また、R30から10.0.0.0/8をAS_PathにAS10を含んでupdate(送信)していることが確認できます。上記でも説明しましたが送信側は相手のASを気にせず送信して,受信側(R10)でAS_PATHに10が存在するため廃棄していることがわかります。
上記構成図のCisco IOS-XEでのConfig例
BGP記事一覧
- BGPとは
- BGP Message (メッセージ)
- BGP neighbor 状態
- BGP i-BGP/e-BGP の違い
- BGP next-hop-self
- BGP ルートリフレクタ ( Route-Reflector )
- BGP パスアトリビュート
BGP RFC/関連サイト
- RFC4271 A Border Gateway Protocol 4 (BGP-4)
- RFC6793 BGP Support for Four-Octet Autonomous System (AS) Number Space
- IANA Border Gateway Protocol (BGP) Parameters
BGP参考図書
私が所持しているBGP関連の本を紹介します。ただし絶版になっている本も紹介していますのでご容赦ください。