在覆疊網路上,NSX 支援在 L3 網域上路由 VLAN 間流量。在路由期間,虛擬分散式路由器 (VDR) 會使用 VLAN 識別碼來路由 VLAN 子網路之間的封包。
VLAN 間路由克服了每個虛擬機器只能使用 10 個 vNIC 的限制。NSX 支援 VLAN 間路由,可確保能夠在 vNIC 上建立多個 VLAN 子介面,並且用於不同的網路服務。例如,虛擬機器的一個 vNIC 可分割為多個子介面。每個子介面分別屬於一個子網路,可主控 SNMP 或 DHCP 等網路服務。例如,使用 VLAN 間路由時,VLAN-10 上的子介面可連線到 VLAN-10 或任何其他 VLAN 上的子介面。
虛擬機器上的每個 vNIC 都會透過負責管理未標記封包的父系邏輯連接埠連線至交換器。
若要建立子介面,請在增強模式中設定的交換器上,使用 API 與相關聯的 VIF 透過程序中說明的 API 呼叫來建立子系連接埠。以 VLAN 識別碼標記的子介面會與新的邏輯交換器相關聯,例如,VLAN10 會連結至邏輯交換器 LS-VLAN-10。VLAN10 的所有子介面都必須連結至 LS-VLAN-10。子介面的 VLAN 識別碼及其相關聯的邏輯交換器之間的這種 1 對 1 對應,是一項重要的必要條件。例如,若將 VLAN20 的子系連接埠新增至對應於 VLAN-10 的邏輯交換器 LS-VLAN-10,將會使 VLAN 之間的封包路由無法運作。這類組態錯誤會導致 VLAN 間路由無法運作。
從 NSX 3.2.2 開始,邏輯連接埠 Proton API 換成對應的區段連接埠原則 API。
程序
- 若要為 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
}
- 若要在與虛擬機器上的子介面相關聯的 N-VDS 上,建立父系 vNIC 連接埠的子連接埠,請進行下列 API 呼叫:
備註: 在進行 API 呼叫前,請先確認有區段存在,可將子連接埠連線至虛擬機器上的子介面。
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"
}