子セグメントを作成して、Antrea を使用する Kubernetes ワークロードの高度な IP アドレス管理、ルーティング、および NAT を有効にすることができます。子セグメントは、ルーティング可能なポッドの柔軟な IP アドレス管理や Antrea 出力方向などの Antrea 機能をサポートするように設計されています。

注: この機能は API 経由でのみ使用します。

次の図は、子セグメントが他のコンポーネントにどのように接続されているかを示しています。

親セグメントは、通常の NSX セグメントです。セグメントを親セグメントにするための構成は必要ありません。子セグメントは 1 つ以上の親セグメントに関連付けられているため、親ごとに VLAN ID が割り当てられます。親セグメントは、特定の VLAN ID でタグ付けされた子セグメント トラフィックのみを送信します。

子セグメントと親セグメントのプロパティ:
  • 子セグメントは、複数の親セグメントに関連付けることができます。
  • 親セグメントには、多数の子セグメントを含めることができます。
  • 親にリンクされた各子セグメントには個別の VLAN ID が必要です。同じ親に接続されている 2 つの子セグメントが VLAN ID を共有することはできません。
  • 複数の親に接続している子セグメントは、これらの接続に同じまたは異なる VLAN ID を使用できます。
  • 子セグメントを別の子セグメントの親にすることはできません。
  • 子セグメントには、オーバーレイ セグメントまたは VLAN セグメントのいずれかを指定できます。
  • 仮想マシン (VM) は、子セグメントに接続できます。その場合、仮想マシンが標準セグメントに接続されている場合と同様に、セグメント ポートが作成されます。
  • 親子接続の子セグメントにセグメント ポートが作成されることはありません。
  • 子セグメントと親セグメントは独立しています。これは次のことを意味します。
    • 同じまたは異なる Tier-1 または Tier-0 ゲートウェイに接続できます。
    • 異なる構成またはスイッチング プロファイルを持つことができます。
    • 親セグメントの構成は、その子セグメントに継承されません。
    • 親セグメントを含むグループには、その子セグメントは自動的に含まれません。
    • 分散ファイアウォールなどの親セグメントで構成されたサービスは、子セグメントに拡張されません。

子セグメントに接続されている仮想マシンの場合、セグメント関連のすべての機能がサポートされます。子セグメントを通過するコンテナ トラフィックについて、次の表に、サポートされている機能とサポートされていない機能を示します。

機能 サポート
分散ファイアウォール ×
IP 検出セグメント プロファイル ×
MAC 検出セグメント プロファイル ×
セグメント セキュリティのセグメント プロファイル ×
SpoofGuard セグメント プロファイル ×
QoS セグメント プロファイル ×
ポート ミラーリング ×
IPFIX ×
アップリンク チーミング
ミラー構成(アップリンク範囲)
NSGroup ×
遅延 ×

Antrea での子セグメントの使用

Antrea で構成されたルーティング可能な各サブネット(ルーティング可能なポッドの IP プール、出力方向の外部 IP プールなど)は子セグメントにマッピングされ、Kubernetes ノード仮想マシンのセグメントは子セグメントの親になります。Kubernetes ノード仮想マシンの OVS (Open vSwitch) は、VNIC を介してパケットを送信する前に、トラフィックに正しい VLAN ID をタグ付けします。

親セグメントと子セグメント間の接続を作成するワークフロー:
  • 親セグメントを作成します。API または NSX Manager ユーザー インターフェイスを使用できます。
  • 子セグメントを作成します。API または NSX Manager ユーザー インターフェイスを使用できます。
  • API を使用して、親セグメントのパスと VLAN ID を指定して、子セグメントに接続バインド マップを作成します。
子セグメントを削除するワークフロー:
  • API を使用して、子セグメントの既存のすべての接続バインド マップを削除します。
  • 子セグメントを削除します。API または NSX Manager ユーザー インターフェイスを使用できます。
親セグメントを削除するワークフロー:
  • API を使用して、この親セグメントをすべての子セグメントに接続する既存のすべての接続バインド マップを削除します。
  • 親セグメントを削除します。API または NSX Manager ユーザー インターフェイスを使用できます。

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
}

トレースフロー

トレースフローは、子セグメントに関連する次のシナリオをサポートします。
  • 送信元は子セグメントのコンテナで、宛先は子セグメントのコンテナです。
  • 送信元は子セグメントのコンテナで、宛先は通常のポートです。
  • 送信元は親ポートです。Antrea コンテナが仮想マシン内で実行されているため、子セグメントはありません。

子セグメントを通過するパケットのトレースフローを実行するには、API を使用する必要があります。トレースフローを設定するには、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 ガイドを見つけます)。

子セグメントと親セグメントの統計情報

子セグメントの統計情報には、セグメントに接続されている仮想マシンの統計情報のみが含まれます。Antrea コンテナの統計情報は含まれません。

親セグメントの場合、入力方向の統計情報には Antrea コンテナの統計情報が含まれます。出力方向の統計情報には、Antrea コンテナの統計情報は含まれません。