[ACP-DC 교육#12] 가상 라우팅 및 포워딩 (VRF)

가상 라우팅 및 포워딩(VRF)은 가상 사설망(VPN)을 구축하기 위해 사용하는 L3(네트워크 계층)의 격리 기술입니다.

VRF는 시스템 내의 다른 VPN들로부터 라우팅 테이블을 격리하고, 중복된 IP 주소를 사용할 수 있게 해줍니다.
즉, VRF는 하나의 라우터 안에 여러 개의 라우팅 테이블 인스턴스가 동시에 존재할 수 있게 하는 기술입니다.

각 라우팅 인스턴스는 서로 독립적이기 때문에, 동일하거나 중복되는 IP 주소를 사용하더라도 서로 충돌하지 않습니다.
이를 통해 여러 대의 라우터 없이도 네트워크 경로를 분할할 수 있어 네트워크 기능이 향상됩니다.

2 계층(Layer 2)의 VLAN과 VRF는 구성 방식이 매우 유사합니다.
VLAN을 이해하면 VRF가 어떻게 하나의 장비 안에서 추가적인 라우팅 테이블 구성을 지원하는지 이해하기 쉽습니다.

  • VLAN: 독립적으로 격리된 계층 2(데이터 링크 계층) 네트워크를 가집니다.
  • VRF: 독립적으로 격리된 계층 3(네트워크 계층) 네트워크를 가집니다.

VLAN에서 하나의 액세스 포트가 하나의 VLAN에 속하는 것처럼, VRF에서도 각 계층 3 라우티드 인터페이스는 하나의 VPN 인스턴스에 소속됩니다. VRF 인스턴스에 할당될 수 있는 인터페이스의 예는 다음과 같습니다:

  • VLAN의 계층 3 인터페이스: 예) Interface VLAN 10
  • 라우티드 포트 (Routed ports): 예) Gigabit Ethernet 1/0/2
  • 루프백 인터페이스 (Loopback interfaces): 예) Interface loopback 1

위 그림을 보면 여러 인터페이스가 서로 다른 VRF에 정의된 것을 볼 수 있습니다.
인터페이스 1/1/1과 loopback 0은 ORANGE VRF에, 인터페이스 1/1/3과 VLAN 30은 GREEN VRF에, 그리고 VLAN 10과 VLAN 20 인터페이스는 BLUE VRF에 설정되어 있습니다.

네트워크 관리자가 설정한 각 VRF는 별도의 인터페이스와 별도의 라우팅 테이블을 가집니다.

한 가지 기억할 점은, 각 VRF가 별도의 라우팅 테이블을 가지더라도 실제 스위치의 하드웨어 자원(IP 라우팅 테이블 공간, ARP 테이블 등)은 모든 VRF가 함께 공유하여 사용한다는 것입니다.

AOS-CX 스위치의 기본 VRF 구성: 스위치를 처음 켰을 때(공장 출하 상태), 두 개의 VRF가 기본적으로 존재합니다:

  1. default VRF: 모든 L3 인터페이스가 기본적으로 할당되는 공간입니다.
  2. mgmt VRF: 장비 관리 포트 전용으로 할당된 관리용 VRF입니다.

L2 및 L3 네트워크 세분화 (Network Segmentation)

경로 유출(Route Leaking)을 이용하면 여러 VRF 간에 경로 정보를 제어된 방식으로 배포하거나 “흘려보낼(leak)” 수 있습니다.
한 VRF에서 다른 VRF로 경로를 유출하는 방법에는 두 가지가 있습니다:

  • 정적 경로(Static routes) 및 MP-BGP
  • 경로 타겟(route-targets)을 이용한 동적 경로 유출
라우팅 및 포워딩을 위한 OSPF 기반 네트워크 아키텍처
라우팅 및 포워딩을 위한 VRF 기반 네트워크 아키텍처

VRF 사용 사례 (Use Cases for VRF)

사례 1: 멀티 테넌트(Multi-tenant) 데이터센터

고객(테넌트)들을 분리하기 위해 ACL(액세스 제어 목록)을 쓸 수도 있지만, ACL은 개별적으로 설정해야 하고 매우 복잡하며 실수하기 쉽습니다. 또한 모든 고객이 동일한 라우팅 테이블 안에서 돌아가기 때문에 ACL 설정 하나만 잘못되어도 다른 고객 네트워크에 접근할 수 있게 됩니다. 기본적으로 네트워크는 모든 통신을 허용하고, ACL을 꼼꼼히 짜야만 차단이 가능하기 때문입니다.

반면 VRF는 설계 단계부터 별도의 라우팅 테이블을 만들어 고객 자원을 분리합니다.

VRF로 분리된 두 고객의 예시

기본적으로 VRF 간의 통신은 허용되지 않으며, 명시적인 추가 설정(경로 유출)이 있어야만 트래픽이 통과합니다.
따라서 전통적인 ACL보다 설정과 유지 관리가 훨씬 간단합니다.

보통 고객별 가상 방화벽과 결합하여 공용 인터넷 게이트웨이에 접속하도록 구성하며, 이 방화벽은 분리 상태를 유지하기 위해 VRF를 인식(VRF-aware)할 수 있어야 합니다.

사례 2: 독립적인 비즈니스 단위(BU)가 있는 데이터센터

하나의 물리적 데이터센터를 여러 부서나 팀, 애플리케이션이 공유하는 경우입니다.
관리 팀은 동일한 장비를 사용하면서도 각 부서의 트래픽을 격리할 수 있습니다.

또 다른 예로 테스트 및 개발 네트워크가 있습니다.
새로운 소프트웨어를 완전히 분리된 가상 네트워크에서 검증함으로써 운영 네트워크에 영향을 주지 않고 테스트할 수 있습니다.

사례 3: 중복된 IP 세그먼트

기업 합병 등으로 인해 여러 부서가 동일한 IP 주소 대역을 사용해야 하는 경우가 발생할 수 있습니다.

VRF를 사용하면 IP 주소를 변경하지 않고도 부서별로 네트워크와 주소 체계를 격리할 수 있습니다.
만약 VRF 간 통신이 필요하다면 계층 3 경계에 방화벽을 설치하여 NAT 기능을 통해 통신을 가능하게 할 수 있습니다.

사례 4: 격리된 관리 네트워크

장비 관리를 위한 네트워크를 별도로 구축하는 경우입니다.

L2 스위치는 고객 네트워크의 IP 주소를 갖지 않으므로 기본적으로 관리 서브넷이 분리되어 있습니다.
하지만 L3 장비(VLAN 간 라우팅을 수행하는 장비)는 설계상 사용자가 장비의 IP 인터페이스에 접근할 수 있습니다.

따라서 관리 인터페이스를 위한 전용 VRF를 만들어 SNMP, Telnet, SSH 등의 관리 프로토콜이 이 안에서만 작동하게 함으로써 일반 사용자의 접근을 차단합니다.

사례 5: 데이터센터 공용 서비스 (Shared Services)

각 고객은 격리된 VRF를 사용하지만, 중앙 방화벽, 백업, 모니터링, 보안 서비스 같은 공용 서비스는 공유해야 할 때가 있습니다.

고객은 자신의 VRF 내에서 OSPF 같은 라우팅 프로토콜을 계속 사용할 수 있고, 공용 서비스 인스턴스는 다른 프로토콜을 쓸 수도 있습니다.
이때 경로 유출 기술을 사용하면 각 VRF를 격리된 상태로 유지하면서 필요한 특정 경로만 서로 허용할 수 있습니다.


VRF 구성 단계

1. VRF 설정 (Creating a VRF)

VRF는 계층 3(L3) 인터페이스와 라우팅 규칙들의 집합입니다. 첫 번째 구성 단계는 VRF를 생성하는 것입니다.

  • VRF 생성: vrf <VRF-NAME> 명령어로 이름이 지정된 VRF 인스턴스를 생성합니다.
    인스턴스를 생성하면 명령 프롬프트가 해당 VRF 설정 컨텍스트(context)로 진입합니다.
switch(config)# vrf Customer_A
  • VRF 확인: show vrf <VRF-NAME> [vsx-peer] 명령어는 지정된 VRF 인스턴스의 상태와 연결된 인터페이스를 표시합니다. vsx-peer 옵션은 VSX 피어 스위치의 출력을 보여줍니다.
    (스위치에 VSX 설정이 없거나 ISL이 다운된 경우에는 피어의 출력이 표시되지 않습니다.)
    show vrf만 입력하면 모든 VRF 정보를 보여줍니다.
switch# show vrf Customer_A 
VRF Configuration: 
------------------
VRF Name : test 
       Interfaces Status
------------------

주의 사항: 기본적으로 새 VRF에는 연결된 인터페이스가 없으며, VRF를 삭제하면 해당 VRF와 관련된 모든 L3 설정도 함께 삭제됩니다.

2. L3 인터페이스를 VRF에 할당 (Attach L3 interfaces to VRF)
  • 기본적으로 모든 인터페이스는 default VRF에 매핑되어 있습니다.
  • 라우티드 포트, LAG, VLAN 인터페이스, 루프백 인터페이스를 VRF에 연결할 수 있습니다.
switch(config)# interface 1/1/29
switch(config-if)# vrf attach Customer_A
switch(config)# vlan 3
switch(config-vlan)# exit
switch(config)# interface vlan 3
switch(config-lag-if)# vrf attach Customer_A

장치의 모든 L3 인터페이스는 기본적으로 default VRF와 연결되어 있으므로, VRF를 만들고 구성한 후 다음 단계는 원하는 인터페이스를 새 VRF에 연결하는 것입니다.

  • 설정 삭제 경고: 인터페이스를 VRF에 연결하거나 해제하면 해당 인터페이스의 모든 설정이 제거됩니다.
    이때 “All Layer 3 con-figurations associated with the VRF will be deleted. Continue (y/n)?“라는 경고 메시지가 표시됩니다.
  • IP 주소 재설정: 인터페이스에 IP 주소가 있는 상태에서 VRF를 정의하면 IP 주소가 삭제되므로, 해당 인터페이스에 IP 주소를 다시 입력해야 함을 기억하십시오.
3. L3 인터페이스 IP 설정 (Configure IP on L3 interfaces)
  • 인터페이스를 VRF에 연결하면 인터페이스 설정이 삭제됩니다.
  • 연결 후에는 반드시 IP 주소를 다시 설정해야 합니다.
switch(config)# interface 1/1/29
switch(config-if)# ip address 10.20.20.1/24
switch# show ip route vrf Customer_A
Displaying ipv4 routes selected for forwarding
'[x/y]' denotes [distance/metric]

 10.20.20.0/24, 1 (null) next-hops
          via 10.20.20.1, [0/0], connected
 90.0.0.0/24, 1 unicast next-hops
          via 30.0.0.1, [1/0], static

IP 주소를 설정한 후, show interface brief 명령어는 VRF 멤버십(어느 VRF에 속해 있는지)을 보여주지 않습니다.

이를 확인하려면 show vrf 또는 show ip route <VRF-NAME> 명령어를 사용해야 합니다.
예를 들어, show ip route vrf Customer_A 명령어를 통해 Customer_A VRF에 설정된 IP 정보를 확인할 수 있습니다.

4. 라우팅 설정 (Configure routing)
  • 정적(Static) 또는 동적(Dynamic) 라우팅을 사용할 수 있습니다.(퍼블릭 라우팅 테이블과 구성 옵션이 완전히 동일)
  • 대부분의 명령어에서 추가로 vrf 키워드가 필요합니다.
정적 라우팅 (Static Routes)

VRF에 IPv4 정적 경로를 추가하려면 목적지 IP 주소, 서브넷 마스크, 넥스트 홉(다음 지점) IP 주소 또는 인터페이스를 지정한 뒤, 마지막에 VRF 이름을 지정합니다.

  • VRF 내부에 정적 라우팅 구성 예시:
switch(config)# ip route 20.0.0.0/8 10.20.30.44 vrf Customer_A

OSPF

모든 VRF마다 별도의 OSPF 프로세스가 필요합니다.

예를 들어, Customer_A VRF를 위해 OSPF 프로세스 2번을 구성할 수 있습니다.
OSPF 프로세스를 구성할 때는 고유한 프로세스 번호와 이 프로세스가 연결될 VRF를 지정해야 합니다.

  • VRF 내부에 OSPF 구성 예시:
switch(config)# router ospf 2 vrf Customer_A
switch(config-ospf-1)# Area 0

각 OSPF 프로세스는 자신만의 LSDB를 가지며, 해당 VRF 내에 존재하는 고유한 라우터 ID(router-id)가 필요합니다.

OSPF를 구성하기 전에 해당 VRF에 루프백 주소를 먼저 구성해야 합니다.
VRF 내에 가용할 라우티드 인터페이스가 없다면 라우터 ID를 할당할 수 없어 OSPF 프로세스가 시작되지 않습니다.

5. 가상 라우터 간 포워딩: IVRF (Inter-Virtual Router Forwarding)

VRF는 물리적 스위치를 여러 개의 가상 라우터 인스턴스(VRF)로 분할할 수 있게 해줍니다.

각 VRF는 격리된 컨트롤 플레인과 데이터 플레인을 가집니다. 이 격리는 트래픽이 VRF를 가로지르지 않게 하여, 하나의 물리적 L3 스위치/라우터 내에 여러 개의 고유한 라우팅 테이블이 공존할 수 있게 합니다.

경로 유출(Route Leaking, IVRF)은 경로를 여러 VRF에 제어된 방식으로 배포(유출)할 수 있게 것으로 두 가지 방법이 있습니다:

  1. 정적 경로 (Static routes)
  2. 멀티프로토콜 BGP (MP-BGP) (또는 route-targets를 이용한 동적 경로 유출)

경로 유출은 VRF 간에 엄격하게 제어된 라우팅 통신을 가능하게 합니다.
VRF의 본래 목적은 격리지만, 실제 시나리오에서는 VRF 간의 통신이 필요할 수 있습니다.

여기서 VRF 사용의 장점 중 하나는 유출 경로를 제한된 수로 생성할 수 있다는 점입니다.
경로를 수동으로 정의하지 않으면 VRF 간 통신이 불가능합니다.

따라서 단일 라우팅 테이블 내 ACL(접근 제어 목록)을 사용하는 것보다 접근 제어를 구현하기가 더 용이합니다.

경로 유출의 한 사례로는 VRF B가 VRF A에 접근할 수 있도록 특정 서브넷을 지정하는 것입니다.

예를 들어 VRF B의 10.2.2.0/24가 VRF A의 10.1.1.0/24에 도달하려면, 양방향 통신을 위해 두 경로 모두 각자의 상대방 VRF로 유출되어야 합니다.

또 다른 시나리오는 데이터센터 내의 백업 서비스나 모니터링 서비스(10.254.0.0/16)를 고객 VRF에 제공할 때 유용합니다.

또한 중앙의 방화벽을 통해 인터넷에 접속할 때 공용 라우팅 테이블과 VRF 간의 경로 유출이 발생할 수 있습니다.
해당 방화벽은 전용 VRF(아래 그림 참조) 또는 공용 라우팅 테이블에 존재할 수 있습니다.

경로 유출을 구성할 때는 양방향 통신을 활성화하기 위해 필요한 경로를 양쪽 VRF로 모두 유출해야 합니다.

⚠️ AOS-CX 제약 및 제한 사항:
  • AOS-CX 스위치는 NAT(네트워크 주소 변환)를 수행하지 않음
    이 장치들만 사용한다면 통신하려는 VRF 간에 중복된 IP 주소를 사용할 수 없음 (NAT는 라우터에서만 지원)
  • 동적 경로 유출 시 VRF당 최대 256개의 route-target 지원.
  • 시스템당 최대 16,000개의 동적 유출 경로 지원.
  • 멀티캐스트 경로 유출은 지원되지 않음.
  • BGP 사용 시 유출된 경로에 대한 경로 필터링 불가.
  • 계단식(Cascaded) 유출 불가: (예: VRF1 → VRF2 → VRF3 식으로 거쳐가는 것 불가)
  • mgmt VRF는 경로 유출에 사용할 수 없음.
6. IVRF 정적 경로 유출 (IVRF static route leak)

ip route 또는 ipv6 route 명령을 사용하여 두 VRF 간에 경로를 유출하는 단계는 다음과 같습니다:

  1. 경로 확인: 다른 VRF로 내보낼(유출할) 경로가 소스(원본) VRF에 반드시 존재해야 합니다.
    (정적, 직접 연결, 또는 OSPF로 학습된 경로여야 함)
  2. 명령어:
ip route <목적지_네트워크> <소스_VRF의_로컬_인터페이스> <소스_VRF의_넥스트홉_IP> vrf <목적지_VRF_이름>

예: Orange VRF에 있는 100.0.0.0/24 경로를 Blue VRF로 유출하려면:

ip route 100.0.0.0/24 1/1/1 10.0.0.1 vrf Blue

    1. 멀티패스(ECMP): 동일한 소스 VRF에 속한다면 여러 경로를 유출할 수 있습니다.

    예: VRF Orange의 두 경로를 통해 100.0.0.0/24 접두사에 도달할 수 있다면, 아래 명령어를 사용하여 두 경로를 모두 VRF Blue로 유출할 수 있습니다:

    ip route 100.0.0.0/24 1/1/1 20.0.0.1 vrf Blue
    ip route 100.0.0.0/24 1/1/1 20.0.0.2 vrf Blue

    1. 중복 IP 금지: 동일한 100.0.0.0/24 경로를 Orange VRF와 Green VRF 양쪽에서 학습한 경우, 이 둘을 동시에 Blue VRF로 유출하는 것은 허용되지 않습니다.
    IVRF 예제

    이 예시에는 오렌지, 그린, 블루 세 개의 VRF를 실행하는 AOS-CX 스위치가 있습니다.
    고객 요구 사항에 따라 VRF 간에 공유(누출)할 일부 경로를 구성해야 합니다.

    이를 수행하려면 먼저 VRF가 해당 목적지로의 활성 경로를 확보해야 하며, 경로가 설정되면 해당 경로가 다른 VRF와 공유되기 시작합니다.

    외부 경로 공유와 직접 연결된 경로 공유 사이에는 약간의 차이가 있습니다.

    외부 경로를 공유할 때는 명시적으로 다음 홉을 지정해야 하지만, 직접 연결된 네트워크의 경우 스위치 자체가 다음 홉이므로 이 작업이 필요하지 않습니다.

    외부 경로 공유

    • Step 1: Static Route 설정
    switch(config)# ip route 30.0.0.0/24 20.0.0.2 vrf green
    switch(config)# ip route 50.0.0.0/24 20.0.0.2 vrf green
    • Step 2: VRF Green에서 VRF Orange로 경로 유출
    switch(config)# ip route 30.0.0.0/24 1/1/2 20.0.0.2 vrf orange
    switch(config)# ip route 50.0.0.0/24 1/1/2 20.0.0.2 vrf blue

    직접 연결된 경로 공유

    • Step 1: VRF Blue에서 VRF Orange로 40.0.0.0/24 네트워크 경로 유출
    switch(config)# ip route 40.0.0.0/24 1/1/3 vrf orange
    7. IVRF 동적 경로 유출 (IVRF dynamic route leaking)

    수동 설정 대신 MP-BGP와 경로 타겟(route-targets)의 export/import 설정을 사용하여 자동으로 경로를 유출할 수 있습니다.

    이를 위해 각 VRF에 대해 BGP 내에 별도의 주소 패밀리(address-family)를 구성하고, 해당 VRF 내의 경로(OSPF, 정적 등)를 재배포(redistribute)해야 합니다.

    동적 경로 유출 제한:

    • 사용자가 구성한 VRF만 지원합니다.
    • 사용자 정의 VRF와 default(또는 global) VRF 간의 유출은 불가능합니다. (오직 사용자 VRF 간에만 가능)
    • 사용자 VRF 간의 IPv4/IPv6 경로 유출에는 반드시 MP-BGP를 사용해야 합니다.
    • BGP를 라우팅 프로토콜로 사용할 때 유출된 경로에 대한 필터링은 발생할 수 없습니다.
    • 멀티캐스트 경로 유출은 지원하지 않습니다.
    • 시스템당 지원되는 최대 동적 유출 경로는 16K입니다.

    가상 라우팅 및 포워딩(VRF)은 현대 데이터센터 네트워크의 핵심인 ‘멀티 테넌시(Multi-tenancy)’와 ‘보안 격리’를 가능하게 하는 필수 기술입니다. 단순히 물리적 장비를 쪼개 쓰는 것을 넘어, 하나의 스위치 안에서 독립적인 컨트롤 플레인과 데이터 플레인을 가진 여러 대의 가상 라우터를 운영함으로써 설계의 유연성을 극대화합니다.

    특히 경로 유출(Route Leaking) 기술은 격리와 통신이라는 상충하는 요구를 정교하게 해결해 주지만, 그만큼 설정의 복잡도와 제약 사항(IP 중복 금지 등)이 따르므로 정확한 아키텍처 이해가 필수적입니다.

    결론적으로 VRF는 복잡한 데이터센터 환경을 논리적으로 단순화하고 보안을 강화하는 강력한 도구이며, 이를 능숙하게 다루는 능력은 고도화된 네트워크 엔지니어로 성장하기 위한 중요한 분수령이 될 것입니다.