目次
概要
MPLSのラベルを配布してLSPを確立するためのLDPについて設定ミスと切り分けを行います。
ネットワーク構成
下記のネットワーク構成でMPLSによるラベルスイッチングができるようにします。
設定概要
R1~R3でMPLSに関連する設定の抜粋は次の通りです。これらの設定には、一分設定ミスがあります。
R1
ip cef ! interface Loopback0 ip address 192.168.0.1 255.255.255.255 ! interface Serial1/0 ip address 192.168.12.1 255.255.255.0 encapsulation ppp mpls ip no peer neighbor-route ! router ospf 1 log-adjacency-changes network 192.168.0.0 0.0.255.255 area 0
R2
ip cef ! interface Loopback0 ip address 192.168.0.2 255.255.255.255 ! interface Serial1/0 ip address 192.168.12.2 255.255.255.0 encapsulation ppp no peer neighbor-route ! interface Serial1/1 ip address 192.168.23.2 255.255.255.0 encapsulation ppp mpls ip no peer neighbor-route ! router ospf 1 log-adjacency-changes network 192.168.0.0 0.0.255.255 area 0
R3
ip cef ! interface Loopback0 ip address 192.168.0.3 255.255.255.255 ! interface Serial1/0 ip address 192.168.23.3 255.255.255.0 encapsulation ppp mpls ip no peer neighbor-route ! router ospf 1 log-adjacency-changes network 192.168.0.0 0.0.255.255 area 0
トラブルの症状
R1からR3のLoopback0(192.168.0.3)へパケットを送信するときに付加されるラベルを確認するためにCEFテーブルを見たところ、ラベルの情報がありませんでした。
R1 show ip cef 192.168.0.3
R1#show ip cef 192.168.0.3 192.168.0.3/32, version 21, epoch 0, cached adjacency to Serial1/0 0 packets, 0 bytes tag information set local tag: 20 via 192.168.12.2, Serial1/0, 0 dependencies next hop 192.168.12.2, Serial1/0 valid cached adjacency tag rewrite with Se1/0, point2point, tags imposed: {}
R1からR3のLoopback0(192.168.0.3)への通信はできていますが、ラベルスイッチングではなく通常のIPパケットのスイッチングを行っていることになっています。この原因を調べるために、R1~R3でshow mpls interfaceとshow mpls ldp neighgobrコマンドを実行すると、次のような出力結果になりました。
R1 show mpls interface/show mpls ldp neighbor
R1#show mpls interfaces Interface IP Tunnel Operational Serial1/0 Yes (ldp) No Yes R1#show mpls ldp neighbor
R2 show mpls interface/show mpls ldp neighbor
R2#show mpls interfaces Interface IP Tunnel Operational Serial1/1 Yes (ldp) No Yes R2#show mpls ldp neighbor Peer LDP Ident: 192.168.23.3:0; Local LDP Ident 192.168.0.2:0 TCP connection: 192.168.23.3.39603 - 192.168.0.2.646 State: Oper; Msgs sent/rcvd: 39/42; Downstream Up time: 00:20:25 LDP discovery sources: Serial1/1, Src IP addr: 192.168.23.3 Addresses bound to peer LDP Ident: 192.168.23.3 192.168.0.3
R3 show mpls interface/show mpls ldp neighbor
R3#show mpls interfaces Interface IP Tunnel Operational Serial1/0 Yes (ldp) No Yes R3#show mpls ldp neighbor Peer LDP Ident: 192.168.0.2:0; Local LDP Ident 192.168.23.3:0 TCP connection: 192.168.0.2.646 - 192.168.23.3.39603 State: Oper; Msgs sent/rcvd: 42/40; Downstream Up time: 00:20:56 LDP discovery sources: Serial1/0, Src IP addr: 192.168.23.2 Addresses bound to peer LDP Ident: 192.168.12.2 192.168.23.2 192.168.0.2
問題
- R1とR3間の通信でラベルスイッチングができていない原因はなんですか?
- R1とR3間でラベルスイッチングできるようにするためには、どのように設定を修正すればよいですか?
解答
R1とR3間の通信でラベルスイッチングができていない原因はなんですか?
R2のSerial1/0でLDPが有効化されていないため
R1とR3間でラベルスイッチングできるようにするためには、どのように設定を修正すればよいですか?
R2
interface serial1/0 mpls ip
ワンポイント
- MPLSに限らず基本的なshowコマンドをきちんと確認することが重要!
解説
MPLSによるラベルスイッチングを行うために、ラベルの割り当てと配布を行うためのプロトコルがLDP(Labe Distribution Protocol)です。LDPネイバーを確立した上で、ネイバー間でFEC(Forwarding Equivalent Class)に対してラベルを割り当てて配布します。LDPを有効化するためには、インタフェースコンフィグレーションモードで、次のコマンドを入力します。
(config-if)#mpls ip
LDPネイバーを確立するすべてのインタフェースでLDPを有効化しなければいけません。もし、LDPが有効化されていなければLDPネイバーを確立することができません。すると、ラベルの配布もされずにパケットの転送は、ラベルスイッチングではなくなってしまいます。LDPが有効化されていて、LDPネイバーを確立できているかどうかは、ラベルスイッチングを行う上で、一番基本的でかつ重要です。
インタフェースでLDPが有効化されているかは、show mpls interfaceで確認します。また、LDPネイバーはshow mpls ldp neighborで確認します。今回の問題は、この基本的なLDPの確認コマンドが読めるかどうかにフォーカスしています。R1~R3でshow mpls interfaceとshow mpls ldp neighborの結果を見ていくと、R2の設定ミスがすぐにわかります。
R2 show mpls interface/show mpls ldp neighbor
R2#show mpls interfaces Interface IP Tunnel Operational Serial1/1 Yes (ldp) No Yes R2#show mpls ldp neighbor Peer LDP Ident: 192.168.23.3:0; Local LDP Ident 192.168.0.2:0 TCP connection: 192.168.23.3.39603 - 192.168.0.2.646 State: Oper; Msgs sent/rcvd: 39/42; Downstream Up time: 00:20:25 LDP discovery sources: Serial1/1, Src IP addr: 192.168.23.3 Addresses bound to peer LDP Ident: 192.168.23.3 192.168.0.3
上記のR2のshow mpls interfaceとshow mpls ldp neighborでは、Serial1/1でしかLDPが有効化されていません。そのため、R1とR2の間でLDPネイバーを確立できていないことがわかります。この問題を解決するためには、R2のSerial1/0でもLDPを有効化します。
R2 Se1/0でLDPを有効化
interface serial1/0 mpls ip
R2のSerial1/0でLDPを有効化したあとで、show mpls interfaceとshow mpls ldp neighborを見ると、次のようになります。
R2 show mpls interface/show mpls ldp neighbor
R2#show mpls interfaces Interface IP Tunnel Operational Serial1/0 Yes (ldp) No Yes Serial1/1 Yes (ldp) No Yes R2#show mpls ldp neighbor Peer LDP Ident: 192.168.0.3:0; Local LDP Ident 192.168.0.2:0 TCP connection: 192.168.0.3.30379 - 192.168.0.2.646 State: Oper; Msgs sent/rcvd: 13/13; Downstream Up time: 00:02:16 LDP discovery sources: Serial1/1, Src IP addr: 192.168.23.3 Addresses bound to peer LDP Ident: 192.168.23.3 192.168.0.3 Peer LDP Ident: 192.168.0.1:0; Local LDP Ident 192.168.0.2:0 TCP connection: 192.168.0.1.646 - 192.168.0.2.54171 State: Oper; Msgs sent/rcvd: 11/11; Downstream Up time: 00:00:12 LDP discovery sources: Serial1/0, Src IP addr: 192.168.12.1 Addresses bound to peer LDP Ident: 192.168.12.1 192.168.0.1
R2はR1およびR3とLDPネイバーを確立できていることがわかります。すると、R1、R2、R3の間でそれぞれのFEC(ルーティングテーブルエントリ)に対してラベルの割り当てと配布を行います。
具体的に、ラベルを確認しましょう。R1でR3の192.168.0.3に対するラベルをshow ip cef 192.168.0.3で確認します。
R1から192.168.0.3へ転送するときのラベル
R1#show ip cef 192.168.0.3 192.168.0.3/32, version 22, epoch 0, cached adjacency to Serial1/0 0 packets, 0 bytes tag information set local tag: 20 fast tag rewrite with Se1/0, point2point, tags imposed: {19} via 192.168.12.2, Serial1/0, 0 dependencies next hop 192.168.12.2, Serial1/0 valid cached adjacency tag rewrite with Se1/0, point2point, tags imposed: {19}
R1は、192.168.0.3へパケットを転送するときにラベル19を付けてSerial1/0から出力することが分かります。
このようにMPLS(LDP)の基本的なshowコマンドをしっかりと見ることができれば、単純な設定ミスはすぐに原因がわかるようになります。show running-configだけではなく、各プロトコルに応じた適切なshowコマンドを把握しておくことはとても重要です。
本題からそれますが、もう少しラベルスイッチングの動作を確認しておきましょう。
R2はラベル19が付加されているパケットをラベルスイッチングします。どのようにラベルスイッチングするかは、show mpls forwarding-tableでLFIBテーブルを見るとわかります。
R2 show mpls forwarding-table
R2#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 18 Pop tag 192.168.0.1/32 0 Se1/0 point2point 19 Pop tag 192.168.0.3/32 0 Se1/1 point2point
R2はラベル19が付加されているパケットを受信すると、ラベルを取り除いて(Pop tagSerial1/1から出力します。R3にはラベルが付加されていない通常のIPパケットが届くことになります。R2でラベルを取り除く動作をPHP(Penultimate Hop Popping)と呼びます。
次の図は、R1からR3の192.168.0.3へパケットを転送していく様子を図にしたものです。
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