以下の内容はhttps://yokohama539.hatenablog.com/entry/2025/11/23/020043より取得しました。


vJunosでLDPを動かしてみた。 ~その1~

今回から二回に渡り、vJunos-routerを使ってLDPによるMPLSの検証をしたいと思います。
今回の「その1」はLDPまで設定して、MPLSによるIPv4パケット転送を確認します。
次回の「その2」は6PEを使ったIPv6 over IPv4を確認したいと思います。

主にJunosの設定と確認について書き記します。
例によって用語の詳しい説明は行いません。わからない用語は各自でググってください。

1. MPLS LDP 構成

トポロジーは以下の通りです。

MPLSを動かすネットワーク(疑似Service-Provider(疑似SP)網)を中心に、Customer Edge(CE)なSiteを2つ用意します。
疑似SP網でMPLSにてパケット転送を行った上で、CE RouterのLoopback Address間で通信できることがゴールとなります。
CEとProvider Edge(PE) RouterでIPv4IPv6によるeBGP Peeringを行います(IPv6によるCE間通信を行うのは次回ですが)
また、疑似SP網内はRoute-Reflector(RR)によってBGPの経路を広報します。

2-1. MPLS LDP - OSPF 設定・確認

それでは設定していきます。
IP(v4、v6) Addressの設定は完了していることとします。
まず、疑似SP網内でUnderlayとなるOSPFを設定し、R2~R6のLoopback Addressをお互い広報します。

//R2
set routing-options router-id 172.16.1.2
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0
set protocols ospf area 0.0.0.0 interface lo0.0 passive
//R3
set routing-options router-id 172.16.1.3
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/6.0
//R4
set routing-options router-id 172.16.1.4
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/6.0
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0
//R5
set routing-options router-id 172.16.1.5
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface lo0.0 passive
//R6
set routing-options router-id 172.16.1.6
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0
set protocols ospf area 0.0.0.0 interface ge-0/0/2.0

OSPF設定で特筆すべき点は…特にないですw

R2~R6でお互いのLoopback Addressを学習できてるか確認します。
念のため、OSPFを動かしているIFでAdjacencyが確立してるかも見ましょう。
BlogではR6のみ確認します(実際はR2~R5でも確認してます)

//R6
lab@R6# run show ospf neighbor
Address          Interface              State           ID               Pri  Dead
10.1.36.3        ge-0/0/1.0             Full            172.16.1.3       128    31
10.1.46.4        ge-0/0/2.0             Full            172.16.1.4       128    34

lab@R6# run show route protocol ospf 172.16.1/24

inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.2/32      *[OSPF/10] 00:05:09, metric 2
                    >  to 10.1.36.3 via ge-0/0/1.0
172.16.1.3/32      *[OSPF/10] 00:05:09, metric 1
                    >  to 10.1.36.3 via ge-0/0/1.0
172.16.1.4/32      *[OSPF/10] 00:04:59, metric 1
                    >  to 10.1.46.4 via ge-0/0/2.0
172.16.1.5/32      *[OSPF/10] 00:04:59, metric 2
                    >  to 10.1.46.4 via ge-0/0/2.0

neighbor Stateが「Full」となっており、かつR2~R5のLoopback Addressを学習していますね。
OSPFの設定は以上です。

2-2. MPLS LDP - BGP 設定・確認

続いて、BGPの設定をしていきます。
CEなR1とR7はeBGPの設定、PEなR2とR5はeBGPとiBGPの設定、PなR3とR4はiBGPの設定、R6は文字通りRRの設定をします。
前述の通り、eBGPはIPv4に加えてIPv6でのPeeringも行います。
R1(R7)は自身のLoopback AddressをR2(R5)に広報します。
R2~R5は(R6がRRなので)R6のみとiBGP Peeringします。

//R1
set policy-options policy-statement BGP_R2_V4_EXPORT term 0011 from protocol direct
set policy-options policy-statement BGP_R2_V4_EXPORT term 0011 from route-filter 172.16.1.1/32 exact
set policy-options policy-statement BGP_R2_V4_EXPORT term 0011 then accept
set policy-options policy-statement BGP_R2_V4_EXPORT term 9991 then reject
set policy-options policy-statement BGP_R2_V6_EXPORT term 0011 from protocol direct
set policy-options policy-statement BGP_R2_V6_EXPORT term 0011 from route-filter 3fff::1/128 exact
set policy-options policy-statement BGP_R2_V6_EXPORT term 0011 then accept
set policy-options policy-statement BGP_R2_V6_EXPORT term 9991 then reject
set routing-options router-id 172.16.1.1
set routing-options autonomous-system 65001
set protocols bgp group EXTERNAL type external
set protocols bgp group EXTERNAL neighbor 10.1.12.2 export BGP_R2_V4_EXPORT
set protocols bgp group EXTERNAL neighbor 10.1.12.2 peer-as 65002
set protocols bgp group EXTERNAL neighbor 2001:db8:1:12::2 export BGP_R2_V6_EXPORT
set protocols bgp group EXTERNAL neighbor 2001:db8:1:12::2 peer-as 65002
//R2
set policy-options policy-statement BGP_R6_EXPORT term 0011 from protocol bgp
set policy-options policy-statement BGP_R6_EXPORT term 0011 then next-hop self
set policy-options policy-statement BGP_R6_EXPORT term 0011 then accept
set policy-options policy-statement BGP_R6_EXPORT term 9991 then reject
set routing-options autonomous-system 65002
set protocols bgp group INTERNAL type internal
set protocols bgp group INTERNAL local-address 172.16.1.2
set protocols bgp group INTERNAL neighbor 172.16.1.6 export BGP_R6_EXPORT
set protocols bgp group EXTERNAL type external
set protocols bgp group EXTERNAL neighbor 10.1.12.1 peer-as 65001
set protocols bgp group EXTERNAL neighbor 2001:db8:1:12::1 peer-as 65001
//R3
set routing-options autonomous-system 65002
set protocols bgp group INTERNAL type internal
set protocols bgp group INTERNAL local-address 172.16.1.3
set protocols bgp group INTERNAL neighbor 172.16.1.6
//R4
set routing-options autonomous-system 65002
set protocols bgp group INTERNAL type internal
set protocols bgp group INTERNAL local-address 172.16.1.4
set protocols bgp group INTERNAL neighbor 172.16.1.6
//R5
set policy-options policy-statement BGP_R6_EXPORT term 0011 from protocol bgp
set policy-options policy-statement BGP_R6_EXPORT term 0011 then next-hop self
set policy-options policy-statement BGP_R6_EXPORT term 0011 then accept
set policy-options policy-statement BGP_R6_EXPORT term 9991 then reject
set routing-options autonomous-system 65002
set protocols bgp group EXTERNAL type external
set protocols bgp group EXTERNAL neighbor 10.1.57.7 peer-as 65007
set protocols bgp group EXTERNAL neighbor 2001:db8:1:57::7 peer-as 65007
set protocols bgp group INTERNAL type internal
set protocols bgp group INTERNAL local-address 172.16.1.5
set protocols bgp group INTERNAL neighbor 172.16.1.6 export BGP_R6_EXPORT
//R6
set routing-options autonomous-system 65002
set protocols bgp group INTERNAL type internal
set protocols bgp group INTERNAL local-address 172.16.1.6
set protocols bgp group INTERNAL cluster 172.16.1.6
set protocols bgp group INTERNAL neighbor 172.16.1.2
set protocols bgp group INTERNAL neighbor 172.16.1.3
set protocols bgp group INTERNAL neighbor 172.16.1.4
set protocols bgp group INTERNAL neighbor 172.16.1.5
//R7
set policy-options policy-statement BGP_R5_V4_EXPORT term 0011 from protocol direct
set policy-options policy-statement BGP_R5_V4_EXPORT term 0011 from route-filter 172.16.1.7/32 exact
set policy-options policy-statement BGP_R5_V4_EXPORT term 0011 then accept
set policy-options policy-statement BGP_R5_V4_EXPORT term 9991 then reject
set policy-options policy-statement BGP_R5_V6_EXPORT term 0011 from protocol direct
set policy-options policy-statement BGP_R5_V6_EXPORT term 0011 from route-filter 3fff::7/128 exact
set policy-options policy-statement BGP_R5_V6_EXPORT term 0011 then accept
set policy-options policy-statement BGP_R5_V6_EXPORT term 9991 then reject
set routing-options router-id 172.16.1.7
set routing-options autonomous-system 65007
set protocols bgp group EXTERNAL type external
set protocols bgp group EXTERNAL neighbor 10.1.57.5 export BGP_R5_V4_EXPORT
set protocols bgp group EXTERNAL neighbor 10.1.57.5 peer-as 65002
set protocols bgp group EXTERNAL neighbor 2001:db8:1:57::5 export BGP_R5_V6_EXPORT
set protocols bgp group EXTERNAL neighbor 2001:db8:1:57::5 peer-as 65002

R1とR7はIPv4IPv6のLoopback Addressを広報する設定をしています。
R6はRoute-Reflectorとなるため、clusterオプションを設定しています。
clusterオプションが入っているgroupのネイバーはRoute-Reflector Clientとなります。
また、PEのR2とR5についてはnext-hop self設定を行い、BGPにおけるネクストホップ(Protocol next hop)を変更しています。

BGPの確認をしていきます。
まず、R2にてPeering状況と、R1よりIPv4IPv6の経路情報(Loopback Address)が広報されているか確認します。

//R2
lab@R2# run show bgp summary 
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 3 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0               
                       2          2          0          0          0          0
inet6.0              
                       1          1          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.12.1             65001         13         11       0       0        4:18 Establ
  inet.0: 1/1/1/0
172.16.1.6            65002         10         10       0       0        3:20 Establ
  inet.0: 1/1/1/0
2001:db8:1:12::1       65001         13         11       0       0        4:08 Establ
  inet6.0: 1/1/1/0

[edit]
lab@R2# run show route table inet.0 receive-protocol bgp 10.1.12.1

inet.0: 18 destinations, 18 routes (18 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           10.1.12.1                               65001 I

[edit]
lab@R2# run show route table inet6.0 receive-protocol bgp 2001:db8:1:12::1

inet6.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 3fff::1/128             2001:db8:1:12::1                        65001 I

lab@R2# run show route advertising-protocol bgp 172.16.1.6               

inet.0: 18 destinations, 18 routes (18 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           Self                         100        65001 I

「run show bgp summary 」コマンドにて10.1.12.1(R1 IPv4)、172.16.1.6(R6)、2001:db8:1:12::1(R1 IPv6)とBGPネイバーが確立(Establ)していますね。
また、「run show route table inet.0(inet6.0) receive-protocol bgp~」コマンドでR1のLoopback Address(172.16.1.1/32、3fff::1/128)の経路情報を受信していることが確認できます。
最後の「run show route table inet.0 advertising-protocol bgp~」コマンドでR6(172.16.1.6)へ(R1のIPv4 Loopback Addressな)経路情報を広報していることが確認できます。
ちなみに、この時点ではR1のIPv6 Loopback Addressは広報できません。

次に、RRであるR6を見ていきます。

//R6
lab@R6# run show bgp summary 
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 1 Peers: 4 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0               
                       2          2          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
172.16.1.2            65002         35         32       0       0       14:08 Establ
  inet.0: 1/1/1/0
172.16.1.3            65002         35         34       0       0       14:22 Establ
  inet.0: 0/0/0/0
172.16.1.4            65002         31         30       0       0       12:36 Establ
  inet.0: 0/0/0/0
172.16.1.5            65002         30         27       0       0       11:52 Establ
  inet.0: 1/1/1/0

[edit]
lab@R6# run show route table inet.0 receive-protocol bgp 172.16.1.2 

inet.0: 17 destinations, 17 routes (17 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           172.16.1.2                   100        65001 I

[edit]
lab@R6# run show route table inet.0 advertising-protocol bgp 172.16.1.5   

inet.0: 17 destinations, 17 routes (17 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           172.16.1.2                   100        65001 I

R2~R5とBGPネイバーが確立していますね。
また、R2(172.16.1.2)から経路情報を受信し、「run show route table inet.0 advertising-protocol bgp~」コマンドでR5(172.16.1.5)へ広報していることが確認できます。

ちなみに、(run) show bgp neighbor~コマンドにて、対向のRouterをRoute-Reflector Clientとして見なしているか確認できます。

//R6
lab@R6# run show bgp neighbor 172.16.1.2 
Peer: 172.16.1.2+179 AS 65002  Local: 172.16.1.6+54043 AS 65002
  Group: INTERNAL              Routing-Instance: master
  Forwarding routing-instance: master  
  Type: Internal    State: Established  (route reflector client)Flags: <Sync>
<snip>


次に、R5にて確認します。

//R5
lab@R5# run show bgp summary                                 
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 3 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0               
                       2          2          0          0          0          0
inet6.0              
                       1          1          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.57.7             65007         66         64       0       0       28:15 Establ
  inet.0: 1/1/1/0
172.16.1.6            65002         63         62       0       0       27:19 Establ
  inet.0: 1/1/1/0
2001:db8:1:57::7       65007         66         63       0       0       28:04 Establ
  inet6.0: 1/1/1/0

[edit]
lab@R5# run show route receive-protocol bgp 172.16.1.6       

inet.0: 18 destinations, 18 routes (18 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           172.16.1.2                   100        65001 I

inet6.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)

[edit]
lab@R5# run show route advertising-protocol bgp 10.1.57.7    

inet.0: 18 destinations, 18 routes (18 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           Self                                    65001 I

RRのR6(172.16.1.6)およびCEのR7(IPv4: 10.1.57.7 、IPv6: 2001:db8:1:57::7)とBGPネイバー確立していることが確認できます。
また、R6から経路情報を受信しており、R7へ広報していることが確認できます。

最後にR7にてR1のLoopback Addressな経路情報を受信しているか確認します。

//R7
[edit]
lab@R7# run show route receive-protocol bgp 10.1.57.5 

inet.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 172.16.1.1/32           10.1.57.5    

lab@R7# run show route 172.16.1.1/32 

inet.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.1/32      *[BGP/170] 00:45:39, localpref 100
                      AS path: 65002 65001 I, validation-state: unverified
                    >  to 10.1.57.5 via ge-0/0/0.0

R5から経路情報を受信し、ルーティングテーブルにR1のLoopback Address(172.16.1.1)がエントリーされていることが確認できました。
これで、CE Site1からの経路情報はCE Site 2へ広報されました!!

同様の観点でCE Site 2の経路情報(R7のLoopback Address)もCE Site1へ広報されているか確認する必要がありますが、今回は省略します。
この時点でR1とR7のLoopback Address間でPing疎通はできます。

//R1
lab@R1# run ping 172.16.1.7 source 172.16.1.1 rapid 
PING 172.16.1.7 (172.16.1.7): 56 data bytes
!!!!!
--- 172.16.1.7 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 2.876/3.212/3.877/0.355 ms

MPLSの設定をまだしていないので、疑似SP網ではIPヘッダー(宛先 IP Address)によるルーティングを行っています。

2-3. MPLS LDP - LDP 設定・確認

では、疑似SP網内でMPLSでパケット転送する設定をしていきます。
今回はLDPを使ってLabel配布を行います。

//R2
set interfaces ge-0/0/1 unit 0 family mpls
set protocols mpls interface ge-0/0/1.0
set protocols ldp interface ge-0/0/1.0
//R3
set interfaces ge-0/0/0 unit 0 family mpls
set interfaces ge-0/0/1 unit 0 family mpls
set protocols mpls interface ge-0/0/1.0
set protocols mpls interface ge-0/0/0.0
set protocols ldp interface ge-0/0/0.0
set protocols ldp interface ge-0/0/1.0
//R4
set interfaces ge-0/0/0 unit 0 family mpls
set interfaces ge-0/0/1 unit 0 family mpls
set protocols mpls interface ge-0/0/0.0
set protocols mpls interface ge-0/0/1.0
set protocols ldp interface ge-0/0/0.0
set protocols ldp interface ge-0/0/1.0
//R5
set interfaces ge-0/0/0 unit 0 family mpls
set protocols mpls interface ge-0/0/0.0
set protocols ldp interface ge-0/0/0.0

物理IF配下でfamily mplsを有効にして、protocols mplsとldpで対象IFを定義すればいいだけです。
わざわざfamily mplsを有効にするコマンドは必要なのか…
ちなみにMPLSで転送したいIFのみを対象とすればよいので、R6やR6間のリンクに対して設定は必要ありません。

動作確認ですが、かなりややこしいです。ある程度のBGPの知識が必要になります。
まず、各Router間でLDPネイバーが確立してるか確認します。

//R2
lab@R2# run show ldp session 
  Address                           State       Connection  Hold time  Adv. Mode
172.16.1.3                          Operational Open          23         DU
//R3
lab@R3# run show ldp session                      
  Address                           State       Connection  Hold time  Adv. Mode
172.16.1.2                          Operational Open          28         DU
172.16.1.4                          Operational Open          28         DU
//R4
lab@R4# run show ldp session 
  Address                           State       Connection  Hold time  Adv. Mode
172.16.1.3                          Operational Open          20         DU
172.16.1.5                          Operational Open          20         DU
//R5
lab@R5# run show ldp session 
  Address                           State       Connection  Hold time  Adv. Mode
172.16.1.4                          Operational Open          27         DU

「State」がOperational、「Connection 」がOpenとなっていればLDPネイバー確立しています。
R2~R5いずれも確立していますね。
続いて、LDP(MPLS)を有効にして作成されたinet.3テーブルを確認します。
inet.3テーブルはMPLSによってパケット転送を行うためのルーティングテーブルになります。
詳しい説明は後ほどします。

//R2
lab@R2# run show route table inet.3    

inet.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.3/32      *[LDP/9] 00:18:19, metric 1
                    >  to 10.1.23.3 via ge-0/0/1.0
172.16.1.4/32      *[LDP/9] 00:17:54, metric 1
                    >  to 10.1.23.3 via ge-0/0/1.0, Push 299792
172.16.1.5/32      *[LDP/9] 00:17:24, metric 1
                    >  to 10.1.23.3 via ge-0/0/1.0, Push 299808
//R3
lab@R3# run show route table inet.3  

inet.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.2/32      *[LDP/9] 00:23:44, metric 1
                    >  to 10.1.23.2 via ge-0/0/0.0
172.16.1.4/32      *[LDP/9] 00:23:19, metric 1
                    >  to 10.1.34.4 via ge-0/0/1.0
172.16.1.5/32      *[LDP/9] 00:22:48, metric 1
                    >  to 10.1.34.4 via ge-0/0/1.0, Push 299808
//R4
lab@R4# run show route table inet.3  

inet.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.2/32      *[LDP/9] 00:23:39, metric 1
                    >  to 10.1.34.3 via ge-0/0/0.0, Push 299776
172.16.1.3/32      *[LDP/9] 00:23:39, metric 1
                    >  to 10.1.34.3 via ge-0/0/0.0
172.16.1.5/32      *[LDP/9] 00:23:08, metric 1
                    >  to 10.1.45.5 via ge-0/0/1.0
//R5
lab@R5# run show route table inet.3  

inet.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.2/32      *[LDP/9] 00:23:32, metric 1
                    >  to 10.1.45.4 via ge-0/0/0.0, Push 299792
172.16.1.3/32      *[LDP/9] 00:23:32, metric 1
                    >  to 10.1.45.4 via ge-0/0/0.0, Push 299776
172.16.1.4/32      *[LDP/9] 00:23:32, metric 1
                    >  to 10.1.45.4 via ge-0/0/0.0

いずれのRouterも他のRouterのLoopback Addressを学習しています。
これはJunosの仕様で、Defaultでは自身のLoopback Address(正確にはRouter ID)に対するLabelを広報します。
BGPでの通信においてProtocol next hopの解決時、大抵はLoopback Addressであることを見越した実装となっているようです。
BGP Protocol next hopの解決時はinet.0とinet.3テーブルをlookupし、inet.3テーブルによったパケット転送を行うのであれば、定義されたLabelを付与する動作となっています。
その辺のマニアックな話はココに書いてあります(JunosにおけるMPLS動作を理解する点ではメッチャ重要だったりする…)

…まあ文章書いてる自分でも良く分からんので、動作確認しながら説明します。
前述のとおり、LDPはBGPによる通信が前提となっています。
このネットワークでは、CE Site(R1とR7のLoopback Address)間で通信する際にMPLSが使われます。
まずR2にて、CE Site2なR7宛の経路情報を見ていきます。

//R2
lab@R2# run show route 172.16.1.7              

inet.0: 19 destinations, 19 routes (19 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.7/32      *[BGP/170] 00:51:25, localpref 100, from 172.16.1.6
                      AS path: 65007 I, validation-state: unverified
                    >  to 10.1.23.3 via ge-0/0/1.0, Push 299808

エントリーの最後に「Push 299808」があり、Label 299808が付与されて転送されることが確認できます。
これは172.16.1.7/32のProtocol next hopがinet.3内のエントリーに該当するため、Label(Shimヘッダー)が付与されることを意味しています。

172.16.1.7/32の詳細を見ます。

//R2
lab@R2# run show route 172.16.1.7 extensive    

inet.0: 19 destinations, 19 routes (19 active, 0 holddown, 0 hidden)
172.16.1.7/32 (1 entry, 1 announced)
<snip>
                Protocol next hop: 172.16.1.5
<snip>

lab@R2# run show route table inet.3 172.16.1.5 

inet.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

172.16.1.5/32      *[LDP/9] 01:03:22, metric 1
                    >  to 10.1.23.3 via ge-0/0/1.0, Push 299808

Protocol next hopが172.16.1.5(next-hop self設定したR5)となっており、このAddressはinet.3テーブルにエントリーされています。
そのため、LDPによって定義されたLabel 299808が付与されて10.1.23.3(R3)へパケット転送を行う動作となります。
実際にR1からR7へPingを飛ばし、R2とR3間のパケットキャプチャーも見てみます。

R7宛なEcho Requestパケットに、Shimヘッダー(MPLS Header)が挿入されてR3へ転送されています。
R2のルーティングテーブルに沿ってLabel 299808となっています。

続いて、R3のルーティングテーブルを確認します。
R3はShimヘッダーが付与された状態でパケットを受信するため、見るべきテーブルはmpls.0テーブルになります。
MPLSで通信すると言っても、Routerによって確認するテーブルが異なります(この辺がMPLSを理解する上で、とっつきにくい箇所だと思っている…)

//R3
lab@R3# run show route table mpls.0 | no-more

mpls.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0                  *[MPLS/0] 06:03:57, metric 1
                       to table inet.0
0(S=0)             *[MPLS/0] 06:03:57, metric 1
                       to table mpls.0
1                  *[MPLS/0] 06:03:57, metric 1
                       Receive
2                  *[MPLS/0] 06:03:57, metric 1
                       to table inet6.0
2(S=0)             *[MPLS/0] 06:03:57, metric 1
                       to table mpls.0
13                 *[MPLS/0] 06:03:57, metric 1
                       Receive
299776             *[LDP/9] 06:03:56, metric 1
                    >  to 10.1.23.2 via ge-0/0/0.0, Pop
299776(S=0)        *[LDP/9] 06:03:56, metric 1
                    >  to 10.1.23.2 via ge-0/0/0.0, Pop
299792             *[LDP/9] 06:03:31, metric 1
                    >  to 10.1.34.4 via ge-0/0/1.0, Pop
299792(S=0)        *[LDP/9] 06:03:31, metric 1
                    >  to 10.1.34.4 via ge-0/0/1.0, Pop
299808             *[LDP/9] 06:03:00, metric 1
                    >  to 10.1.34.4 via ge-0/0/1.0, Swap 299808

一番下に299808がありますね。
エントリーを見ると「Swap 299808」より(同じLabel値ですが)299808にSwapし、「to 10.1.34.4」よりこのAddressを持つR4へ転送することがわかります。

R3とR4間のパケットキャプチャーも見てみます。

(パッと見、さっきとほぼ一緒ですが)R3のmpls.0テーブルのとおり、Label 299808にてR4に転送されています。

続いてR4のルーティングテーブルを確認します。
Shimヘッダーが付与されているのでmpls.0テーブルを見ます。
ちなみに、「show route label xxx」コマンドで対象のLabel値のエントリーのみ表示されます。

//R4
lab@R4# run show route label 299808

mpls.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

299808             *[LDP/9] 00:00:45, metric 1
                    >  to 10.1.34.3 via ge-0/0/0.0, Pop
299808(S=0)        *[LDP/9] 00:00:45, metric 1
                    >  to 10.1.34.3 via ge-0/0/0.0, Pop

Label 299808は2種類ありますね。
今回のパケットのBottom of Stackビットは1なので前者のエントリーが選択されます(どっちもPop処理ですが)
Popなので、Shimヘッダーを外してL2ヘッダー && L3ヘッダーな構造のパケットへと戻します。
これはPHP(Penultimate Hop Poping)という動作になります。
(R4は(MPLSネットワークの最後のRouterとなる)Egress LERなR5の1つ手前のRouterなので、Shimヘッダーが外されます。
PHPについては色々なWebページで説明があるので、詳しくはググってください)

R4とR5間のパケットキャプチャーも見てみます。

Shimヘッダーが外されてR5に転送されています。

後はR5にて宛先 IP Addressを見てパケットがR7へルーティングされる…といった具合でR7へ届く動作となります。
R7からR1へのEcho Replyも同様に
・R5はinet.3テーブルを参照してShimヘッダーを挿入してR4へ転送
・R4はmpls.0テーブルを参照してLabelをSwapしてR3へ転送
・R3はmpls.0テーブルを参照して(PHP動作にて)ShimヘッダーをPopしてR2へ転送
・R2はinet.0テーブルを参照して(宛先 IP Addressによって)R1へ転送
といった動作になります。
(Shimヘッダーを挿入する)Ingress LERはinet.3テーブルを参照し、他のMPLS enableなRouterはmpls.0テーブルを参照してパケット転送する…というところがミソでしょうか。

最後にCE Site間でPingが通ることを改めて確認します。
なお、TracerouteをすることによってLabel値がわかります。

//R1
lab@R1> ping 172.16.1.7 source 172.16.1.1 rapid
PING 172.16.1.7 (172.16.1.7): 56 data bytes
!!!!!

lab@R1> traceroute 172.16.1.7 source 172.16.1.1
traceroute to 172.16.1.7 (172.16.1.7) from 172.16.1.1, 30 hops max, 52 byte packets
 1  10.1.12.2 (10.1.12.2)  1.244 ms  0.882 ms  0.805 ms
 2  10.1.23.3 (10.1.23.3)  1.847 ms  1.592 ms  1.778 ms
     MPLS Label=299840 CoS=0 TTL=1 S=1
 3  10.1.34.4 (10.1.34.4)  2.082 ms  2.124 ms  1.658 ms
     MPLS Label=299776 CoS=0 TTL=1 S=1
 4  10.1.45.5 (10.1.45.5)  2.580 ms  2.597 ms  3.026 ms
 5  172.16.1.7 (172.16.1.7)  3.607 ms  3.636 ms  4.208 ms

他ASからMPLSを使っていることがわかってしまうので、わからないようにする設定もあります。

という訳でLDPを使ったMPLSの検証が無事できました!!!
JunosにおけるLabel Switching動作の確認方法(ルーティングテーブルの追っかけ方)について、できる限り詳しく書いてみたつもりです。
用語の理解や参考資料も併用して読み進めれば、貴方も脱MPLS初心者!!

次回は続きとしてこのトポロジーにて6PEを使った通信を検証したいと思います!!!
ここまで読んでくださりありがとうございました!!!!

3. 参考資料

Juniper Documentation - MPLS Applications User Guide - LDP Overviewwww.juniper.net

Juniper Documentation - LSP Routeswww.juniper.net
NETWORK FUNTIME - JUNOS ROUTERS: WHAT DOES THE INET.3 TABLE ACTUALLY DO?www.networkfuntimes.com
JPNIC 資料 - MPLS~基礎、実現するサービス、そして最新動向~




以上の内容はhttps://yokohama539.hatenablog.com/entry/2025/11/23/020043より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14