LDP(Label Distribution Protocol)をざっくりと - 超概要と基本設定-
ldp はアプリケーション層のプロトコル。
MPLS網内のLSR間でラベル配布をする際に使う。
TCP/UDP 646port を使用する。
MPLSの前提としてIP到達性が必要なため、OSPFなどのIGPを用いてIPルーティングを確立しておく必要あり。
ldp router-id として、ふつうloopbackを使用するため当然MPLS網内のIGPでloopback addressも広報する必要がある。
a) ldp discover によりネイバー検出
neighbor discover message に (224.0.0.2) を使用する
b) TCPコネクションの確立
source:local ldp router-id , dest:remote ldp router-id
※ldp router間でIP到達性が必要
c) ldpセッションの確立
d) ラベル情報の交換
ラベルは 0 ~ 1048575 まで使用される。 0 ~ 15 は予約済み。16から振られるローカルな値。
★router-id についての補足
明示的に指定しない場合は当該ルータ上の一番大きい物理IFのアドレスがrouter-idとなる。
ただし、loopback IFを設定している場合は loopback IFが優先される。
★configuration
config)# ip cef config)# mpls ldp router-id loopback 0 !! いちお明示的に指定しとく config-if)# mpls ip !! MPLS網に参加するIFで設定する !! loopbackIFでは不要
設定するだけなら超簡単!ヾ( *`ω´)ノヒャッホーイ♪
★おまけ
ラベルプロトコルはデフォルトで ldp が使われる。
変更する場合、IF個別またはグローバル設定が可能。
config)# mpls label protocol [ ldp | tdp ] config-if)# mpls label protocol [ ldp | tdp | both ]
ネイバーup時のコンソールログ
================================================================================ *Jan 10 15:34:07.279: %LDP-5-NBRCHG: LDP Neighbor 10.10.10.1:0 (2) is UP !! ネイバーのroute-idが表示される ================================================================================
ネイバーup時のデバッグ
# debug mpls events ================================================================================ R4(config-if)#int e1/1 R4(config-if)#mpls ip R4(config-if)# *Jan 10 15:33:58.751: mpls: Add mpls app; Ethernet1/1 *Jan 10 15:33:58.751: mpls: Add mpls app; i/f status change; Ethernet1/1 *Jan 10 15:33:58.751: ldp: enabling ldp on Ethernet1/1 *Jan 10 15:33:58.755: ldp: ldp start; tbl 0 *Jan 10 15:33:58.755: ldp: i/f status change: Ethernet1/1; cur/des flags 0x2/0x2mcast 1 *Jan 10 15:33:58.755: ldp: enable lsd i/f Ethernet1/1 *Jan 10 15:33:58.775: tagcon: enable dynamic mpls; tbl 0 ================================================================================
ldpネイバーの確認
# show mpls ldp neighbor
allつけても出力かわらんくね?(・∀・)? なんなんなん!
================================================================================
R5#sh mpls ldp nei all
Peer LDP Ident: 10.10.10.3:0; Local LDP Ident 10.10.10.6:0
TCP connection: 10.10.10.3.646 - 10.10.10.6.55877
State: Oper; Msgs sent/rcvd: 26/26; Downstream
Up time: 00:11:39
LDP discovery sources:
Ethernet1/1, Src IP addr: 10.1.1.21
Addresses bound to peer LDP Ident:
10.1.1.21 10.1.1.9 10.1.1.6 10.10.10.3
R5#
R5#sh mpls ldp nei
Peer LDP Ident: 10.10.10.3:0; Local LDP Ident 10.10.10.6:0
TCP connection: 10.10.10.3.646 - 10.10.10.6.55877
State: Oper; Msgs sent/rcvd: 26/26; Downstream
Up time: 00:11:41
LDP discovery sources:
Ethernet1/1, Src IP addr: 10.1.1.21
Addresses bound to peer LDP Ident:
10.1.1.21 10.1.1.9 10.1.1.6 10.10.10.3
R5#
================================================================================LIBテーブルの確認
# show mpls ldp binding
================================================================================
R4#sh mpls ldp bind
lib entry: 10.1.1.0/30, rev 2
local binding: label: 16
remote binding: lsr: 10.10.10.2:0, label: imp-null
remote binding: lsr: 10.10.10.1:0, label: imp-null
remote binding: lsr: 10.10.10.6:0, label: 16
================================================================================LFIBテーブルの確認
# show mpls forwarding-table ================================================================================ R1#sh mpls for Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or VC or Tunnel Id Switched interface 16 Pop Label 10.1.1.0/30 0 Et1/0 10.1.1.13 17 Pop Label 10.1.1.4/30 0 Et1/0 10.1.1.13 18 16 10.1.1.8/30 0 Et1/0 10.1.1.13 19 17 10.1.1.20/30 0 Et1/0 10.1.1.13 20 Pop Label 10.10.10.1/32 0 Et1/0 10.1.1.13 21 18 10.10.10.2/32 0 Et1/0 10.1.1.13 22 19 10.10.10.3/32 0 Et1/0 10.1.1.13 23 21 10.10.10.6/32 0 Et1/0 10.1.1.13 ================================================================================
MPLS関連コマンド -超基本確認コマンド4つ-
MPLSで使われる4つのテーブルの状態確認コマンド
★コントロールプレーン
# show ip route !! ルーティングテーブル ※ルーティングプロトコルの設定により作成される。 # show mpls ldp binding !! LIBテーブル ※LDPの設定により作成される。
★データプレーン
# show ip cef !! FIBテーブル ※ルーティングテーブルをベースに作成される(IPパケットの転送で使用) # show mpls forwarding-table !! LFIBテーブル ※LIBテーブルをベースに作成される(ラベル付きパケットの転送で使用)
OSPF関連コマンド -超基本確認コマンド4つ-
★ネイバーup時のコンソールログ
================================================================================ %OSPF-5-ADJCHG: Process 2, Nbr 1.1.1.1 on Ethernet0/1 from LOADING to FULL, Loading Done !! ネイバーのアドレス on 自分のIF ================================================================================
★ネイバーの確認
# show ip ospf neighbor
================================================================================ R1#sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 FULL/BDR 00:00:38 192.168.0.2 Ethernet0/0 R1# R2#sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 1.1.1.1 100 FULL/DR 00:00:36 192.168.0.1 Ethernet0/1 R2# ================================================================================
★ネイバーup時のデバッグ
# debug ip ospf events
================================================================================ R2#deb ip ospf ev OSPF events debugging is on R2# *Mar 1 00:03:56.035: OSPF: Rcv hello from 1.1.1.1 area 0 from Ethernet0/1 192.168.0.1 *Mar 1 00:03:56.035: OSPF: End of hello processing *Mar 1 00:03:56.039: OSPF: Rcv DBD from 1.1.1.1 on Ethernet0/1 seq 0x2077 opt 0x52 flag 0x7 len 32 mtu 1500 state 2WAY *Mar 1 00:03:56.039: OSPF: Nbr state is 2WAY *Mar 1 00:03:56.759: OSPF: end of Wait on interface Ethernet0/1 *Mar 1 00:03:56.759: OSPF: DR/BDR election on Ethernet0/1 *Mar 1 00:03:56.759: OSPF: Elect BDR 2.2.2.2 *Mar 1 00:03:56.759: OSPF: Elect DR 2.2.2.2 *Mar 1 00:03:56.759: OSPF: Elect BDR 1.1.1.1 *Mar 1 00:03:56.759: OSPF: Elect DR 2.2.2.2 *Mar 1 00:03:56.759: DR: 2.2.2.2 (Id) BDR: 1.1.1.1 (Id) *Mar 1 00:03:56.763: OSPF: Send DBD to 1.1.1.1 on Ethernet0/1 seq 0x261D opt 0x52 flag 0x7 len 32 *Mar 1 00:03:56.763: OSPF: Send hello to 224.0.0.5 area 0 on Ethernet0/1 from 192.168.0.2 *Mar 1 00:03:56.795: OSPF: Rcv DBD from 1.1.1.1 on Ethernet0/1 seq 0x261D opt 0x52 flag 0x2 len 52 mtu 1500 state EXSTART *Mar 1 00:03:56.795: OSPF: NBR Negotiation Done. We are the MASTER *Mar 1 00:03:56.795: OSPF: Send DBD to 1.1.1.1 on Ethernet0/1 seq 0x261E opt 0x52 flag 0x3 len 52 *Mar 1 00:03:56.799: OSPF: Database request to 1.1.1.1 *Mar 1 00:03:56.799: OSPF: sent LS REQ packet to 192.168.0.1, length 12 *Mar 1 00:03:56.835: OSPF: Rcv DBD from 1.1.1.1 on Ethernet0/1 seq 0x261E opt 0x52 flag 0x0 len 32 mtu 1500 state EXCHANGE *Mar 1 00:03:56.835: OSPF: Send DBD to 1.1.1.1 on Ethernet0/1 seq 0x261F opt 0x52 flag 0x1 len 32 *Mar 1 00:03:56.859: OSPF: Rcv DBD from 1.1.1.1 on Ethernet0/1 seq 0x261F opt 0x52 flag 0x0 len 32 mtu 1500 state EXCHANGE *Mar 1 00:03:56.859: OSPF: Exchange Done with 1.1.1.1 on Ethernet0/1 *Mar 1 00:03:56.859: OSPF: Synchronized with 1.1.1.1 on Ethernet0/1, state FULL *Mar 1 00:03:56.863: %OSPF-5-ADJCHG: Process 2, Nbr 1.1.1.1 on Ethernet0/1 from LOADING to FULL, Loading Done R2# R2# *Mar 1 00:04:06.019: OSPF: Rcv hello from 1.1.1.1 area 0 from Ethernet0/1 192.168.0.1 *Mar 1 00:04:06.019: OSPF: Neighbor change Event on interface Ethernet0/1 *Mar 1 00:04:06.019: OSPF: DR/BDR election on Ethernet0/1 *Mar 1 00:04:06.019: OSPF: Elect BDR 1.1.1.1 *Mar 1 00:04:06.023: OSPF: Elect DR 2.2.2.2 *Mar 1 00:04:06.023: DR: 2.2.2.2 (Id) BDR: 1.1.1.1 (Id) *Mar 1 00:04:06.023: OSPF: End of hello processing *Mar 1 00:04:06.763: OSPF: Send hello to 224.0.0.5 area 0 on Ethernet0/1 from 192.168.0.2 R2# *Mar 1 00:04:16.027: OSPF: Rcv hello from 1.1.1.1 area 0 from Ethernet0/1 192.168.0.1 *Mar 1 00:04:16.027: OSPF: End of hello processing *Mar 1 00:04:16.763: OSPF: Send hello to 224.0.0.5 area 0 on Ethernet0/1 from 192.168.0.2 R2# ================================================================================
★OSPF IFの状態確認
# show ip ospf interface
!! OSPFが動いているIFを表示する
!! AddressRange,ProcessID,RouterID,Costなどを見る
!! Costは計算式あるっぽいけど今は Serial=1,Eth=10,Giga=100,Ten=1000 と覚えとく
!! Passive Interfaceは No Hellos とでる
================================================================================
R1#sh ip ospf int
Ethernet0/3 is up, line protocol is up
Internet Address 172.16.1.254/24, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State WAITING, Priority 1
No designated router on this network
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
No Hellos (Passive interface)
Wait time before Designated router selection 00:00:26
Supports Link-local Signaling (LLS)
Index 3/3, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 0
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)
Loopback0 is up, line protocol is up
Internet Address 1.1.1.1/32, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type LOOPBACK, Cost: 1
Loopback interface is treated as a stub Host
Ethernet0/0 is up, line protocol is up
Internet Address 192.168.0.1/24, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 2.2.2.2, Interface address 192.168.0.2
Backup Designated router (ID) 1.1.1.1, Interface address 192.168.0.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:07
Supports Link-local Signaling (LLS)
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2 (Designated Router)
Suppress hello for 0 neighbor(s)
R1#
================================================================================