오버레이 네트워크에서 NSX는 L3 도메인의 VLAN 간 트래픽 라우팅을 지원합니다. 라우팅 중에 VDR(가상 분산 라우터)은 VLAN ID를 사용하여 VLAN 서브넷 간에 패킷을 라우팅합니다.

VLAN 간 라우팅을 사용하면 VM당 사용할 수 있는 10개의 vNIC 제한이 해소됩니다. NSX에서 VLAN 간 라우팅을 지원하므로 네트워킹 서비스마다 다른 여러 VLAN 하위 인터페이스를 vNIC에서 생성하고 사용할 수 있습니다. 예를 들어, VM의 한 vNIC를 여러 하위 인터페이스로 나눌 수 있습니다. 각 하위 인터페이스는 SNMP 또는 DHCP와 같은 네트워킹 서비스를 호스팅할 수 있는 서브넷에 속합니다. 예를 들어 VLAN 간 라우팅을 사용하는 경우 VLAN-10의 하위 인터페이스는 VLAN-10 또는 다른 VLAN의 하위 인터페이스에 연결될 수 있습니다.

VM의 각 vNIC는 태그 없는 패킷을 관리하는 상위 논리적 포트를 통해 스위치에 연결됩니다.

하위 인터페이스를 생성하려면 향상된 모드에서 구성된 스위치에서 절차에 설명된 API 호출을 사용하여 연결된 VIF에서 API를 사용하여 하위 포트를 생성합니다. VLAN ID로 태그가 지정된 하위 인터페이스는 새 논리적 스위치에 연결됩니다. 예를 들어, VLAN10은 논리적 스위치 LS-VLAN-10에 연결됩니다. VLAN10의 모든 하위 인터페이스를 LS-VLAN-10에 연결해야 합니다. 하위 인터페이스의 VLAN ID와 연결된 논리적 스위치 사이의 이 일대일 매핑은 중요한 사전 요구 사항입니다. 예를 들어 VLAN20이 있는 하위 포트를 VLAN-10에 매핑된 논리적 스위치 LS-VLAN-10에 추가하면 VLAN 사이의 패킷 라우팅이 작동하지 않게 됩니다. 이러한 구성 오류는 VLAN 간 라우팅이 작동하지 않게 합니다.

NSX 3.2.2부터 논리적 포트 proton API가 해당 세그먼트 포트 정책 API로 대체됩니다.

사전 요구 사항

  • VLAN 하위 인터페이스를 논리적 스위치에 연결하기 전에 논리적 스위치에 다른 VLAN 하위 인터페이스와의 다른 연결이 없는지 확인합니다. 불일치 상황이 발생하면 오버레이 네트워크의 VLAN 간 라우팅이 작동하지 않을 수 있습니다.

  • 호스트가 ESXi v 6.7 U2 이상 버전을 실행하는지 확인합니다.

프로시저

  1. vNIC에 대한 하위 인터페이스를 생성하려면 vNIC가 상위 포트로 업데이트되었는지 확인합니다. 다음 REST API 호출을 수행합니다.
    PATCH https://<nsx-mgr-ip>/policy/api/v1/infra/segments/<Segment to which vNIC is connected>/ports/<Seg-Port-vNIC>
    {
       "attachment": {
         "id": "<Attachment UUID of the vNIC>",
         "type": "PARENT"
      },
       "admin_state": "UP",
       "resource_type": "SegmentPort",
       "display_name": "parentport"
    }
    }
    논리적 스위치에 해당 세그먼트가 없는 경우 다음과 같은 REST API 호출(논리적 포트 proton API)을 수행할 수 있습니다.
    PUT https://<nsx-mgr-ip>/api/v1/logical-ports/<Logical-Port UUID-of-the-vNIC>
    {
      "resource_type" : "LogicalPort",
      "display_name" : "parentport",
      "attachment" : {
        "attachment_type" : "VIF",
        "context" : {
          "resource_type" : "VifAttachmentContext",
          "vif_type": "PARENT"
        },
        "id" : "<Attachment UUID of the vNIC>"   
      },
      "admin_state" : "UP",
      "logical_switch_id" : "UUID of Logical Switch to which the vNIC is connected",  
      "_revision" : 0
    }
  2. VM의 하위 인터페이스에 연결된 N-VDS의 상위 vNIC 포트에 대한 하위 포트를 생성하려면 다음 API 호출을 수행합니다.
    참고: API 호출을 수행하기 전에 하위 포트를 VM의 하위 인터페이스에 연결하기 위한 세그먼트가 있는지 확인합니다.
    PUT https://<nsx-mgr-ip>/policy/api/v1/infra/segments/<Segment to which child port is connected>/ports/<Child-port>
    {
       "attachment": {
         "id": "<Attachment UUID of the CHILD port>",
         "type": "CHILD",
         "context_id": "<Attachment UUID of the PARENT port from Step 1>",
         "traffic_tag": <VLAN ID>,
         "app_id": "<ID of the attachment>", ==> display id(can be any string). Must be unique.
      },
       "address_bindings": [
        {
           "ip_address": "<IP address to the corresponding VLAN>",
           "mac_address": "<vNIC MAC Address>",
           "vlan_id": <VLAN ID>
        }
      ],
       "admin_state": "UP",
       "resource_type": "SegmentPort",
       "display_name": "<Name of the Child PORT>"
    }
    
    논리적 스위치에 해당 세그먼트가 없는 경우 다음과 같은 REST API 호출(논리적 포트 proton API)을 수행할 수 있습니다.
    POST https://<nsx-mgr-ip>/api/v1/logical-ports/
    {
      "resource_type" : "LogicalPort",
      "display_name" : "<Name of the Child PORT>",   
      "attachment" : {
        "attachment_type" : "VIF",
        "context" : {
          "resource_type" : "VifAttachmentContext",
          "parent_vif_id" : "<UUID of the PARENT port from Step 1>",     
          "traffic_tag" : <VLAN ID>,    
          "app_id" : "<ID of the attachment>",  ==> display id(can give any string). Must be unique.
          "vif_type" : "CHILD"
        },
       "id" : "<ID of the CHILD port>"  
      },
      
      "logical_switch_id" : "<UUID of the Logical switch(not the PARENT PORT's logical switch) to which Child port would be connected to>",         
      "address_bindings" : [ { "mac_address" : "<vNIC MAC address>", "ip_address" : "<IP address to the corresponding VLAN>", "vlan" : <VLAN ID> } ],       
      "admin_state" : "UP"
    }

결과

NSX는 VM에 하위 인터페이스를 생성합니다.