ISPの接続先変更などで、AS番号を変更したい場合を想定します。BGPでは、neighborコマンドでネイバー接続先のAS番号をスタティックで設定をしていますので、AS番号が変更になった場合は、そのASとネイバー関係にあるルータの設定を変更する必要があります。
ただし、ルータの設定変更ができない場合を想定して、local-asという設定があります。local-asを使用することで、本来のAS番号とは違うAS番号を使用して、BGPネイバーを確立することができます。
local-as 設定
Local-AS設定は、ネットワークのAS番号を変更する際、隣接ルータに影響を与えずにBGPネイバー関係を維持する手法です
例えば、以下の構成で、R1のAS番号がもともとのAS番号 1からAS番号100に変更したいとします。ただし、R2の設定変更はできません。この場合、R1でlocal-asを使用することで、R1の実際のAS番号は100ですが、ネイバー確立には、AS番号1を引き続き使用することができます。
まず、R1では、router bgpコマンドで、実際のAS番号100を指定し、neighborコマンドのlocal-asで旧のAS番号1を設定します。R2はR1のAS番号1とEBGPネイバー設定をします。
R1(config)# router bgp 100 R1(config-router)# network 1.1.1.1 mask 255.255.255.255 R1(config-router)# neighbor 192.168.12.2 remote-as 2 R1(config-router)# neighbor 192.168.12.2 local-as 1
R2(config)# router bgp 2 R2(config-router)# network 2.2.2.2 mask 255.255.255.255 R2(config-router)# neighbor 192.168.12.1 remote-as 1
これで、R1とR2でEBGPネイバーが確立できます。
R1のBGPテーブルを見ると、2.2.2.2/32のAS-PATHは 1 2 であることが確認できます。 つまり、local-asで指定したAS番号1もAS-PATHに含まれます。
R1# show ip bgp 2.2.2.2
BGP routing table entry for 2.2.2.2/32, version 5
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
1 2
192.168.12.2 from 192.168.12.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, external, best
R2# show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
1 100
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
no-prepend オプション
local-asにno-prependオプションを使用することで、R1はR2からのルートにlocal-asで設定したAS(今回はAS番号1)をプリペンドしません。
R1(config)# router bgp 100 R1(config-router)# neighbor 192.168.12.2 local-as 1 no-prepend R1(config-router)# %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Down Local AS change %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.12.2 IPv4 Unicast topology base removed from session Local AS change %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up
no-prependオプションを設定すると、一度、ネイバーが切断されます。 R1でBGPテーブルを確認します。
R1# show ip bgp 2.2.2.2
BGP routing table entry for 2.2.2.2/32, version 7
Paths: (1 available, best #1, table default)
Flag: 0x820
Not advertised to any peer
Refresh Epoch 1
2
192.168.12.2 from 192.168.12.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, external, best
AS-PATHが2のみとなり、AS番号1が消えていることが確認できます。
R2のBGPテーブルはno-prependのオプションあり、なしによる変更はありません。
R2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 9
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
1 100
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
no-prepend + replace-as オプション
no-prependと加え、replace-asを設定することで、R2から見ると、実際のAS(今回はAS番号100)をAS-PATHから外すことができます。
R1(config)# router bgp 100 R1(config-router)# neighbor 192.168.12.2 local-as 1 no-prepend replace-as %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Down Local AS change %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.12.2 IPv4 Unicast topology base removed from session Local AS change R1(config-router)# %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up
設定すると、一度、ネイバーが切断されます。R1のBGPテーブルを確認すると、no-prependオプションのみの時と変更ありません。
R1# show ip bgp 2.2.2.2
BGP routing table entry for 2.2.2.2/32, version 9
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
2
192.168.12.2 from 192.168.12.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, external, best
R2のBGPテーブルを見ると、1.1.1.1/32へのAS-PATHは実際のAS番号であるAS 100が消えており、R1のloca-asで設定したAS番号1のみとなります。
R2# show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 11
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
1
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
no-prepend + replace-as + dual-as オプション
さらに、dual-asを設定することで、R2はR1のloca-asで設定したAS番号1と実際のAS番号100のどちらでもEBGPネイバーを確立することができます。
R1(config)# router bgp 100 R1(config-router)# neighbor 192.168.12.2 local-as 1 no-prepend replace-as dual-as %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Down Local AS change %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.12.2 IPv4 Unicast topology base removed from session Local AS change %BGP-3-NOTIFICATION: received from neighbor 192.168.12.2 active 2/2 (peer in wrong AS) 2 bytes 0064 R1(config-router)# %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.12.2 IPv4 Unicast topology base removed from session BGP Notification received R1(config-router)# %BGP-5-ADJCHANGE: neighbor 192.168.12.2 Up
設定すると、一度、ネイバーが切断されます。
R1とR2のBGPテーブルを見ると、 no-prepend + replace-as オプションの時と変更はありません。
R1# show ip bgp 2.2.2.2
BGP routing table entry for 2.2.2.2/32, version 11
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
2
192.168.12.2 from 192.168.12.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, external, best
R2# show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 13
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
1
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
現在は、R2はR1をAS番号1として、EBGPネイバーを確立しています。これを実際のAS番号100でEBGPネイバーを確立するよう設定変更します。
R2(config)# router bgp 2 R2(config-router)# no neighbor 192.168.12.1 remote-as 1 R2(config-router)# %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.12.1 IPv4 Unicast topology base removed from session Neighbor deleted %BGP-5-ADJCHANGE: neighbor 192.168.12.1 Down Neighbor deleted R2(config-router)# neighbor 192.168.12.1 remote-as 100 R2(config-router)# %BGP-5-ADJCHANGE: neighbor 192.168.12.1 Up
ネイバーが確立できました。R1、R2のBGPテーブルを確認します。
R2のBGPテーブルで、1.1.1.1/32のAS-PATHで、AS番号1から100に変更されていることが確認できます。
R1# show ip bgp 2.2.2.2
BGP routing table entry for 2.2.2.2/32, version 13
Paths: (1 available, best #1, table default)
Flag: 0x820
Not advertised to any peer
Refresh Epoch 1
2
192.168.12.2 from 192.168.12.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, external, best
R2# show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 15
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
100
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
まとめ
本記事では、BGPのLocal-AS設定を利用してAS番号を変更する際に役立つ方法を解説しました。AS番号の変更はネットワークの再編成やISPの切り替え時に必要ですが、全てのネイバーに対して設定変更を強いることが難しい場合があります。このようなケースで、Local-AS設定を活用することで、既存のAS番号を引き続き使用しつつ、段階的に新しいAS番号へ移行することができます。
さらに、no-prepend、replace-as、dual-asといったオプションを組み合わせることで、AS-PATHの操作や複数AS番号でのネイバー確立が可能となり、ネットワーク管理が柔軟になります。
- Local-AS:既存のAS番号を保持しつつBGPネイバーを確立
- no-prepend:AS番号をAS-PATHに追加しない
- replace-as:新しいAS番号をAS-PATHから除外
- dual-as:複数のAS番号でのネイバー確立を可能にする
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント