在某些安裝中,可以為閘道混用、配對和提供不同的介面類型。這通常發生在您 OAM 沒有 SR-IOV 的情況下。此自訂組態會導致介面的順序紊亂,所以需要額外的步驟。
- 記錄每個介面的 MAC 位址。
VMware
建立機器後,請移至編輯設定 (Edit Settings),並複製 Mac 位址。
KVM
定義虛擬機器後,請執行下列命令:
- 編輯使用者資料,並將 mac 位址固定為介面順序,如下所示:
使用者資料 (Userdata)
#cloud-config hostname: #_Hostname_# password: #_Console_Password_# chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - #_SSH_public_Key_# runcmd: - 'echo "[]" > /opt/vc/etc/vc_blocked_subnets.json' - 'sed -iorig "s/wan=\".*/wan=\"eth0 eth1\"/" /etc/config/gatewayd-tunnel' - '/var/lib/cloud/scripts/per-boot/config_gateway' - 'sleep 10' - '/opt/vc/bin/vc_procmon restart' write_files: - path: "/etc/udev/rules.d/70-persistent-net.rules" permissions: '0644' content: | SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="#_ETH0_MAC_ADDRESS_#", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="#_ETH1_MAC_ADDRESS_#", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" # NOTE ETH2 IS OAM IF NO OAM PRESENT THEM REMOVE SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="#_ETH2_MAC_ADDRESS_#", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2" - path: "/var/lib/cloud/scripts/per-boot/config_gateway" permissions: "0777" content: | #!/usr/bin/python import json import commands is_activated = commands.getoutput("/opt/vc/bin/is_activated.py") if "True" in str(is_activated): print "Gateway already activated" exit commands.getoutput("/opt/vc/bin/activate.py -s #_VCO_# #_Activation_Key_# ") ### EDIT GATEWAYD ### with open("/etc/config/gatewayd", "r") as jsonFile: data = json.load(jsonFile) data["global"]["vcmp.interfaces"] = ["eth0"] data["global"]["wan"] = ["eth1"] # NOTE FOR HAND OFF IT CAN BE "QinQ (0x8100)" "QinQ (0x9100)" "none" "802.1Q" "802.1ad" data["vrf_vlan"]["tag_info"][0]["mode"] = "#_Handoff_" data["vrf_vlan"]["tag_info"][0]["interface"] = "eth1" data["vrf_vlan"]["tag_info"][0]["c_tag"] = "#_C_TAG_FOR_MGMT_VRF_#" data["vrf_vlan"]["tag_info"][0]["s_tag"] = "#_S_TAG_FOR_MGMT_VRF_" with open("/etc/config/gatewayd", "w") as jsonFile: jsonFile.write(json.dumps(data,sort_keys=True,indent=4, separators=(",", ": "))) ### EDIT DPDK ### with open("/opt/vc/etc/dpdk.json", "r") as jsonFile: data = json.load(jsonFile) #SET 0 or 1 for enabled or DISABLED example data["dpdk_enabled"] = 0 data["dpdk_enabled"] = #_DKDP_ENABLED_OR_DISABLED_# with open("/opt/vc/etc/dpdk.json", "w") as jsonFile: jsonFile.write(json.dumps(data,sort_keys=True,indent=4, separators=(",", ": "))) final_message: "==== Cloud-init completed ====" power_state: delay: "+1" mode: reboot message: Bye Bye timeout: 30 condition: True