802.1ad デバイスでは外部タグ EtherType に 0x88A8 が含まれることはないものと思われます。それらのデバイスとの相互運用を確保するため、user data で特別な変更が必要です。
たとえば、管理 VRF が S-Tag: 20 と C-Tag: 100 を使用して構成されている場合は、/etc/config/gatewayd の vrf_vlan セクションを次のように編集します。また、resp_mode を 1 に定義して SD-WAN Gateway のチェック レベルを緩和し、外部ヘッダーに値が 0x8100 の間違った EtherType が含まれているイーサネット フレームが許可されるようにします。
#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: "/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]["resp_mode"] = "1"
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