VMware 合作夥伴閘道提供不同的組態選項。安裝閘道前應該先準備一張工作表。

工作表

SD-WAN Gateway
  • 版本 (Version)
  • OVA/QCOW2 檔案位置
  • 啟用金鑰 (Activation Key)
  • SD-WAN Orchestrator (IP 位址/vco-fqdn-hostname)
  • 主機名稱
Hypervisor 位址/叢集名稱
儲存區 根磁碟區資料存放區 (建議 >40GB)
備註: 在合作夥伴閘道主機上,建議 /tmp/partition 目錄中的可用磁碟空間至少是記憶體 (RAM) 大小的兩倍。
CPU 配置 KVM/VMware 的 CPU 配置。
安裝選項 DPDK - 此選項是可選的,依預設會啟用,以提高總流量。如果您選擇停用 DPDK,請連絡 VMware 客戶支援
OAM 網路 (可選,請參閱〈自訂配置〉)
  • DHCP
  • OAM IPv4 位址
  • OAM IPv4 網路遮罩
  • DNS 伺服器 - 主要
  • DNS 伺服器 - 次要
  • 靜態路由
ETH0 – 網際網路對向網路
  • IPv4 位址
  • IPv4 網路遮罩
  • IPv4 預設閘道
  • DNS 伺服器 - 主要
  • DNS 伺服器 - 次要
遞交 (ETH1) - 網路
  • 管理 VRF IPv4 位址
  • 管理 VRF IPv4 網路遮罩
  • 管理 VRF IPv4 預設閘道
  • DNS 伺服器 - 主要
  • DNS 伺服器 - 次要
  • 遞交 ( QinQ (0x8100)、QinQ (0x9100)、無、802.1Q、802.1ad)
  • C 標籤
  • S 標籤
主控台存取
  • Console_Password
  • SSH:
    • 已啟用 (是/否)
    • SSH 公開金鑰
NTP (可選,請參閱〈自訂組態〉小節)
  • 公用 NTP:
    • 伺服器 0.ubuntu.pool.ntp.org
    • 伺服器 1.ubuntu.pool.ntp.org
    • 伺服器 2.ubuntu.pool.ntp.org
    • 伺服器 3.ubuntu.pool.ntp.org
  • 內部 NTP 伺服器 - 1
  • 內部 NTP 伺服器 - 2

SD-WAN Gateway 區段

大部分 SD-WAN Gateway 區段都不言而喻。

SD-WAN Gateway
  • 版本 - 應等於或低於 SD-WAN Orchestrator
  • OVA/QCOW2 檔案位置 - 預先規畫檔案位置和磁碟配置
  • 啟用金鑰 (Activation Key)
  • SD-WAN Orchestrator (IP 位址/vco-fqdn-hostname)
  • 主機名稱 - 有效的 Linux 主機名稱「RFC 1123」

建立閘道和取得啟用金鑰

  1. 移至操作員 (Operator) > 閘道集區 (Gateway Pool),建立新的 SD-WAN Gateway 集區。若要在服務提供者網路中執行 SD-WAN Gateway,請勾選允許合作夥伴閘道 (Allow Partner Gateway) 核取方塊。這將啟用讓您在此閘道集區中包含合作夥伴閘道的選項。

    vcg-new-pool

  2. 移至操作員 (Operator) > 閘道 (Gateway),建立新的閘道並指派給集區。此處輸入的閘道 IP 位址,必須與閘道的公用 IP 位址 (public IP address) 相符。如果不確定,您可以從 SD-WAN Gateway 執行 curl ipinfo.io/ip,將會傳回 SD-WAN Gateway 的公用 IP。

    vcg-create-new-gateway

  3. 記下啟用金鑰,並新增至工作表。

    vcg-gateway-activation-key

啟用合作夥伴閘道模式

  1. 移至操作員 (Operator) > 閘道 (Gateways),然後選取 SD-WAN Gateway。勾選合作夥伴閘道 (Partner Gateway) 核取方塊,以啟用合作夥伴閘道。

    vcg-properties-partner-gateway-checkbox

    另有其他參數可供設定。最常用的參數如下:

    通告 0.0.0.0/0 且不加密 (Advertise 0.0.0.0/0 with no encrypt)

    vcg-advanced-handoff-static-routes

此選項可讓合作夥伴閘道針對 SAAS 應用程式通告雲端流量的路徑。由於加密旗標已關閉,是否使用此路徑取決於客戶的商務原則組態。

第二個建議選項是將 SD-WAN Orchestrator IP 通告為 /32 並加密。

vcg-advanced-handoff-static-routes-encrypt-checkbox

這將強制從 Edge 傳送至 SD-WAN Orchestrator 的流量採取閘道路徑。這是建議的選項,以利於預測 SD-WAN Edge 達到 SD-WAN Orchestrator 所採取的行為。

網路

重要: 下列程序和螢幕擷取畫面是針對最常見的部署,即閘道的 2-ARM 安裝。 OAM 介面和靜態路由一節中說明新增 OAM 網路。

vcg-partner-gateway-pe-image

上圖呈現 2-ARM 部署中的 SD-WAN Gateway。在此範例中,假設 eth0 是面向公用網路 (網際網路) 的介面,而 eth1 是面向內部網路 (遞交或 VRF 介面) 的介面。

備註: 管理 VRF 會在 SD-WAN Gateway 上建立,用於將定期 ARP 重新整理傳送至預設閘道 IP,以檢查遞交介面是否實際運作,並加速容錯移轉時間。為此,建議在 PE 路由器上設定專用的 VRF。或者,PE 路由器也可以使用相同的管理 VRF,將 IP SLA 探查傳送至 SD-WAN Gateway 以檢查 SD-WAN Gateway 狀態 ( SD-WAN Gateway 具有可設定狀態的 ICMP 回應程式,但僅在其服務已啟動時才會回應 Ping)。如果未設定專用的管理 VRF,則您可以使用其中一個客戶 VRF 作為管理 VRF (但不建議)。

對於網際網路對向網路,您只需要基本網路設定。

ETH0 – 網際網路對向網路
  • IPv4_Address
  • IPv4_Netmask
  • IPv4_Default_gateway
  • DNS_server_primary
  • DNS_server_secondary

對於遞交介面,您必須知道想要設定的遞交類型,以及「管理 VRF」的遞交組態。

ETH1 – 遞交網路
  • MGMT_IPv4_Address
  • MGMT_IPv4_Netmask
  • MGMT_IPv4_Default 閘道
  • DNS_Server_Primary
  • DNS_Server_Secondary
  • 遞交 ( QinQ (0x8100)、QinQ (0x9100)、無、802.1Q、802.1ad)
  • C_TAG_FOR_MGMT_VRF
  • S_TAG_FOR_MGMT_VRF

主控台存取 (Console Access)

主控台存取
  • Console_Password
  • SSH:
    • 已啟用 (是/否)
    • SSH 公開金鑰

若要存取閘道,則必須建立主控台密碼和/或 SSH 公開金鑰。

建立 Cloud-Init

我們在工作表中定義的閘道組態選項會用於 cloud-init 組態中。Cloud-init 組態由兩個主要組態檔組成,即中繼資料檔案和使用者資料檔案。中繼資料包含閘道的網路組態,而使用者資料包含閘道軟體組態。此檔案提供資訊來識別要安裝的 SD-WAN Gateway 執行個體。

以下是 Meta_data 和 User_data 檔案的範本。

將工作表中的資訊填入範本。必須更換所有 #_VARIABLE_#,另外請檢查任何 #ACTION#

重要: 範本假設針對介面使用靜態組態。同時也假設所有介面皆使用或不使用 SR-IOV。如需詳細資訊,請參閱 OAM - SR-IOV 搭配 vmxnet3,或 SR-IOV 搭配 VIRTIO
meta-data 檔案:
instance-id: #_Hostname_#
local-hostname: #_Hostname_#
 
network-interfaces: |
   auto eth0
      iface eth0 inet static
         address #_IPv4_Address_# 
         mac_address #_mac_Address_#       
         netmask #_IPv4_Netmask_# 
         gateway #_IPv4_Gateway_# 
         dns-nameservers 
            #_DNS_server_primary_# 
            #_DNS_server_secondary_# 
   auto eth1
      iface eth1 inet static
         metric '13'
         address #_MGMT_IPv4_Address_# 
         mac_address #_MGMT_mac_Address_# 
         netmask #_MGMT_IPv4_Netmask_# 
         gateway #_MGMT_IPv4_Gateway_# 
         dns-nameservers 
            #_DNS_server_primary_# 
            #_DNS_server_secondary_# 
 
user-data 檔案:
#cloud-config
hostname: #_Hostname_#
password: #_Console_Password_# 
chpasswd: 
  expire: false

ssh_authorized_keys: 
  - #_SSH_public_Key_#
ssh_pwauth: true

velocloud: 
  vcg: 
    activation_code: #_Activation_Key_#
    vco: #_VCO_#

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: 
  - 
    content: |
        #!/usr/bin/python
        import json
        ### 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_(1)_OR_DISABLED_(0)_# 
        with open("/opt/vc/etc/dpdk.json", "w") as jsonFile:
          jsonFile.write(json.dumps(data,sort_keys=True,indent=4, separators=(",", ": ")))
    path: /var/lib/cloud/scripts/per-boot/config_gateway
    permissions: "0755"

final_message: "==== Cloud-init completed ===="

power_state: 
  condition: true
  delay: "+1"
  message: "Bye Bye"
  mode: reboot
  timeout: 30
重要:
  • VMware 建議您針對所有生產 Orchestrator 設定適當的完整網域名稱 (FQDN),以便可以為其發行適當的 TLS 憑證。
  • 如果使用 Orchestrator 的 IP 位址進行啟用是唯一的選項,請使用下列範例,指示 Edge 略過 TLS 驗證。
    commands.getoutput("/opt/vc/bin/ activate.py -s myvco.example.com -i #_activation_key_#")
  • 不建議將此組態用於生產用途,強烈建議您盡可能針對 Orchestrator 的主機名稱重新啟動。
備註: 一律使用 http://www.yamllint.com/ 來驗證使用者資料和中繼資料。在 cloud-init 完成後,中繼資料也應該是網路介面 ( /etc/network/interfaces) 區段下方的有效網路組態。使用 Windows/Mac 複製貼上功能時,有時會因為導入「智慧型引號」而損毀檔案。請執行下列命令,以確保不受智慧型引號所影響。
sed s/[”“]/'"'/g /tmp/user-data > /tmp/user-data_new

建立 ISO 檔案

完成檔案後,您必須將其封裝為 ISO 映像。此 ISO 映像用作虛擬機器的虛擬組態 CD。此 ISO 映像 (稱為 vcg01-cidata.iso) 是在 Linux 系統上使用下列命令所建立:

genisoimage -output vcg01-cidata.iso -volid cidata -joliet -rock user-data meta-data

如果您在 MAC OSX 上,請改為使用下列命令:

mkisofs -output vcg01-cidata.iso -volid cidata -joliet -rock {user-data,meta-data}

OVA 和 VMware 安裝時將使用此 iso 檔案,稱為 #CLOUD_INIT_ISO_FILE#。