VXLAN トンネルを介した EVPN タイプ 5 ルーティング
仮想拡張LAN(VXLAN)タイプ5ルーティングは、データセンターおよびクラウド環境で使用するために設計されており、仮想化ワークロードに効率的で拡張性の高いネットワーク接続を提供します。EVPNとVXLANのメリットを組み合わせて、異なるIPサブネットや場所にある仮想マシン(VM)と物理デバイス間の柔軟でシームレスな通信を可能にします。Juniper Cloud-Native Router(JCNR)リリース 23.3 以降、JCNR は VXLAN トンネル上の EVPN タイプ 5 ルーティングをサポートしています。
イーサネット仮想プライベートネットワーク(EVPN)技術は、レイヤー2およびレイヤー3の接続を複数のサイトに拡張するための拡張性と効率性を提供します。EVPN は、BGP(境界ゲートウェイプロトコル)を使用して PE(プロバイダ エッジ)ルーター間で情報を交換し、イーサネット セグメントと IP プレフィックスの場所を学習できるようにします。これにより、仮想ルーティングおよび転送(VRF)インスタンスを使用してトラフィックを分離および分離しながら、複数のサイトにまたがることができる仮想ネットワークを作成できます。EVPNは、VXLANやMPLSなど、複数のカプセル化方式をサポートしており、サービスプロバイダのネットワーク全体でトラフィックを転送するために使用できます。
VXLANは、既存のレイヤー3ネットワークインフラストラクチャの上に仮想レイヤー2ネットワークを作成できるネットワークオーバーレイ技術です。単一の物理ネットワークの枠を超えてレイヤー2セグメントの範囲を拡張できるため、大規模な仮想化環境で特に役立ちます。
EVPN は、MAC アドバタイズメント ルート(タイプ 2)と IP プレフィックス ルート(タイプ 5)の 2 種類のルートをサポートしています。タイプ 2 ルートは PE ルーター間で MAC アドレスと VLAN を交換するために使用され、タイプ 5 ルートはレイヤー 3 ネットワーク ルートを交換するために使用されます。EVPN VXLAN では、タイプ 5 ルートを使用して IP プレフィックスとそれに関連付けられた MAC アドレスをアドバタイズします。EVPN VXLAN Type 5 IP Prefix ルートによって提供される接続を使用してテナントに到達するために、データパケットは VXLAN ヘッダーにカプセル化されたレイヤー 2 イーサネット フレームとして、データ センター全体の IP ネットワーク経由で送信されます。
EVPN VXLAN Type 5ルーティングは、MACとIPのルーティング情報を効率的に配信し、多数の仮想化ワークロードを持つ大規模ネットワークのシームレスな運用を可能にします。このテクノロジーは、共有環境におけるテナントトラフィックの安全な分離をサポートし、テナント間の分離を維持する仮想ネットワークオーバーレイを提供します。
EVPN VXLAN タイプ 5 ルーティングの詳細については、「 EVPN VXLAN タイプ 5 ルーティング 」トピックを参照してください。
JCNR が EVPN VXLAN Type 5 ルーティングをサポートするためには、トランジットルーター機能を有効にする必要があります。 トランジットゲートウェイとしてのJCNRを参照してください。
VXLAN トンネル上の EVPN タイプ 5 ルーティングの有効化
コンフィグレットリソースを使用して、cRPDポッドを設定します。
EVPN VXLAN Type 5 構成スニペットの例を以下に示します。
routing-instances { EVPN-TYPE5-VXLAN-VRF { instance-type vrf; protocols { evpn { ip-prefix-routes { advertise direct-nexthop; encapsulation vxlan; vni 1000; export EVPN-TYPE5-VXLAN-VRF-EXPORT-POLICY; } } } interface ge-0/0/1.0; route-distinguisher 10.255.0.1:100; vrf-target target:100:100; } } }
Junos での EVPN タイプ 5 設定の詳細については、「 EVPN タイプ 5 設定 」のトピックを参照してください。
VXLAN での EVPN タイプ 5 ルーティングの設定例と CLI コマンド設定
上記のトポロジーは、プロバイダーエッジルーターPE1とPE2として展開された2つのJCNRを使用した簡単なセットアップを示しています。CE1とCE2は、それぞれのPEの背後にあるホストを表しています。前提条件として、PE1とPE2の間にBGPセッションが存在する必要があります。
コンフィグレットリソースを使用して、cRPDポッドを設定します。
CE1へのインターフェイス enp4s0
があるPE1の以下のEVPN-VXLAN設定を考えてみましょう。
routing-instances { orange { instance-type vrf; routing-options { rib orange.inet6.0 { multipath; } multipath; } protocols { evpn { ip-prefix-routes { advertise direct-nexthop; encapsulation vxlan; vni 10010; } } } interface enp4s0; route-distinguisher 1.1.1.1:4; vrf-target target:4:4; } }
VXLANトンネルは、ルーターPE1とPE2の間に作成されます。10.10.14.0/24ネットワークルートは、PE1でローカルに学習され、EVPNタイプ5を介してリモートPEにアドバタイズされます。同様に、10.10.24.0/24ネットワークルートはPE2でローカルに学習され、EVPNタイプ5を介してリモートPEにアドバタイズされます。CE1とCE2の間のすべてのトラフィックは、VXLANトンネルを介してPE1とPE2の間で転送されます。
以下のセクションに記載されているコマンドを使用して、EVPN VXLAN タイプ 5 ルーティング設定のトラブルシューティングを行います。
cRPD CLIコマンド
以下のCLIコマンドは、cRPD CLIで実行できます。cRPD CLIにアクセスするには、 cRPD CLIへのアクセスを参照してください。
-
show bgp <summary | neighbor>
:ピアへのEVPN接続の概要と接続ステータスを提供します。以下に出力例を示します。
host@pe1> show bgp summary Threading mode: BGP I/0 Default eBGP mode: advertise - accept, receive - accept Groups: 1 Peers: 2 Down peers: 1 Table Tot Paths Act Paths Suppressed History Damp State Pending bgp. evpn. 0 2 2 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped… 2.2.2.2 4 10345 10336 0 2 3d 5:32:50 Establ bgp.evpn.0: 2/2/2/0 orange.evpn.0: 2/2/2/0 3.3.3.3 4 0 0 0 0 4w4d 13:28:22 Connect
-
show route <summary | table | prefix>
:ルーティングテーブルのアクティブなエントリを表示します。 -
show evpn instance
: EVPN ルーティング インスタンスに関する情報を表示します。 -
show evpn l3-context
:ローカルボックスに設定されたL3コンテキストを表示します。以下に出力例を示します。
host@pe1> show evpn l3-context L3 context Type Adv Encap VNI/Label Router MAC/GW intf orange Cfg Direct VXLAN 10010 48:5a:0d:78:78:d7
-
show evpn ip-prefix-database
:エクスポートおよびインポートされたEVPNルートプレフィックスのリストと、これらのルートのステータスを提供します。以下に出力例を示します。
root@evpn-pe1-node> show evpn ip-prefix-database L3 context: orange IPv4->EVPN Exported Prefixes Prefix EVPN route status 2.55.1.0/24 Created 4.1.1.4/30 Created 10.10.14.0/24 Created IPv6->EVPN Exported Prefixes Prefix EVPN route status 1234::a0a:e00/120 Created abcd::401:104/126 Created abcd::2:55:1:0/120 Created EVPN->IPv4 Imported Prefixes Prefix Etag 2.55.2.0/24 0 Route distinguisher VNI/Label Router MAC Nexthop/Overlay GW/ESI Route-Status Reject-Reason 2.2.2.2:4 10020 48:5a:0d:49:fc:63 2.2.2.2 Accepted n/a 10.10.24.0/24 0 Route distinguisher VNI/Label Router MAC Nexthop/Overlay GW/ESI Route-Status Reject-Reason 2.2.2.2:4 10020 48:5a:0d:49:fc:63 2.2.2.2 Accepted n/a EVPN->IPv6 Imported Prefixes Prefix Etag 1234::a0a:1800/120 0 Route distinguisher VNI/Label Router MAC Nexthop/Overlay GW/ESI Route-Status Reject-Reason 2.2.2.2:4 10020 48:5a:0d:49:fc:63 2.2.2.2 Accepted n/a abcd::2:55:2:0/120 0 Route distinguisher VNI/Label Router MAC Nexthop/Overlay GW/ESI Route-Status Reject-Reason 2.2.2.2:4 10020 48:5a:0d:49:fc:63 2.2.2.2 Accepted n/a
-
show route table <VRF>.evpn.0
:指定されたルーティングテーブル内のルートエントリーを表示します。以下に出力例を示します。
host@pe1> show route table orange.evpn.0 orange.evpn.0: 4 destinations, 0 routes (4 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 5:1.1.1.1:4::0::10.10.14.0::24/248 *[EVPN/170] 4W4d 13:29:25 Fictitious 5:2.2.2.2:4::0::10.10.24.0::24/248 *[BGP/170] 3d 05:33:52, localpref 100, from 2.2.2.2 AS path: I, validation-state: unverified to 10.10.1.20 via enp2s0 5:1.1.1.1:4::0::1234::00a:000::120/248 *[EVPN/170] 4w4d 13:29:25 Fictitious 5:2.2.2.2:4::0::1234::a0a:1800::120/248 *[BGP/170] 3d 05:33:52, localpref 100, from 2.2.2.2 AS path: I, validation- state: unverified to 10.10.1.20 via enp2s0
-
show route table <VRF>.inet.0
:指定されたルーティングテーブル内のルートエントリーを表示します。 -
show route table bgp.evpn.0
:指定されたルーティングテーブル内のルートエントリーを表示します。ローカルプレフィックスを使用した出力例を以下に示します。
host@pe1> show route table bgp.evpn.0 match-prefix 5:1.1.1.1:4::0::10.10.14.0::24 bgp.evpn.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 5:1.1.1.1:4::0::10.10.14.0::24/248 *[EVPN/170] 2w1d 05:11:43 Fictitious
リモートプレフィックスを使用した出力例を以下に示します。
host@pe1> show route table bgp.evpn.0 match-prefix 5:2.2.2.2:4::0::10.10.24.0::24 bgp.evpn.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 5:2.2.2.2:4::0::10.10.24.0::24/248 *[BGP/170] 2w1d 05:11:48, localpref 100, from 2.2.2.2 AS path: I, validation-state: unverified > to 10.10.1.20 via enp2s0
-
show krt next-hop
:設定されたネクストホップを表示します。
vRouter CLI コマンド
以下のCLIコマンドは、vRouter CLIで実行できます。vRouter CLI にアクセスするには、 vRouter CLI へのアクセスを参照してください。
-
rt --get <prefix> --vrf <vrf-id> --family <inet4/inet6>
: 指定された IPv4 アドレスを指すルートを提供します。以下に出力例を示します。
[host@pe1 /]# rt --get 10.10.24.0/24 --vrf 1 Match 10.10.24.0/24 in vRouter inet4 table 0/1/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/1/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.10.24.0/24 0 LPT 10020 30 -
-
vxlan --dump
:設定されているVNIとネクストホップに関する情報を提供します。以下に出力例を示します。
[host@pe1 /]# vxlan --dump VXLAN Table VNID NextHop ---------------- 10010 25
-
nh --get <nh-id>
:ネクストホップの詳細を提供します。以下に出力例を示します。
[root@evpn-pe1-node /]# nh --get 30 Id:30 Type:Tunnel Fmly: AF_INET Rid:0 Ref_cnt:5 Vrf:0 Flags:Valid, Policy, Vxlan, Etree Root, l3_vxlan, Oif:1 Len:14 Data:52 54 00 78 c8 f2 52 54 00 ee 83 cd 08 00 Sip:1.1.1.1 Dip:2.2.2.2 L3_Vxlan_SMac:48:5a:0d:78:78:d7 L3_Vxlan_DMac:48:5a:0d:49:fc:63
-
vif --list
:vif
が設定されているエンタープライズのリストを提供します。 -
flow --l
: システム内のすべてのアクティブなフローを表示します。このコマンドを使用して、vRouter 上の CE1 と CE2 の間を流れるトラフィックを確認します。以下に出力例を示します。
[host@pe1 /]# flow -l Flow table(size 161218560, entries 629760) Entries: Created 11 Added 11 Deleted 20 Changed 26Processed 11 Used Overflow entries 0 (Created FlOwS/CPU: 0 0 0 0 0 0 0 0 0 0 11 0 (oflows 0) Action: F-Forward, D=Drop N=NAT(S-SNAT, D=DNAT, PS=SPAT, Pd=DPAT, L=Link Local Port) Other: K(nh)=Key Nexthop, S(nh)=RPF Nexthop Flags: E-Evicted, Ec-Evict Candidate, N=New Flow, M-Modified Dm=Delete Marked TCP(r=reverse): S-SYN, F=FIN, R=RST, C-HalfClose, E-Established, D=Dead Stats: Packets/Bytes Index Source: Port/Destination: Port Proto(V) ------------------------------------------------------------------------------------ 95644<=>443840 10.10.24.21:30 1 (1) 10.10.14.11:0 (Gen: 1, K(nh): 8, Action:F, Flags:, 005: -1, S(nh):30, Stats: 16/1344, SPort 56932, TTL 0. Sinfo 2.2.2.2) 443840<=>95644 10.10.14.11:30 1 (1) 10.10.24.21:0 (Gen: 1, K(nh):8, Action:F, Flags:, Q0S: -1, S(nh):41, Stats: 16/1344, SPort 53983, TTL 0, Sinfo 0.0.0.0)
-
vifdump <vif-number>
:指定されたvif
のすべてのパケットの詳細を表示します。以下に出力例を示します。
[host@pe1 /]# vifdump 3 -nevv vif0/3 PCI: 0000:04:00.0 NH: 8 MTU: 9000 dropped privs to tcpdump tcpdump: listening on mon3, link-type EN10MB (Ethernet), snapshot length 262144 bytes 20:15:15.611827 52:54:00:2c:f6:16 > 52:54:00:ef:3c:4d, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 1764, offset 0, flags [DF], proto ICMP (1), length 84) 10.10.14.11 > 10.10.24.21: ICMP echo request, id 16, seq 25, length 64 20:15:15.612472 52:54:00:ef:3c:4d > 52:54:00:2c:f6:16, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 62, id 14142, offset 0, flags [none], proto ICMP (1), length 84) 10.10.24.21 > 10.10.14.11: ICMP echo reply, id 16, seq 25, length 64 20:15:16.626773 52:54:00:2c:f6:16 > 52:54:00:ef:3c:4d, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 1863, offset 0, flags [DF], proto ICMP (1), length 84) 10.10.14.11 > 10.10.24.21: ICMP echo request, id 16, seq 26, length 64 20:15:16.627404 52:54:00:ef:3c:4d > 52:54:00:2c:f6:16, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 62, id 14187, offset 0, flags [none], proto ICMP (1), length 84) 10.10.24.21 > 10.10.14.11: ICMP echo reply, id 16, seq 26, length 64