概要

基本的なMPLSによるラベルスイッチングの設定を行います。ルーティングテーブルをもとにMPLSラベルが割り当てられて、FIB/LFIBテーブルに基づいてパケットを転送する様子を確認します。

ネットワーク構成

MPLSの基本的なラベルスイッチングの設定とその動作を確認します。次のネットワーク構成でMPLSによるラベルスイッチングを行います。

図 ネットワーク構成
図 ネットワーク構成

各ルータのIPアドレスの設定は次の通りです。

ルータインタフェースIPアドレス
R1Fa0/0.12192.168.12.1/24
Lo01.1.1.1/32
R2Fa0/0.12192.168.12.2/24
Fa0/0.23192.168.23.2/24
Lo02.2.2.2/32
R3Fa0/0.23192.168.23.3/24
Fa0/0.34192.168.34.3/24
Lo03.3.3.3/32
R4Fa0/0.34192.168.34.4/24
Lo04.4.4.4/32
表 各ルータのIPアドレス


また、R1~R4でルーティングプロトコルEIGRP AS1を動作させて、ルーティングができるようにしています。

設定と確認

Step1. MPLSの有効化

IPルーティングが完了している状態でMPLSによるラベルスイッチングの設定は、以下の2つを行います。

  • CEFの有効化
  • インタフェースでLDP or TDPの有効化

R1~R4でのMPLSによるラベルスイッチングの設定は次の通りです。

R1 MPLSの有効化

ip cef
!
interface fastethernet 0/0.12
 mpls ip

R2 MPLSの有効化

ip cef
!
interface fastethernet 0/0.12
 mpls ip
!
interface fastethernet 0/0.23
 mpls ip

R3 MPLSの有効化

ip cef
!
interface fastethernet 0/0.23
 mpls ip
!
interface fastethernet 0/0.34
 mpls ip

R4 MPLSの有効化

ip cef
!
interface fastethernet 0/0.34
 mpls ip

Step2. MPLSのインタフェース、LDPネイバーの確認

R1~R4でのMPLSの設定とLDPネイバーを確認します。show mpls interfaceによって、ラベルスイッチングが有効になっているインタフェースを確認することができます。つまり、mpls ipコマンドを入力したインタフェースがわかります。また、show mpls ldp neighborによって、LDPネイバーを確認することができます。R1のshow mpls interface、show mpls ldp neighborコマンドの例は次のようになります。

R1 show mpls interface/show mpls ldp neighbor

R1#sh mpls interfaces
Interface              IP            Tunnel   Operational
FastEthernet0/0.12     Yes (ldp)     No       Yes
R1#show mpls ldp neighbor
    Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 1.1.1.1:0
        TCP connection: 2.2.2.2.43869 - 1.1.1.1.646
        State: Oper; Msgs sent/rcvd: 12/11; Downstream
        Up time: 00:01:31
        LDP discovery sources:
          FastEthernet0/0.12, Src IP addr: 192.168.12.2
        Addresses bound to peer LDP Ident:
          192.168.12.2    192.168.23.2    2.2.2.2

Step3. LIBテーブルの確認

各ルータは、ルーティングテーブルのエントリごとにローカルにラベルを割り当て、LDPネイバーにアドバタイズします。ローカルに割り当てたり、LDPネイバーから受信したラベル情報はLIBテーブルに保存されます。LIBテーブルの確認には、show mpls ldp bindingsコマンドを使います。R1のLIBテーブルは次のようになります。

R1 show mpls ldp bindings

R1#show mpls ldp bindings
  tib entry: 1.1.1.1/32, rev 4
local binding:  tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag: 16
  tib entry: 2.2.2.2/32, rev 6
local binding:  tag: 16
remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 3.3.3.3/32, rev 8
local binding:  tag: 17
remote binding: tsr: 2.2.2.2:0, tag: 17
  tib entry: 4.4.4.4/32, rev 10
local binding:  tag: 18
remote binding: tsr: 2.2.2.2:0, tag: 18
  tib entry: 192.168.12.0/24, rev 2
local binding:  tag: imp-null
remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 192.168.23.0/24, rev 12
local binding:  tag: 19
remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 192.168.34.0/24, rev 14
local binding:  tag: 20
remote binding: tsr: 2.2.2.2:0, tag: 19

1.1.1.1/32に対するラベルに注目してみます。このルートはR1に直接接続されているネットワークです。PHPの動作のため、直接接続されているネットワークに対してImplicit Nullのラベルを割り当てて、ネイバーに対してラベルを外すように通知しています。また、LDPネイバー2.2.2.2から1.1.1.1/32に対するラベルとして16を受信していることがわかります。

図 R1-R2間のラベル配布の例
図 R1-R2間のラベル配布の例

Step4. LFIBテーブルの確認

ローカルおよびリモートLSRで割り当てられたラベルを元にして、LFIBテーブルを作成します。LSRはラベル付きのパケットを受信すると、LFIBテーブルに従ってラベルの処理を行い、パケットを転送します。LFIBテーブルを確認するには、show mpls forwarding-tableコマンドを使います。R1でのLFIBテーブルは次のようになっています。

R1 LFIBテーブル show mpls forwarding-table

R1#show mpls forwarding-table 
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    
tag    tag or VC   or Tunnel Id      switched   interface              
16     Pop tag     2.2.2.2/32        0          Fa0/0.12   192.168.12.2 
17     17          3.3.3.3/32        0          Fa0/0.12   192.168.12.2 
18     18          4.4.4.4/32        0          Fa0/0.12   192.168.12.2 
19     Pop tag     192.168.23.0/24   0          Fa0/0.12   192.168.12.2 
20     19          192.168.34.0/24   0          Fa0/0.12   192.168.12.2

Step5. FIBテーブルの確認

CEFによるパケットスイッチングでは、FIBテーブルを参照してIPパケットを転送します。MPLSが有効になっている場合、FIBテーブルにラベル情報も含まれるようになります。FIBテーブルを確認するには、show ip cefコマンドを使います。なお、FIBテーブルに含まれるラベル情報を参照するには、show ip cef detailコマンドを使います。たとえば、R1ではFIBテーブルは次のようになります。

R1 show ip cef

R1#show ip cef 
Prefix              Next Hop             Interface
0.0.0.0/32          receive
1.1.1.1/32          receive
2.2.2.2/32          192.168.12.2         FastEthernet0/0.12
3.3.3.3/32          192.168.12.2         FastEthernet0/0.12
4.4.4.4/32          192.168.12.2         FastEthernet0/0.12
192.168.12.0/24     attached             FastEthernet0/0.12
192.168.12.0/32     receive
192.168.12.1/32     receive
192.168.12.2/32     192.168.12.2         FastEthernet0/0.12
192.168.12.255/32   receive
192.168.23.0/24     192.168.12.2         FastEthernet0/0.12
192.168.34.0/24     192.168.12.2         FastEthernet0/0.12
224.0.0.0/4         drop
224.0.0.0/24        receive
255.255.255.255/32  receive
R1#show ip cef detail 
IP CEF with switching (Table Version 12), flags=0x0
  12 routes, 0 reresolve, 0 unresolved (0 old, 0 new), peak 0
  15 leaves, 23 nodes, 25720 bytes, 15 inserts, 0 invalidations
  0 load sharing elements, 0 bytes, 0 references
  universal per-destination load sharing algorithm, id BCB9E1FF
  2(0) CEF resets, 0 revisions of existing leaves
  Resolution Timer: Exponential (currently 1s, peak 1s)
  0 in-place/0 aborted modifications
  refcounts:  810 leaf, 813 node

Adjacency Table has 2 adjacencies
0.0.0.0/32, version 0, receive
1.1.1.1/32, version 4, connected, receive
  tag information set
    local tag: implicit-null
2.2.2.2/32, version 6, cached adjacency 192.168.12.2
0 packets, 0 bytes
  tag information set
    local tag: 16
  via 192.168.12.2, FastEthernet0/0.12, 0 dependencies
    next hop 192.168.12.2, FastEthernet0/0.12
    valid cached adjacency
    tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {}
3.3.3.3/32, version 7, cached adjacency 192.168.12.2
0 packets, 0 bytes
  tag information set
    local tag: 17
    fast tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {17}
  via 192.168.12.2, FastEthernet0/0.12, 0 dependencies
    next hop 192.168.12.2, FastEthernet0/0.12
    valid cached adjacency
    tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {17}
4.4.4.4/32, version 8, cached adjacency 192.168.12.2
0 packets, 0 bytes
  tag information set
    local tag: 18
    fast tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {18}
  via 192.168.12.2, FastEthernet0/0.12, 0 dependencies
    next hop 192.168.12.2, FastEthernet0/0.12
    valid cached adjacency
    tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {18}
~省略~

show ip cef detailの4.4.4.4/32の情報について注目すると、ローカルタグとLDPネイバーであるR2から受信したラベル情報が含まれていることがわかります。R1は、4.4.4.4あてのIPパケットを受信すると、この情報に基づいてラベル18を付加してFa0/0.12から出力します。

Step6. R1から4.4.4.4/32までのLSPの確認

MPLSによってR1からR4の間でラベルスイッチによるパケット転送が可能です。どのようにIPパケットにラベルが付加されて転送されていくかという
LSP(Label Switched Path)を確認してみましょう。R1からR4の4.4.4.4へIPパケットが転送されていく経路をみることにします。

R1はMPLSネットワークとIPネットワークの境界にあたるエッジLSRです。そのため、R1にはラベルがついていない通常のIPパケットが届くはずです。通常のIPパケットを転送するには、FIBテーブルを参照します。R1で4.4.4.4/32に対するFIBテーブルのエントリは次のようになっています。

R1 4.4.4.4/32に対するFIBテーブルエントリ

R1#show ip cef 4.4.4.4 
4.4.4.4/32, version 8, cached adjacency 192.168.12.2
0 packets, 0 bytes
  tag information set
    local tag: 18
    fast tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {18}
  via 192.168.12.2, FastEthernet0/0.12, 0 dependencies
    next hop 192.168.12.2, FastEthernet0/0.12
    valid cached adjacency
    tag rewrite with Fa0/0.12, 192.168.12.2, tags imposed: {18}

Step5でも確認しましたが、R1は4.4.4.4あてのIPパケットにラベル18を付加して、Fa0/0.12から出力することがわかります。

図 R1でのパケット転送
図 R1でのパケット転送

ラベルが付加されたパケットはR2に届きます。R2ではLFIBテーブルによってラベル付きパケットを転送することになります。R2のLFIBテーブルは次の通りです。

R2 LFIBテーブル

R2#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    
tag    tag or VC   or Tunnel Id      switched   interface              
16     Pop tag     1.1.1.1/32        0          Fa0/0.12   192.168.12.1 
17     Pop tag     3.3.3.3/32        0          Fa0/0.23   192.168.23.3 
18     19          4.4.4.4/32        0          Fa0/0.23   192.168.23.3 
19     Pop tag     192.168.34.0/24   0          Fa0/0.23   192.168.23.3

R2のLFIBテーブルから、ラベル18が付加されているパケットはラベル19に書き換えてFa0/0.23から出力することがわかります。

図 R2でのパケット転送
図 R2でのパケット転送

R2でラベル19に書き換えられたパケットはR3に届きます。R3ではLFIBテーブルによってそのパケットを転送します。R3のLFIBテーブルは次の通りです。

R3 LFIBテーブル

R3#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    
tag    tag or VC   or Tunnel Id      switched   interface              
16     Pop tag     192.168.12.0/24   0          Fa0/0.23   192.168.23.2 
17     16          1.1.1.1/32        0          Fa0/0.23   192.168.23.2 
18     Pop tag     2.2.2.2/32        0          Fa0/0.23   192.168.23.2 
19     Pop tag     4.4.4.4/32        0          Fa0/0.34   192.168.34.4

R3ではラベル19が付加されているパケットは、ラベルを取り除いて(Popして)Fa0/0.34に転送することがわかります。ラベルを取り除くのは、PHP(Penultimate Hop Popping)のためです。4.4.4.4へのLSPの最後から2番目のルータでR3がラベルを取り除くことで、LSPの最後のルータであるR4での余分なテーブルの検索を防ぎます。

図 R3でのパケット転送
図 R3でのパケット転送

R4には通常のIPパケットが届きます。そのため、R4はFIBテーブルを参照して自身のLoopback0のインタフェースへパケットをルーティングします。

R4 FIBテーブル

R4#show ip cef 4.4.4.4
4.4.4.4/32, version 4, connected, receive
  tag information set
    local tag: implicit-null

図 R4でのパケット転送
図 R4でのパケット転送