前回(その1)に引き続き、vJunos-routerを使ってEVPN-MPLSによるL3VPNの検証をしたいと思います。
前回の記事はこちらです。だいぶ間が空いてしまいました…。
yokohama539.hatenablog.com
前回はEVPNでL2VPN(同一ネットワークでの通信)まで確認しました。
今回は話のメインとなる、L3VPN(異なるネットワーク間の通信)を実現する設定をしていきます。
1. EVPN-MPLS L3VPN 構成
再掲となりますが、トポロジーは以下のとおりです。

今回の範囲として、擬似InternetとなるAS 65002があり、このASはR4とeBGP Peeringをしてデフォルトルートを広報します。
広報されたデフォルトルートによってPC1~3から疑似Internet上のHostであるPC10と通信できることをゴールとします。
2. EVPN-MPLS L3VPN 設定
では、L3VPNを行うための設定をしていきます。
R1、R2、R3はほぼ一緒の設定です。
//R1 set interfaces irb unit 1 family inet address 192.168.12.254/24 set routing-instances EVPN-MPLS routing-interface irb.1 set routing-instances EVPN-MPLS_L3 instance-type vrf set routing-instances EVPN-MPLS_L3 protocols evpn ip-prefix-routes advertise direct-nexthop set routing-instances EVPN-MPLS_L3 interface irb.1 set routing-instances EVPN-MPLS_L3 route-distinguisher 172.16.1.1:1002 set routing-instances EVPN-MPLS_L3 vrf-target target:65001:1002 set routing-instances EVPN-MPLS_L3 vrf-table-label
//R2 set interfaces irb unit 1 family inet address 192.168.12.254/24 set routing-instances EVPN-MPLS routing-interface irb.1 set routing-instances EVPN-MPLS_L3 instance-type vrf set routing-instances EVPN-MPLS_L3 protocols evpn ip-prefix-routes advertise direct-nexthop set routing-instances EVPN-MPLS_L3 interface irb.1 set routing-instances EVPN-MPLS_L3 route-distinguisher 172.16.1.2:1002 set routing-instances EVPN-MPLS_L3 vrf-target target:65001:1002 set routing-instances EVPN-MPLS_L3 vrf-table-label
//R3 set interfaces irb unit 1 family inet address 192.168.12.254/24 set routing-instances EVPN-MPLS routing-interface irb.1 set routing-instances EVPN-MPLS_L3 instance-type vrf set routing-instances EVPN-MPLS_L3 protocols evpn ip-prefix-routes advertise direct-nexthop set routing-instances EVPN-MPLS_L3 interface irb.1 set routing-instances EVPN-MPLS_L3 route-distinguisher 172.16.1.3:1002 set routing-instances EVPN-MPLS_L3 vrf-target target:65001:1002 set routing-instances EVPN-MPLS_L3 vrf-table-label
イメージとしては、L3VPN用のIRBインターフェイスとInstanceを作り、前回作成したL2VPNのInstanceにもIRBを関連付ける…と言ったところでしょうか。
もちろん、IRBのIPアドレスはPCで定義したデフォルトゲートウェイと同一となります。
Customer Site収容兼ASBRとなるR4は設定が多くなります。
//R4 set interfaces irb unit 1 family inet address 192.168.12.254/24 set routing-instances EVPN-MPLS routing-interface irb.1 set routing-instances EVPN-MPLS_L3 instance-type vrf set routing-instances EVPN-MPLS_L3 protocols evpn ip-prefix-routes advertise direct-nexthop set routing-instances EVPN-MPLS_L3 route-distinguisher 172.16.1.4:1002 set routing-instances EVPN-MPLS_L3 vrf-target target:65001:1002 set routing-instances EVPN-MPLS_L3 interface irb.1 set routing-instances EVPN-MPLS_L3 vrf-table-label set interfaces ge-0/0/9 unit 0 family inet address 10.1.48.4/24 set policy-options policy-statement BGP_R8_EXPORT term 0011 from protocol direct set policy-options policy-statement BGP_R8_EXPORT term 0011 from protocol evpn set policy-options policy-statement BGP_R8_EXPORT term 0011 then accept set policy-options policy-statement BGP_R8_EXPORT term 9991 then reject set routing-instances EVPN-MPLS_L3 interface ge-0/0/9.0 set routing-instances EVPN-MPLS_L3 protocols bgp group EXTERNAL type external set routing-instances EVPN-MPLS_L3 protocols bgp group EXTERNAL neighbor 10.1.48.8 export BGP_R8_EXPORT set routing-instances EVPN-MPLS_L3 protocols bgp group EXTERNAL neighbor 10.1.48.8 peer-as 65002
前半はR1〜R3と同様にL3VPN用のInstance設定を行っています。
後半は擬似InternetなAS 65002とeBGP Peeringをする設定を行っています。
ポイントとしては、eBGP Peeringするインターフェイス(ge-0/0/9)はL3VPN用のInstanceに所属させるところでしょうか。
最後に擬似Internetとなる、R8の設定をします。
//R8 set routing-options rib inet.0 static route 0.0.0.0/0 reject set policy-options policy-statement BGP_R4_EXPORT term 0011 from protocol static set policy-options policy-statement BGP_R4_EXPORT term 0011 from route-filter 0.0.0.0/0 exact set policy-options policy-statement BGP_R4_EXPORT term 0011 then accept set policy-options policy-statement BGP_R4_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.48.4 export BGP_R4_EXPORT set protocols bgp group EXTERNAL neighbor 10.1.48.4 peer-as 65001
デフォルトルートを広報する設定にしてます。
設定は以上になります。
3. EVPN-MPLS L3VPN 確認
では確認をしていきます。
まず、R4にてR8からデフォルトルートの経路情報を受信しているか確認します。
//R4
lab@R4# run show bgp summary group EXTERNAL
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 2 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
bgp.evpn.0
19 19 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.48.8 65002 278 278 0 0 2:03:21 Establ
EVPN-MPLS_L3.inet.0: 1/1/1/0
[edit]
lab@R4# run show route receive-protocol bgp 10.1.48.8
inet.0: 16 destinations, 16 routes (16 active, 0 holddown, 0 hidden)
inet.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
EVPN-MPLS_L3.inet.0: 6 destinations, 9 routes (6 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* 0.0.0.0/0 10.1.48.8 65002 I
mpls.0: 17 destinations, 17 routes (17 active, 0 holddown, 0 hidden)
bgp.evpn.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
EVPN-MPLS_L3.evpn.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
EVPN-MPLS.evpn.0: 21 destinations, 21 routes (21 active, 0 holddown, 0 hidden)10.1.48.8(R8)とPeeringできており、かつデフォルトルートな経路情報を受信しています。
続いて、R4からRR(R7)へ広報している経路情報を確認します。
//R4 lab@R4# run show route advertising-protocol bgp 172.16.1.7 table bgp.evpn.0 | no-more bgp.evpn.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 2:172.16.1.4:65001::12::00:50:79:66:68:0b/304 MAC/IP * Self 100 I 2:172.16.1.4:65001::12::2c:6b:f5:80:c3:f0/304 MAC/IP * Self 100 I 2:172.16.1.4:65001::12::00:50:79:66:68:0b::192.168.12.3/304 MAC/IP * Self 100 I 2:172.16.1.4:65001::12::2c:6b:f5:80:c3:f0::192.168.12.254/304 MAC/IP * Self 100 I 3:172.16.1.4:65001::12::172.16.1.4/248 IM * Self 100 I 5:172.16.1.4:1002::0::0.0.0.0::0/248 * Self 100 65002 I 5:172.16.1.4:1002::0::10.1.48.0::24/248 * Self 100 I 5:172.16.1.4:1002::0::192.168.12.0::24/248 * Self 100 I
下3つのエントリーでRoute Type 5を広報していることが確認できます。
Route Type 5はIP Prefix情報を広報するTypeとなります。
要はネットワークアドレスとサブネットマスク長の構成からなるL3経路情報です。
「5:172.16.1.4:1002::0::0.0.0.0::0/248」にてR8からのデフォルトルート経路情報をEVPNシグナリングなMP-BGPで広報しています。
RRを経て、R1へこの経路情報が受信されているか確認します。
//R1 lab@R1# run show route receive-protocol bgp 172.16.1.7 table bgp.evpn.0 match-prefix "5:*" bgp.evpn.0: 29 destinations, 29 routes (29 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 5:172.16.1.2:1002::0::192.168.12.0::24/248 * 172.16.1.2 100 I 5:172.16.1.3:1002::0::192.168.12.0::24/248 * 172.16.1.3 100 I 5:172.16.1.4:1002::0::0.0.0.0::0/248 * 172.16.1.4 100 65002 I 5:172.16.1.4:1002::0::10.1.48.0::24/248 * 172.16.1.4 100 I 5:172.16.1.4:1002::0::192.168.12.0::24/248 * 172.16.1.4 100 I
「5:172.16.1.4:1002::0::0.0.0.0::0/248」の経路情報を受信されています。
続いて受信したこのデフォルトルートな経路情報がルーティングテーブルに反映されているか確認します。
//R1
lab@R1# run show route table EVPN-MPLS_L3.inet.0 | no-more
EVPN-MPLS_L3.inet.0: 5 destinations, 8 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[EVPN/170] 02:42:13
> to 10.1.15.5 via ge-0/0/0.0, label-switched-path R1-to-R4
10.1.48.0/24 *[EVPN/170] 02:42:13
> to 10.1.15.5 via ge-0/0/0.0, label-switched-path R1-to-R4
192.168.12.0/24 *[Direct/0] 02:43:57
> via irb.1
[EVPN/170] 02:43:57
> to 10.1.15.5 via ge-0/0/0.0, label-switched-path R1-to-R2
[EVPN/170] 02:41:45
> to 10.1.15.5 via ge-0/0/0.0, label-switched-path R1-to-R3
[EVPN/170] 02:41:59
> to 10.1.15.5 via ge-0/0/0.0, label-switched-path R1-to-R4
192.168.12.1/32 *[EVPN/7] 00:55:48
> via irb.1
192.168.12.254/32 *[Local/0] 02:43:57
Local via irb.10.0.0.0/0のデフォルトルートがエントリーされています!
label-switched-pathもR4へ転送される「R1-to-R4」が使われる様で、経路も問題なさそうです。
PC1からPC10宛のトラフィックについては問題なく届きそうです。
念のため、PC10からPC1宛のトラフィックについて擬似Internet(R8)からAS65001(R4)へ転送されるか、R8にて経路情報を確認します。
//R8
lab@R8# run show route protocol bgp
inet.0: 7 destinations, 8 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.1.48.0/24 [BGP/170] 00:01:02, localpref 100
AS path: 65001 I, validation-state: unverified
> to 10.1.48.4 via ge-0/0/0.0
192.168.12.0/24 *[BGP/170] 00:01:02, localpref 100
AS path: 65001 I, validation-state: unverified
> to 10.1.48.4 via ge-0/0/0.0
192.168.12.3/32 *[BGP/170] 01:26:12, localpref 100
AS path: 65001 I, validation-state: unverified
> to 10.1.48.4 via ge-0/0/0.0192.168.12.0/24の経路情報を受け取っているので、問題なく転送されそうです。
では実際にPC1(192.168.12.1)からPC10(203.0.113.150)へPingをしてみます。
//PC1 VPC1> ping 203.0.113.150 84 bytes from 203.0.113.150 icmp_seq=1 ttl=62 time=5.252 ms 84 bytes from 203.0.113.150 icmp_seq=2 ttl=62 time=4.243 ms 84 bytes from 203.0.113.150 icmp_seq=3 ttl=62 time=4.226 ms
疎通できました!!
同様にPC2(192.168.12.2)からPC10へも疎通できるか、R3の経路情報とともに確認します。
//R3
lab@R3# run show route receive-protocol bgp 172.16.1.7 table bgp.evpn.0 match-prefix "5:*" | no-more
bgp.evpn.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
5:172.16.1.1:1002::0::192.168.12.0::24/248
* 172.16.1.1 100 I
5:172.16.1.2:1002::0::192.168.12.0::24/248
* 172.16.1.2 100 I
5:172.16.1.4:1002::0::0.0.0.0::0/248
* 172.16.1.4 100 65002 I
5:172.16.1.4:1002::0::10.1.48.0::24/248
* 172.16.1.4 100 I
5:172.16.1.4:1002::0::192.168.12.0::24/248
* 172.16.1.4 100 I
lab@R3# run show route table EVPN-MPLS_L3.inet.0
EVPN-MPLS_L3.inet.0: 5 destinations, 8 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[EVPN/170] 03:32:21
> to 10.1.35.6 via ge-0/0/0.0, label-switched-path R3-to-R4
10.1.48.0/24 *[EVPN/170] 03:32:21
> to 10.1.35.6 via ge-0/0/0.0, label-switched-path R3-to-R4
192.168.12.0/24 *[Direct/0] 03:32:08
> via irb.1
[EVPN/170] 03:32:21
> to 10.1.35.6 via ge-0/0/0.0, label-switched-path R3-to-R4
[EVPN/170] 03:32:35
> to 10.1.35.6 via ge-0/0/0.0, label-switched-path R3-to-R1
[EVPN/170] 03:32:28
> to 10.1.35.6 via ge-0/0/0.0, label-switched-path R3-to-R2
192.168.12.2/32 *[EVPN/7] 03:27:54
> via irb.1
192.168.12.254/32 *[Local/0] 03:32:08
Local via irb.1//PC2 VPC2> ping 203.0.113.150 84 bytes from 203.0.113.150 icmp_seq=1 ttl=62 time=4.242 ms 84 bytes from 203.0.113.150 icmp_seq=2 ttl=62 time=2.946 ms 84 bytes from 203.0.113.150 icmp_seq=3 ttl=62 time=2.689 ms
R3にて、R1と同様にデフォルトルートな経路情報がエントリーされており、PC2からPC10へPingが飛びました!
ついでに、PC3(192.168.12.3)からもPC10へPingをしてみます。
//PC3 VPC3> ping 203.0.113.150 84 bytes from 203.0.113.150 icmp_seq=1 ttl=62 time=2.066 ms 84 bytes from 203.0.113.150 icmp_seq=2 ttl=62 time=1.296 ms 84 bytes from 203.0.113.150 icmp_seq=3 ttl=62 time=2.043 ms
PC3からPC10へPingが飛びました!
ゴールである、PC1~3からPC10への通信が無事できました!
PC1〜3からPC10宛のトラフィックにおけるMPLS PathはR4向けのPathを使うでしょう。なので今回パケットキャプチャーは省略します。
気になる方は実際にLabを組んで試してくださいw
という訳でEVPN-MPLSでのL3VPN通信の検証は以上になります!!
ここまでお読み頂き、ありがとうございました!!!!
4. 参考文献
Juniper Documentation - EVPN User Guide - EVPN-MPLS - Configuring Integrated Bridging and Routing セクション
www.juniper.net































