实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

測試 VM 之間的網路延遲時間

实验 15 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP161

Google Cloud 自學實驗室標誌

總覽

只要使用虛擬私人網路 (VPN),就能將虛擬機器 (VM) 與子網路設置在不同地理位置。對於營運據點遍布全球的組織來說,多區域、多可用區的 VPN 是一項網路解決方案,可用性、擴充性和安全性都相當高。本實驗室中我們將著重探討網路連線與速度,並證明下列幾點:

  • 如果某區域或可用區發生服務中斷或干擾情況,流量會自動重新轉送至其他正常的區域或可用區,確保連線能力不受影響。
  • 如果區域中有端點位於使用者附近,網路路徑會縮短,因此可減少延遲時間並提高整體效能。
  • 多區域 VPN 能根據網路狀況和使用者位置靈活轉送流量,確保採用最快且最有效率的路徑。

在本實驗室中,您將使用 gcloud CLI 新增 VM 至您的現有網路,然後測試 VM 之間的連線能力與延遲時間。

事前準備

雖然沒有強制規定,但我們建議您先完成「建立自訂網路並套用防火牆規則」實驗室來瞭解相關知識。我們會假設您在進行此實驗室前已具備相關概念。

課程內容

  • 將 VM 新增至現有的 VPN 子網路
  • 確認 VM 之間的連線狀態
  • 測量可用區之間的延遲時間

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

設定區域和可用區

某些 Compute Engine 資源位於區域和可用區。「區域」是您可以執行資源的特定地理位置,每個區域中會有一或多個「可用區」。

請在 Cloud Shell 執行下列 gcloud 指令,設定研究室的預設區域和可用區:

gcloud config set compute/zone "{{{project_0.default_zone | Zone}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region | Region}}}" export REGION=$(gcloud config get compute/region)

點選左選單中的「虛擬私有雲網路」,查看整個網路。taw-custom-network 有三個子網路且已套用防火牆規則。

檢查網路和子網路的設定。

下一步是在各個子網路建立 VM,並確實連結這些 VM。

工作 1:連結 VM 並確認延遲時間

在這項工作中,您會在每個可用區建立一個虛擬機器,每個機器都會有網路標記,防火牆規則需要參考標記來允許網路流量。

  1. 執行下列指令,在 subnet- 子網路建立 us-test-01 執行個體:
gcloud compute instances create us-test-01 \ --subnet subnet-{{{project_0.default_region | Region}}} \ --zone {{{project_0.default_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules

請務必記下外部 IP,本研究室的後續步驟會用到。

輸出內容:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/zones/{{{project_0.default_zone | ZONE}}}/instances/us-test-01]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS us-test-01 {{{project_0.default_zone | ZONE}}} e2-standard-2 10.0.0.2 104.198.230.22 RUNNING
  1. 接著在相關聯的子網路建立 us-test-02us-test-03 VM:
gcloud compute instances create us-test-02 \ --subnet subnet-{{{project_0.default_region_2 | REGION}}} \ --zone {{{project_0.default_zone_2 | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules gcloud compute instances create us-test-03 \ --subnet subnet-{{{project_0.default_region_3 | REGION}}} \ --zone {{{project_0.default_zone_3 | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules

點選「Check my progress」,確認目標已達成。

在指定的可用區建立三個執行個體,以執行「路徑追蹤 (traceroute) 和效能測試」。

確認您能連至 VM

接著請完成幾項練習,測試能否順利連至 VM。使用連線偵測 (ping) 測試主機的可連性,然後計算訊息封包往返發訊端主機與接收端電腦所需的時間。

  1. 回到控制台,前往「Compute Engine」

  2. 找到 us-test-01 執行個體,點選對應的「SSH」按鈕,連至該執行個體的 SSH 連線就會在新視窗中開啟。

  3. us-test-01 的 SSH 視窗中輸入下列指令,將 VM 的外部 IP 位址加入指令行,使用 ICMP (網際網路控制訊息通訊協定) 回應 us-test-02

ping -c 3 <us-test-02-external-ip-address>

您可以前往「Compute Engine」瀏覽器分頁,在「外部 IP」欄位底下找到虛擬機器的外部 IP。

注意:您的 IP 位址會與圖片內容不同。
  1. 執行下列指令,在指令行中加入 VM 的外部 IP 位址,使用 ICMP 回應 us-test-03
ping -c 3 <us-test-03-external-ip-address>

輸出內容範例:

PING 35.187.149.67 (35.187.149.67) 56(84) bytes of data. 64 bytes from 35.187.149.67: icmp_seq=1 ttl=76 time=152 ms 64 bytes from 35.187.149.67: icmp_seq=2 ttl=76 time=152 ms 64 bytes from 35.187.149.67: icmp_seq=3 ttl=76 time=152 ms
  1. 接著確認同樣能透過 SSH 連至 us-test-02us-test-03 執行個體,請試著對 us-test-01 使用 ICMP 回應。

使用連線偵測 (ping) 測量延遲時間

「延遲」指的是資料封包往返來源與目的地所耗費的時間,通常以毫秒 (ms) 計。

  • us-test-01 開啟 SSH 視窗並執行下列指令,使用連線偵測 (ping) 測量這些區域之間的延遲時間:
ping -c 3 us-test-02.{{{project_0.default_zone_2 | ZONE}}}

指令輸出:

PING us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2) 56(84) bytes of data. 64 bytes from us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=1 ttl=64 time=105 ms 64 bytes from us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=2 ttl=64 time=104 ms 64 bytes from us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=3 ttl=64 time=104 ms

傳回的延遲資訊為「封包往返時間」(RTT),也就是封包從 us-test-01 傳至 us-test-02 所需的時間。

為了測試連線能力,連線偵測 (ping) 會使用 ICMP 回應要求及回應回覆訊息

注意:請留意下列幾點

就您所見,區域之間的延遲狀況如何?從「us-test-02」連至「us-test-03」有什麼特別的情況?
注意:內部 DNS 是以何種方式提供給 VM 執行個體?

每個執行個體都有中繼資料伺服器,這個伺服器也是該執行個體的 DNS 解析器,且會對執行個體名稱執行 DNS 查詢。中繼資料伺服器本身會儲存本機網路的所有 DNS 資訊,並查詢 Google 公開 DNS 伺服器是否有任何不在本機網路內的位址。

執行個體的內部完整網域名稱 (FQDN) 會類似這樣:hostName.[ZONE].c.[PROJECT_ID].internal。

用這個 FQDN 即可讓您從某個執行個體連至其他執行個體。但如要透過別的方式(像是使用主機名稱) 連至執行個體,就需要透過 Compute Engine 提供的內部 DNS 解析器取得相關資訊。

工作 2:路徑追蹤與效能測試

路徑追蹤 (traceroute) 工具可用來追蹤兩個主機之間的路徑。如果想找出多種不同類型的網路問題,先執行路徑追蹤可能會有用。支援或網路工程師在診斷網路問題時,通常會要求執行路徑追蹤。

功能附註:

路徑追蹤 (traceroute) 會顯示主機之間的所有第 3 層 (轉送層) 躍點。做法是將封包傳送至遠端目的地時,將存留時間 (TTL) 值調高 (起始值為 1)。TTL 欄位是 IP 封包中的欄位,每通過一個路由器,這項值就會減一。待 TTL 值變成零時,系統就會捨棄封包,傳回「TTL exceeded」ICMP 訊息給傳送端。這種做法可避免引發轉送迴圈問題:TTL 欄位的值最終會降為 0,因此封包無法持續反覆轉送。OS 預設會將 TTL 值設為 64、128、255 之類較高的值,因此這應該只有在異常情況下才會達到。

因此路徑追蹤一開始傳送封包時,TTL 值會設為 1,接著再設為 2,依此類推,這會導致封包在路徑經過第一個/第二個/後續路由器時過期。接著,系統會使用來源 IP/主機發出的「ICMP TTL exceeded」訊息,顯示中間躍點的名稱/IP。TTL 值夠高時,封包就會送達目的地,目的地也會有回應。

傳送的封包類型會因實作項目而異。在 Linux 中,UDP 封包會傳送至編號較高且未使用的通訊埠,因此最終目的地會提供下列回應:無法連上 ICMP 通訊埠。Windows 和 MTR 工具預設使用連線偵測 (ping) 等 ICMP 回應要求,因此最終目的地會以 ICMP 回應回覆做為回應。

請在其中一個虛擬機器上設定路徑追蹤,試試這項功能。

  1. 這個步驟您將使用 us-test-01 VM 和 us-test-02 VM,請先透過 SSH 連至這兩個 VM。

  2. us-test-01 的 SSH 視窗中安裝下列效能工具:

sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
  1. 現在對 www.icann.org 使用 traceroute,看看會有什麼結果:
traceroute www.icann.org

在輸出內容中,每一行都代表一個躍點。

  • 第一欄是躍點編號。
  • 第二欄是躍點的 IP 位址,或主機名稱 (如有)。
  • 其餘欄位是其他傳送至該躍點的封包往返時間。
  1. 接著試著使用另外幾個目的地和其他來源:

    • 同一區域或其他區域的 VM (eu1-vm、asia1-vm、w2-vm)
    • www.wikipedia.org
    • www.adcash.com
    • bad.horse (如果調高 TTL 上限,效果最佳,例如 traceroute -m 255 bad.horse)
    • 任何您想到的位址
  2. 如要停止路徑追蹤,請在 SSH 視窗中按下 Ctrl+C,然後返回指令列。

注意:請留意下列幾點

進行不同的路徑追蹤時,您注意到了什麼?
路徑追蹤與效能測試。

工作 3:使用 iperf 測試效能

iperf 可測量網路處理量與延遲時間。透過 iperf 測試兩個主機之間的效能時,其中一端必須設為接受連線的 iperf 伺服器。

注意:下列指令會在不同區域之間傳輸流量 (以 GB 為單位),系統會按網際網路輸出費率收費。使用時,請留意這點。如果使用的是未加入許可清單的專案,或者不在免費試用期內,可能必須略過這個部分,或只要瀏覽重點即可 (費用應該不到 $1 美元)。
  1. 透過 SSH 連至 us-test-02,安裝效能工具:
sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
  1. 透過 SSH 連至 us-test-01,執行下列指令:
iperf -s #run in server mode
  1. us-test-02 SSH 視窗中,執行下列 iperf 指令:
iperf -c us-test-01.{{{project_0.default_zone | ZONE}}} #run in client mode

輸出內容會類似這樣:

Client connecting to eu-vm, TCP port 5001 TCP window size: 45.0 KByte (default) [ 3] local 10.20.0.2 port 35923 connected with 10.30.0.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 298 MBytes 249 Mbits/sec
  1. 完成作業後,只要在 us-test-01 視窗中按下 Ctrl+C鍵,即可結束伺服器端。

在同區域的不同 VM 之間

現在您將於 us-test-01 以外的其他可用區部署另一個執行個體 us-test-04。您會發現一個區域的頻寬限制為:每個核心每秒 2 Gbit (輸出上限)。

  1. 在 Cloud Shell 建立 us-test-04
gcloud compute instances create us-test-04 \ --subnet subnet-{{{project_0.default_region | REGION}}} \ --zone {{{project_0.default_zone | ZONE}}} \ --tags ssh,http
  1. 透過 SSH 連至 us-test-04,安裝效能工具:
sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege

在不同區域間達到的限制較低,大多是受到 TCP 視窗大小和單一串流效能的限制影響。您可以使用其他參數 (如 UDP),調高主機之間的頻寬。

  1. us-test-02 SSH 視窗中,執行下列指令:
iperf -s -u #iperf server side
  1. us-test-01 SSH 視窗中,執行下列指令:
iperf -c us-test-02.{{{project_0.default_zone_2 | ZONE}}} -u -b 2G #iperf client side - send 2 Gbits/s

歐洲和美國區域之間的傳輸速度應該就會比較快。如果同時執行多個 TCP iperf,甚至還能達到更快的速度。我們來試試。

  1. us-test-01 的 SSH 視窗中,執行下列指令:
iperf -s
  1. us-test-02 的 SSH 視窗中,執行下列指令:
iperf -c us-test-01.{{{project_0.default_zone | ZONE}}} -P 20

合併後的頻寬應該會相當接近可達到的頻寬上限。

點選「Check my progress」,確認目標已達成。

測試效能。
  1. 再多測試幾種組合。如果您在筆電上使用 Linux,也能對筆電執行測試 (您也能試試許多 OS 都適用的 iperf3,但這不在本研究室的涵蓋範圍內)。

如您所見,如要達到頻寬上限,光執行一個 TCP 串流作業 (例如複製檔案) 是不夠的,因此請同時執行數個 TCP 工作階段。原因如下:TCP 參數 (如 Window Size);以及函式 (如 Slow Start)。

如要進一步瞭解相關細節及所有其他 TCP/IP 主題,請參閱《TCP/IP Illustrated》。

bbcp 等工具能讓您平行處理傳輸作業及使用可設定的視窗大小,盡可能提高複製檔案的速度。

關閉研究室

如果您已完成研究室,請按一下「End Lab」。您的帳戶和已用資源會從研究室平台中移除。

您可以為研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」分頁提交。

恭喜

您已學會如何使用 gcloud 在現有網路中建構虛擬機器,以及使用各種工具測試網路的連線能力和延遲時間。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 8 月 23 日

實驗室上次測試日期:2024 年 8 月 23 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。