MPLSのトラブル その2 解答と解説 【CCIEレベル】

解答

・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 Serial1/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 tag
Serial1/1から出力します。R3にはラベルが付加されていない通常のIPパケットが届くことになります。

※R2でラベルを取り除く動作をPHP(Penultimate Hop Popping)と呼びます。

次の図は、R1からR3の192.168.0.3へパケットを転送していく様子を図にしたものです。

mpls03.jpg
図 R1から192.168.0.3へのパケット転送

Follow me!