VXLAN 터널을 통한 EVPN 유형 5 라우팅
VXLAN(Virtual Extensible LAN) 유형 5 라우팅을 사용하는 EVPN(Ethernet Virtual Private Network)은 가상화된 워크로드에 효율적이고 확장 가능한 네트워크 연결을 제공하기 위해 데이터센터 및 클라우드 환경에서 사용하도록 설계되었습니다. EVPN과 VXLAN의 이점을 결합하여 다양한 IP 서브넷 및 위치에서 가상 머신(VM)과 물리적 디바이스 간의 유연하고 원활한 통신을 지원합니다. 주니퍼 클라우드 네이티브 라우터(JCNR) 릴리스 23.3부터 클라우드 네이티브 라우터는 VXLAN 터널을 통한 EVPN 유형 5 라우팅을 지원합니다.
EVPN(Ethernet Virtual Private Network) 기술은 여러 사이트 전반에서 레이어 2 및 레이어 3 연결을 확장할 수 있는 확장 가능하고 효율적인 방법을 제공합니다. EVPN은 BGP(Border Gateway Protocol)를 사용하여 프로바이더 에지(PE) 라우터 간에 정보를 교환하므로 이더넷 세그먼트 및 IP 접두사의 위치를 학습할 수 있습니다. 이를 통해 여러 사이트에 걸쳐 있는 가상 네트워크를 만드는 동시에 가상 라우팅 및 포워딩(VRF) 인스턴스를 사용하여 트래픽을 분리하고 격리할 수 있습니다. EVPN은 서비스 프로바이더 네트워크를 통해 트래픽을 전송하는 데 사용할 수 있는 VXLAN 및 MPLS를 포함한 여러 캡슐화 방법을 지원합니다.
VXLAN은 기존 레이어 3 네트워크 인프라 위에 가상 레이어 2 네트워크를 생성할 수 있게 해주는 네트워크 오버레이 기술입니다. 이는 레이어 2 세그먼트의 범위를 단일 물리적 네트워크의 한계 이상으로 확장하며, 이는 대규모 가상화 환경에서 특히 유용합니다.
EVPN은 MAC 광고 경로(유형 2)와 IP 접두사 경로(유형 5)의 두 가지 유형의 경로를 지원합니다. 유형 2 경로는 PE 라우터 간에 MAC 주소와 VLAN을 교환하는 데 사용되며, 유형 5 경로는 레이어 3 네트워크 경로를 교환하는 데 사용됩니다. EVPN VXLAN에서 유형 5 경로는 IP 접두사 및 관련 MAC 주소를 보급하는 데 사용됩니다. EVPN VXLAN 유형 5 IP 접두사 경로에서 제공하는 연결을 사용하여 테넌트에 도달하기 위해 데이터 패킷은 IP 네트워크를 통해 VXLAN 헤더에 캡슐화된 레이어 2 이더넷 프레임으로 데이터센터 전반에 걸쳐 전송됩니다.
EVPN VXLAN Type 5 라우팅을 사용하면 MAC 및 IP 라우팅 정보를 효율적으로 배포할 수 있으므로 가상화된 워크로드가 많은 대규모 네트워크를 원활하게 운영할 수 있습니다. 이 기술은 공유 환경에서 테넌트 트래픽의 안전한 격리를 지원하여 테넌트 간의 분리를 유지하는 가상 네트워크 오버레이를 제공합니다.
EVPN VXLAN Type 5 라우팅에 대한 자세한 내용은 EVPN pure Type-5 경로 이해를 참조하십시오.
클라우드 네이티브 라우터가 EVPN VXLAN Type 5 라우팅을 지원하려면 전송 라우터 기능이 활성화되어야 합니다. 전송 게이트웨이로서의 클라우드 네이티브 라우터를 참조하십시오.
VXLAN 터널을 통한 EVPN Type 5 라우팅 활성화
go 템플릿을 통해 사용자 지정 클라우드 네이티브 라우터 컨트롤러 구성을 사용하여 VXLAN 터널을 통한 EVPN 유형 5 라우팅을 활성화합니다. JCNR을 설치하기 전에 사용자 지정 구성을 적용하거나 기존 클라우드 네이티브 라우터 설치의 경우 cRPD Pod를 삭제하고 다시 생성합니다.
Juniper_Cloud_Native_Router_<release-number>/cRPD_examples 디렉터리에 있는 jcnr-cni-custom-config-cm.tmpl 파일을 사용하여 클라우드 네이티브 라우터에서 VXLAN 터널을 통한 EVPN 유형 5 라우팅을 구성하려면 다음 샘플을 사용하십시오.
groups { custom { 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 Type 5 구성에 대한 자세한 내용은 예: 가상 스위치를 지원하는 EVPN 구성을 참조하십시오.
VXLAN을 통한 EVPN 유형 5 라우팅 설정을 위한 구성 예제 및 CLI 명령

위에 표시된 토폴로지는 프로바이더 에지 라우터 PE1 및 PE2로 두 개의 JCNR이 배치된 간단한 설정을 설명합니다. CE1 및 CE2는 각 PE 뒤에 있는 호스트를 나타냅니다. 전제 조건으로 BGP 세션은 PE1과 PE2 사이에 존재해야 합니다. CE1을 향한 인터페이스 enp4s0과 함께 PE1에서 다음 EVPN-VXLAN 구성을 고려하십시오.
groups { custom { 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 Type 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 명령
vRouter CLI에서 실행할 수 있는 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