Antrea를 사용하여 Kubernetes 워크로드에 대해 고급 IPAM, 라우팅 및 NAT를 사용하도록 설정하는 하위 세그먼트를 생성할 수 있습니다. 하위 세그먼트는 라우팅 가능한 포드의 유연한 IPAM 및 Antrea 송신과 같은 Antrea 기능을 지원하도록 설계되었습니다.

참고: 이 기능은 API를 통해서만 사용할 수 있습니다.

다음 다이어그램은 하위 세그먼트가 다른 구성 요소에 연결되는 방식을 보여 줍니다.

상위 세그먼트는 일반 NSX 세그먼트입니다. 세그먼트를 상위 세그먼트로 만들기 위해 구성이 필요하지는 않습니다. 하위 세그먼트는 하나 이상의 상위 세그먼트와 연결되며 각 상위 세그먼트에 대해 VLAN ID가 할당됩니다. 상위 세그먼트는 특정 VLAN ID가 태그로 지정된 하위 세그먼트 트래픽만 전송합니다.

하위 및 상위 세그먼트의 속성:
  • 하위 세그먼트를 여러 상위 세그먼트와 연결할 수 있습니다.
  • 하나의 상위 세그먼트에 여러 하위 세그먼트가 있을 수 있습니다.
  • 상위 세그먼트에 연결된 각 하위 세그먼트에는 고유한 VLAN ID가 있어야 하며 동일한 상위 세그먼트에 연결된 어떤 두 개의 하위 세그먼트도 VLAN ID를 공유할 수 없습니다.
  • 여러 상위 세그먼트에 연결하는 하위 세그먼트는 이러한 연결에 동일하거나 다른 VLAN ID를 사용할 수 있습니다.
  • 하위 세그먼트는 다른 하위 세그먼트의 상위 세그먼트일 수 없습니다.
  • 하위 세그먼트는 오버레이 세그먼트 또는 VLAN 세그먼트일 수 있습니다.
  • VM(가상 시스템)은 하위 세그먼트에 연결될 수 있습니다. 이렇게 하면 VM이 표준 세그먼트에 연결된 경우와 유사하게 세그먼트 포트가 생성됩니다.
  • 상위-하위 연결에 대한 하위 세그먼트에는 세그먼트 포트가 생성되지 않습니다.
  • 하위 세그먼트와 상위 세그먼트는 독립적입니다. 즉, 다음을 의미합니다.
    • 동일하거나 다른 Tier-1 또는 Tier-0 게이트웨이에 연결할 수 있습니다.
    • 서로 다른 구성 또는 스위칭 프로파일을 유지할 수 있습니다.
    • 상위 세그먼트의 구성은 하위 세그먼트에 상속되지 않습니다.
    • 상위 세그먼트가 포함된 그룹에는 하위 세그먼트가 자동으로 포함되지 않습니다.
    • 분산 방화벽과 같은 상위 세그먼트에 구성된 서비스는 하위 세그먼트로 확장되지 않습니다.

하위 세그먼트에 연결된 VM의 경우 모든 세그먼트 관련 기능이 지원됩니다. 하위 세그먼트를 통과하는 컨테이너 트래픽의 경우 다음 표에 지원되는 기능과 지원되지 않는 기능이 나열되어 있습니다.

기능 지원됨
분산 방화벽 아니요
IP 검색 세그먼트 프로파일 아니요
MAC 검색 세그먼트 프로파일 아니요
세그먼트 보안 세그먼트 프로파일 아니요
SpoofGuard 세그먼트 프로파일 아니요
QoS 세그먼트 프로파일 아니요
포트 미러링 아니요
IPFix 아니요
업링크 팀 구성
미러 구성(업링크 범위)
NSGroup 아니요
지연 시간 아니요

Antrea를 사용한 하위 세그먼트 사용법

Antrea에 구성된 각 라우팅 가능 서브넷(예: 라우팅 가능한 포드의 IP 풀, 송신용 외부 IP 풀)은 하위 세그먼트에 매핑되고 Kubernetes 노드 VM의 세그먼트는 하위 세그먼트의 상위 항목입니다. Kubernetes 노드 VM의 OVS(Open vSwitch)는 VNIC를 통해 패킷을 전송하기 전에 트래픽에 올바른 VLAN ID를 태그로 지정합니다.

상위 세그먼트와 하위 세그먼트 간의 연결을 생성하는 워크플로:
  • 상위 세그먼트를 생성합니다. API 또는 NSX Manager UI를 사용할 수 있습니다.
  • 하위 세그먼트를 생성합니다. API 또는 NSX Manager UI를 사용할 수 있습니다.
  • API를 사용하여 상위 세그먼트 경로 및 VLAN ID를 지정하여 하위 세그먼트에 연결 바인딩 맵을 생성합니다.
하위 세그먼트를 삭제하는 워크플로:
  • API를 사용하여 하위 세그먼트의 기존 연결 바인딩 맵을 모두 삭제합니다.
  • 하위 세그먼트를 삭제합니다. API 또는 NSX Manager UI를 사용할 수 있습니다.
상위 세그먼트를 삭제하는 워크플로:
  • API를 사용하여 이 상위 세그먼트를 모든 하위 세그먼트에 연결하는 모든 기존 연결 바인딩 맵을 삭제합니다.
  • 상위 세그먼트를 삭제합니다. API 또는 NSX Manager UI를 사용할 수 있습니다.

API

다음 API 호출을 사용하여 하위 세그먼트를 관리할 수 있습니다. 자세한 내용은 "NSX API 가이드" (NSX 설명서로 이동한 후 왼쪽 탐색 창을 사용하여 API 가이드 찾기)를 참조하십시오.

GET /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps
DELETE /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
DELETE /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps
DELETE /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
DELETE /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}

연결 바인딩 맵을 생성할 때 PUT API에서 지정하는 맵 ID는 고유해야 합니다. PUT /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}를 사용하여 바인딩 맵을 생성하는 예:

API 요청:
PUT https://<nsx-manager>/policy/api/v1/infra/segments/test2/segment-connection-binding-maps/map-id-1
{
    "vlan_traffic_tag": "1002",
    "segment_path": "/infra/segments/openshift-segment"
}
API 응답:
{
  "vlan_traffic_tag" : 1002,
  "segment_path" : "/infra/segments/openshift-segment",
  "resource_type" : "SegmentConnectionBindingMap",
  "id" : "map-id-1",
  "display_name" : "map-id-1",
  "path" : "/infra/segments/test2/segment-connection-binding-maps/map-id-1",
  "relative_path" : "map-id-1",
  "parent_path" : "/infra/segments/test2",
  "remote_path" : "",
  "unique_id" : "7ac8c0fb-a0e1-471a-bed6-d15f1b85e0c6",
  "realization_id" : "7ac8c0fb-a0e1-471a-bed6-d15f1b85e0c6",
  "owner_id" : "210584d9-6329-452e-bb01-0133945ab675",
  "marked_for_delete" : false,
  "overridden" : false,
  "_system_owned" : false,
  "_protection" : "NOT_PROTECTED",
  "_create_time" : 1712718210160,
  "_create_user" : "admin",
  "_last_modified_time" : 1712718210160,
  "_last_modified_user" : "admin",
  "_revision" : 0
}

Traceflow

Traceflow는 하위 세그먼트와 관련된 다음과 같은 시나리오를 지원합니다.
  • 소스는 하위 세그먼트의 컨테이너이고 대상은 하위 세그먼트의 컨테이너입니다.
  • 소스는 하위 세그먼트의 컨테이너이고 대상은 일반 포트입니다.
  • 소스는 상위 포트입니다. Antrea 컨테이너가 VM 내에서 실행되고 있기 때문에 하위 세그먼트가 없습니다.

하위 세그먼트를 통과하는 패킷의 Traceflow를 수행하려면 이 API를 사용해야 합니다. Traceflow를 설정하려면 API 호출 PUT https://<mgr-ip>/policy/api/v1/infra/traceflows/<traceflow-id>를 사용합니다. 예를 들면 다음과 같습니다.

PUT https://<mgr-ip>/policy/api/v1/infra/traceflows/<traceflow-id>
{
  "segment_port_path": "/infra/segments/parent/ports/default:658c6c45-286f-4a23-832f-a646253b200b",
  "connected_segment_path_as_source": "/infra/segments/child",
  "packet": {
    "eth_header": {
      "src_mac": "00:50:56:ad:28:d5",
      "dst_mac": "00:50:56:ad:c0:a4",
      "eth_type": 2048
    },
    "ip_header": {
      "src_ip": "192.168.100.10",
      "dst_ip": "192.168.100.20",
      "protocol": 1,
      "ttl": 64,
      "flags": 0
    },
    "transport_header": {
      "icmp_echo_request_header": {
        "id": 0,
        "sequence": 0
      }
    },
    "payload": "",
    "resource_type": "FieldsPacketData",
    "frame_size": 128,
    "routed": false,
    "transport_type": "UNICAST"
  },
  "timeout": 10,
  "is_transient": true
}

매개 변수 connected_segment_path_as_source는 하위 세그먼트를 가리킵니다. 이 매개 변수를 설정하지 않으면 패킷이 하위 세그먼트를 통과하지 않습니다.

자세한 내용은 "NSX API 가이드" (NSX 설명서로 이동한 후 왼쪽 탐색 창을 사용하여 API 가이드 찾기)를 참조하십시오.

하위 및 상위 세그먼트 통계

하위 세그먼트에 대한 통계에는 세그먼트에 연결된 VM에 대한 통계만 포함됩니다. Antrea 컨테이너에 대한 통계는 포함되지 않습니다.

상위 세그먼트의 경우 수신 통계에는 Antrea 컨테이너에 대한 통계가 포함됩니다. 송신 통계에는 Antrea 컨테이너에 대한 통계가 포함되지 않습니다.