[시스코 보안 아카데미 1기] VXLAN, EVPN, VXLAN EVPN 실습

VXLAN

  • 기존의 VLAN이 가진 4,096개의 제한된 네트워크를 확장하기 위해 도입된 기술.
  • VNI (VXLAN Network Identifier)를 사용해 최대 1,600만 개의 논리적 네트워크를 지원
  • 데이터 센터에서 L2 네트워크를 L3 기반으로 확장해주는 오버레이 기술
  • 네트워크 가상화 기술로, 데이터센터 및 클라우드 환경에서 대규모 네트워크 확장성을 제공하기 위해 설계된 터널링 프로토콜
  • VXLAN은 Layer 2 트래픽을 Layer 3 네트워크 상에서 전송할 수 있게 해줌. → 네트워크의 확장성과 유연성을 개선하고, 가상화된 네트워크 환경에서의 IP 주소 부족 문제를 해결할 수 있음.
  • VLAN을 확장한 개념. → VLAN에서 만들 수 있는 네트워크보다 더 많은 네트워크 생성가능

VXLAN을 사용하는 이유

  • 네트워크 확장성:
  • L2 Over L3:
  • 서브넷 간의 확장:
  • 효율성:

VXLAN을 사용하는 경우

  • 클라우드 환경:
  • 데이터센터 간 연결:
  • 네트워크 가상화:
  • 멀티 테넌시:

NVE

  • NVE (Network Virtualization Edge)는 VXLAN (Virtual Extensible LAN)에서 사용되는 인터페이스 유형
  • NVE 인터페이스는 VXLAN 터널의 엔드포인트 역할을 하며, VXLAN 트래픽을 캡슐화하고 디캡슐화하는 데 사용
  • 주로 VTEP (VXLAN Tunnel End Point) 장치에서 설정

NVE의 역할

  • VXLAN 터널 인터페이스로서 물리적 네트워크와 가상 네트워크를 연결하는 역할
  • VXLAN은 Layer 2 트래픽을 Layer 3 네트워크 상에서 전송할 수 있도록 하는 기술이기 때문에, NVE는 가상 네트워크의 트래픽을 Layer 3 네트워크로 캡슐화하여 전송하고, Layer 3 네트워크에서 다시 Layer 2 트래픽으로 디캡슐화하는 역할

VXLAN 실습

VXLAN Underlay 구성(OSPF 사용)

feature interface-vlan
feature vn-segment-vlan-based
feature nv overlay

feature ospf 
int e1/1
no switchport 
ip address 192.168.1.1/24
ip router ospf UNDERLAY area 0
  • Spine 스위치 OSPF 네이버 확인

VXLAN BUM 트래픽 처리를 위한 멀티캐스트 구성

  • (멀티캐스트 트래픽은 라우팅 테이블 기반으로 작동)
feature pim
ip pim rp-address 1.1.1.1  # RP 설정
ip pim sparse-mode  # Sparse Mode 활성화(interface 에서)
  • Leaf1
    • VLAN 생성 및 VXLAN VNID 매핑
      • vlan 10
          name VXLAN_VLAN_10
          vn-segment 5000
        
        interface vlan 10
          ip address 192.168.10.1/24
        
        vlan 20
          name VXLAN_VLAN_20
          vn-segment 5001
        
        interface vlan 20
          ip address 192.168.20.1/24
        
        vlan 30
        name VXLAN_VLAN_30
          vn-segment 5002
    • NVE 인터페이스 구성
      • interface nve1
          no shutdown
          source-interface loopback0
          member vni 5000
            mcast-group 239.1.1.1  # VLAN 10에 할당된 멀티캐스트 그룹
          member vni 5001
            mcast-group 239.1.1.2  # VLAN 20에 할당된 멀티캐스트 그룹
          member vni 5002
            mcast-group 239.1.1.3 # VLAN 30에 할당된 멀티캐스트 그룹
  • Leaf2
    • VLAN 생성 및 VXLAN VNID 매핑
      • vlan 10
          name VXLAN_VLAN_10
          vn-segment 5000
        
        interface vlan 10
          ip address 192.168.10.2/24 
        
        vlan 20
          name VXLAN_VLAN_20
          vn-segment 5001
        
        interface vlan 20
          ip address 192.168.20.2/24 
        
        vlan 30
        name VXLAN_VLAN_30
          vn-segment 5002
    • NVE 인터페이스 구성
      • interface nve1
          no shutdown
          source-interface loopback0
          member vni 5000
            mcast-group 239.1.1.1  # VLAN 10에 할당된 멀티캐스트 그룹
          member vni 5001
            mcast-group 239.1.1.2  # VLAN 20에 할당된 멀티캐스트 그룹
          member vni 5002
            mcast-group 239.1.1.3 # VLAN 30에 할당된 멀티캐스트 그룹

실습 검증

VXLAN 설정 확인

  • show vxlan
  • show nve vni

멀티캐스트 상태 확인

  • show ip mroute
  • show ip pim neighbor

Ping 검증

  • VTEP 간 Ping 확인
  • VPC 간 Ping 확인
  • Leaf 스위치에서 멀티캐스트 그룹 3개에 Ping 확인

VXLAN EVPN

Spine

nv overlay evpn # evpn enable 명령어 

Spine(config)# router bgp 100
Spine(config-router)# neighbor 2.2.2.2
Spine(config-router-neighbor)# remote as 100
Spine(config-router-neighbor)# update-source lo 0
Spine(config-router-neighbor)# address-family l2vpn evpn
Spine(config-router-neighbor-af)# send-community extended # RT 값을 전달하기 위해 
Spine(config-router-neighbor-af)# route-reflector-client # Spine을 R.R로 설정
Spine(config-router-neighbor-af)# 
Spine(config-router)# neighbor 3.3.3.3
Spine(config-router-neighbor)# remote as 100
Spine(config-router-neighbor)# update-source lo 0
Spine(config-router-neighbor)# address-family l2vpn evpn
Spine(config-router-neighbor-af)# send-community extended # RT 값을 전달하기 위해 
Spine(config-router-neighbor-af)# route-reflector-client # Spine을 R.R로 설정

Leaf1

nv overlay evpn # evpn enable 명령어 

Leaf1(config)# router bgp 100
Leaf1(config-router)# neighbor 1.1.1.1
Leaf1(config-router-neighbor)# remote as 100
Leaf1(config-router-neighbor)# update-source lo 0
Leaf1(config-router-neighbor)# address-family l2vpn evpn
Leaf1(config-router-neighbor-af)# send-community extended # RT 값을 전달하기 위해 

Leaf1(config)# int nve 1
Leaf1(config-if-nve)# host-reachability protocol bgp # deafult가 data plane로 학습하는건데 control plane으로
Leaf1(config-if-nve)# member vni 5000
Leaf1(config-if-nve-vni)# ingress-replication protocol bgp # 멀티캐스트 정보를 전달할 수 없으니까 unicast로 bgp peer한테 전달할 수 있도록 만들어줌 
Leaf1(config-if-nve)# member vni 5001
Leaf1(config-if-nve-vni)# ingress-replication protocol bgp 

Leaf1(config)# evpn
Leaf1(config-evpn)# vni 5000 l2
Leaf1(config-evpn-evi)# route-target both auto # AS번호:VNID정보
Leaf1(config-evpn-evi)# rd auto 
Leaf1(config-evpn-evi)# vni 5001 l2
Leaf1(config-evpn-evi)# route-target both auto 
Leaf1(config-evpn-evi)# rd auto 
  • VRF로 VLAN 마다 라우팅 분리
Leaf1(config)# feature interface-vlan 
Leaf1(config)# vrf context EVPN # RD, RT값을 통해서 넘기는게 아니라 VRF를 통해 전달
Leaf1(config-vrf)#int vlan 10
Leaf1(config-if)# vrf member EVPN 
Leaf1(config-if)# ip add 192.168.10.1 255.255.255.0
Leaf1(config-if)# fabric forwarding mode anycast-gateway
Leaf1(config-vrf)#int vlan 20
Leaf1(config-if)# vrf member EVPN 
Leaf1(config-if)# ip add 192.168.20.1 255.255.255.0
Leaf1(config-if)# fabric forwarding mode anycast-gateway

Leaf1(config)# vlan 30
Leaf1(config-vlan)# vn-segment 5002
Leaf1(config-vlan)#int vlan 30
Leaf1(config-if)# vrf member EVPN 
Leaf1(config-if)# ip forward # 다른 네트워크(다른 VLAN)에 대해서는 L3로 정보를 라우팅해야하기 때문에 IP 할당 x 
  • VNID 5001은 Leaf들의 VRF 끼리 L3 패킷을 전송하기위한 용도
Leaf1(config)# vrf context EVPN
Leaf1(config-vrf)# vni 5002 # 서로 같은 VNID를 사용하는 애들끼리 통신할 수 있도록 하기위해 똑같은 vnid 사용 
Leaf1(config-vrf)# rd auto 
Leaf1(config-vrf)# address-family ipv4 unicast 
Leaf1(config-vrf-af-ipv4)# route-target both auto 

Leaf1(config)# router bgp 100
Leaf1(config-router)# vrf EVPN
Leaf1(config-router-vrf)# address-family ipv4 unicast
Leaf1(config-router-vrf-af)# network 192.168.10.0 mask 255.255.255.0
Leaf1(config-router-vrf-af)# network 192.168.20.0 mask 255.255.255.0
Leaf1(config-router-vrf-af)# fabric forwarding anycast-gateway-mac 0000.1111.2222

Leaf1(config)# int nve 1
Leaf1(config-if-nve)# member vni 5002 associate-vrf # nve 인터페이스랑 vrf랑 서로 연결  
Leaf1(config-if-nve-vni)#  
  • nve 인터페이스가 처음에 VNID를 달아서 forwarding 하는 역할을 수행 VXLAN에 대한 모든 헤더정보를 붙이는건 nve

Leaf2

nv overlay evpn # evpn enable 명령어 

Leaf2(config)# router bgp 100
Leaf2(config-router)# neighbor 1.1.1.1
Leaf2(config-router-neighbor)# remote as 100
Leaf2(config-router-neighbor)# update-source lo 0
Leaf2(config-router-neighbor)# address-family l2vpn evpn
Leaf2(config-router-neighbor-af)# send-community extended # RT 값을 전달하기 위해 

Leaf2(config)# int nve 1
Leaf2(config-if-nve)# host-reachability protocol bgp # deafult가 data plane로 학습하는건데 control plane으로
Leaf2(config-if-nve)# member vni 5000
Leaf2(config-if-nve-vni)# ingress-replication protocol bgp # 멀티캐스트 정보를 전달할 수 없으니까 unicast로 bgp peer한테 전달할 수 있도록 만들어줌 
Leaf2(config-if-nve)# member vni 5001
Leaf2(config-if-nve-vni)# ingress-replication protocol bgp # 멀티캐스트 정보를 전달할 수 없으니까 unicast로 bgp peer한테 전달할 수 있도록 만들어줌 

Leaf2(config)# evpn
Leaf2(config-evpn)# vni 5000 l2
Leaf2(config-evpn-evi)# route-target both auto # AS번호:VNID정보
Leaf2(config-evpn-evi)# rd auto 
Leaf2(config-evpn-evi)# vni 5001 l2
Leaf2(config-evpn-evi)# route-target both auto 
Leaf2(config-evpn-evi)# rd auto 
  • VRF로 VLAN 마다 라우팅 분리
Leaf2(config)# feature interface-vlan 
Leaf2(config)# vrf context EVPN # RD, RT값을 통해서 넘기는게 아니라 VRF를 통해 전달
Leaf2(config-vrf)#int vlan 10
Leaf2(config-if)# vrf member EVPN 
Leaf2(config-if)# ip add 192.168.10.1 255.255.255.0
Leaf2(config-if)# fabric forwarding mode anycast-gateway
Leaf2(config-vrf)#int vlan 20
Leaf2(config-if)# vrf member EVPN 
Leaf2(config-if)# ip add 192.168.20.1 255.255.255.0
Leaf2(config-if)# fabric forwarding mode anycast-gateway

Leaf2(config)# vlan 30
Leaf2(config-vlan)# vn-segment 5001
Leaf2(config-vlan)#int vlan 30
Leaf2(config-if)# vrf member EVPN 
Leaf2(config-if)# ip forward # 다른 네트워크(다른 VLAN)에 대해서는 L3로 정보를 라우팅해야하기 때문에 IP 할당 x 
Leaf2(config)# vrf context EVPN
Leaf2(config-vrf)# vni 5002 # 서로 같은 VNID를 사용하는 애들끼리 통신할 수 있도록 하기위해 똑같은 vnid 사용 
Leaf2(config-vrf)# rd auto 
Leaf2(config-vrf)# address-family ipv4 unicast 
Leaf2(config-vrf-af-ipv4)# route-target both auto 

Leaf2(config)# router bgp 100
Leaf2(config-router)# vrf EVPN
Leaf2(config-router-vrf)# address-family ipv4 unicast
Leaf2(config-router-vrf-af)# network 192.168.10.0 mask 255.255.255.0
Leaf2(config-router-vrf-af)# network 192.168.20.0 mask 255.255.255.0
Leaf2(config-router-vrf-af)# fabric forwarding anycast-gateway-mac 0000.1111.2222

Leaf2(config)# int nve 1
Leaf2(config-if-nve)# member vni 5002 associate-vrf # nve 인터페이스랑 vrf랑 서로 연결  
Leaf2(config-if-nve-vni)#  

VXLAN EVPN 설정 검증

  • show nve peers
  • show nve vni
  • BGP EVPN 검증
  • Underlay OSPF 검증
  • Anycast-gateway

 

728x90