概要

MPLSのラベルを配布してLSPを確立するためのLDPについて設定ミスと切り分けを行います。

ネットワーク構成

下記のネットワーク構成でMPLSによるラベルスイッチングができるようにします。

図 MPLS 設定ミスの切り分けと修正 Part2 ネットワーク構成
図 MPLS 設定ミスの切り分けと修正 Part2 ネットワーク構成

設定概要

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を有効化するためには、インタフェースコンフィグレーションモードで、次のコマンドを入力します。

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へパケットを転送していく様子を図にしたものです。

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