目次
概要
トランジットASでは、すべてのルータでBGPを有効化してIBGPネイバーをフルメッシュで確立する必要があります。MPLSを利用すれば、AS境界のルータでのみBGPを有効化してIBGPネイバーを確立するだけでOKです。MPLSを利用した拡張性が高いトランジットASの設定と確認を行います。
関連記事
ネットワーク構成
図のAS1234をトランジットASとして設定します。それによって、AS100とAS200間の通信ができるように設定します。
各ルータのIPアドレスを次の表にまとめています。また、AS1234内はEIGRP AS1でルーティングを行っています。
ルータ | インタフェース | IPアドレス |
R1 | Fa0/0.12 | 192.168.12.1/24 |
Lo0 | 1.1.1.1/32 | |
R2 | Fa0/0.12 | 192.168.12.2/24 |
Fa0/0.23 | 192.168.23.2/24 | |
Lo0 | 2.2.2.2/32 | |
R3 | Fa0/0.23 | 192.168.23.3/24 |
Fa0/0.34 | 192.168.34.3/24 | |
Lo0 | 3.3.3.3/32 | |
R4 | Fa0/0.34 | 192.168.34.4/24 |
Lo0 | 4.4.4.4/32 |
設定と確認
Step1. BGPネイバーの設定
AS1234をトランジットASにするために、次の図のようにBGPネイバーを設定します。AS1234では、AS境界のR1とR4でのみBGPを有効にしてIBGPネイバーとします。
R1 BGPネイバーの設定
router bgp 1234 no synchronization bgp log-neighbor-changes neighbor 4.4.4.4 remote-as 1234 neighbor 4.4.4.4 update-source Loopback0 neighbor 4.4.4.4 next-hop-self neighbor 15.15.15.5 remote-as 100
R4 BGPネイバーの設定
router bgp 1234 no synchronization bgp log-neighbor-changes neighbor 1.1.1.1 remote-as 1234 neighbor 1.1.1.1 update-source Loopback0 neighbor 1.1.1.1 next-hop-self neighbor 46.46.46.6 remote-as 200
R5 BGPネイバーの設定
router bgp 100 bgp log-neighbor-changes network 100.100.1.0 mask 255.255.255.0 network 100.100.2.0 mask 255.255.255.0 neighbor 15.15.15.1 remote-as 1234
R6 BGPネイバーの設定
router bgp 200 bgp log-neighbor-changes network 200.200.1.0 network 200.200.2.0 neighbor 46.46.46.4 remote-as 1234
Step2. AS100からAS200への通信の確認
R1とR4でno synchronizationになっているので、AS100とAS200のルート情報がお互いにAS1234を経由して交換できています。たとえば、R5でルーティングテーブルみると、次のようにAS200のルート200.200.1.0/24と200.200.2.0/24が存在しています。
R5 ルーティングテーブル
R5#show ip route ~省略~ 100.0.0.0/24 is subnetted, 2 subnets C 100.100.1.0 is directly connected, Loopback0 C 100.100.2.0 is directly connected, Loopback1 4.0.0.0/32 is subnetted, 1 subnets B 200.200.1.0/24 [20/0] via 15.15.15.1, 01:29:44 B 200.200.2.0/24 [20/0] via 15.15.15.1, 01:29:44 15.0.0.0/24 is subnetted, 1 subnets C 15.15.15.0 is directly connected, Ethernet0
ところが、AS100からAS200へパケットを送信すると、そのパケットは途中で破棄されます。R5で送信元IPアドレスを100.100.1.5として、200.200.1.6へPingすると次のようになります。
R5からR6へPing
R5#ping Protocol [ip]: Target IP address: 200.200.1.6 Repeat count [5]: Datagram size [100]: Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 100.100.1.5 ~省略~ Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 200.200.1.6, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
この原因はAS1234ではR1とR4しかトランジット対象のルートを学習できていないからです。R2やR3にはトランジット対象のAS100、AS200のルート情報が存在しません。ルート情報が存在しなければ、パケットをルーティングできずに破棄します。R2でICMPパケットをデバッグするとよくわかります。
R2でICMPパケットのデバッグ
R2(config)#access-list 100 permit ip any 200.200.0.0 0.0.255.255 R2(config)#end R2#debug ip packet 100 IP packet debugging is on for access list 100 03:41:58: IP: s=100.100.2.5 (FastEthernet0/0.12), d=200.200.2.6, len 100, unroutable 03:42:00: IP: s=100.100.2.5 (FastEthernet0/0.12), d=200.200.2.6, len 100, unroutable 03:42:02: IP: s=100.100.2.5 (FastEthernet0/0.12), d=200.200.2.6, len 100, unroutable 03:42:04: IP: s=100.100.2.5 (FastEthernet0/0.12), d=200.200.2.6, len 100, unroutable 03:42:06: IP: s=100.100.2.5 (FastEthernet0/0.12), d=200.200.2.6, len 100, unroutable
トランジットAS内のルータがトランジット対象のルートを学習するためには、すべてのルータでBGPを有効にして、IBGPフルメッシュの構成にする必要があります。ですが、今の状態はAS境界ルータのR1とR4のみでBGPを有効にして、IBGPネイバーとしています。
AS100-AS200間のパケットをきちんとトランジットするためには、R2やR3でもBGPを有効にしてR1~R4でフルメッシュIBGPの設定をことでも可能です。もっと簡単にAS100-AS200 間のパケットをトランジットするためには、AS1234内でMPLSによるラベルスイッチングを有効化します。
Step3. AS1234内でMPLSの有効化
AS1234をトランジットASになるようにMPLSを有効化します。
R1 MPLSを有効化
int fa 0/0.12 mpls ip
R2 MPLSを有効化
int fa 0/0.12 mpls ip ! int fa 0/0.23 mpls ip
R3 MPLSを有効化
int fa 0/0.23 mpls ip ! int fa 0/0.34 mpls ip
R4 MPLSを有効化
int fa 0/0.34 mpls ip
Step4. 再度、AS100からAS200への通信
AS1234でMPLSを有効化した後、再度AS100からAS200へパケットを送信します。R5で送信元IPアドレスを100.100.1.5として、200.200.1.6へPingすると次のようになります。
R5からR6へPing
R5#ping Protocol [ip]: Target IP address: 200.200.1.6 Repeat count [5]: Datagram size [100]: Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 100.100.1.5 ~省略~ Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 200.200.1.6, timeout is 2 seconds: !!!!!
AS1234内でMPLSを有効にすると、R2とR3はAS100やAS200のルートを学習していないのに、パケットを転送することができるようになります。これは、R2やR3はルーティングではなく、ラベルスイッチングによりR1からR4へとAS100-AS200間のパケットを転送しているからです。R2やR3は、ルーティングテーブルに他のASのルートを保持する必要がないので、メモリやCPUの負荷を少なくすることが可能です。
Step5. BGPルートに対するラベルの確認
R1でBGPルートに対するラベルを確認しましょう。FIBテーブル内の200.200.1.0/24の情報をみると次のようになります。
R1 FIBテーブル 200.200.1.0/24
R1#show ip cef 200.200.1.0 200.200.1.0/24, version 19, cached adjacency 192.168.12.2 0 packets, 0 bytes tag information from 4.4.4.4/32, shared local tag: 18 fast tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {18} via 4.4.4.4, 0 dependencies, recursive next hop 192.168.12.2, FastEthernet0/0.12 via 4.4.4.4/32 valid cached adjacency tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {18}
すると、R1では200.200.1.0/24に対するラベル情報として、4.4.4.4/32のラベル情報を共有していることがわかります。BGPルートを利用して転送するパケットは、すべて同じようにBGPルートのネクストホップへと転送されます。そのため、BGPルートに対してはネクストホップのIPアドレスに対するラベル情報を共有しています。
R1は200.200.1.6あてのパケットを受信すると、そのパケットにラベル18を付加してFa0/0.12へと転送します。R2およびR3はFIBテーブルではなくLFIBテーブルのみを参照してラベルスイッチを行いR4まで転送します。そして、R4からR6へパケットを転送することでAS1234を経由してAS100-AS200間の通信が可能になっています。
このWebページで解説したMPLSによるトランジットASの構築の続きとして、トランジットAS内でルート集約をしてしまったときの影響について、動画解説をYoutubeでアップロードしています。
MPLS/MPLS-VPN
- MPLSラベルスイッチングの設定と確認コマンド[Cisco]
- MPLSによるラベルスイッチングの設定例 [Cisco]
- MPLSによるトランジットASの構成
- MPLS 設定ミスの切り分けと修正 Part1
- MPLS 設定ミスの切り分けと修正 Part2
- MPLS-VPNの設定例 フルメッシュ(Any-to-Any)
- MPLS-VPNの設定例 エクストラネットVPN
- MPLS-VPNの設定例 セントラルサービスVPN
- MPLS-VPNの設定例 ハブ&スポークVPN
- OSPF Sham-linkの概要
- OSPF Sham-linkの設定
- MPLS-VPN 設定ミスの切り分けと修正 Part1
- MPLS-VPN 設定ミスの切り分けと修正 Part2
- MPLS-VPN 設定ミスの切り分けと修正 Part3
- MPLS-VPN 設定ミスの切り分けと修正 Part4
- MPLS-VPN 設定ミスの切り分けと修正 Part5
- MPLS-VPN 設定ミスの切り分けと修正 Part6