Create the firewall rule

Check my progress

/ 100

This lab may incorporate AI tools to support your learning.
This content is not yet optimized for mobile devices.
For the best experience, please visit us on a desktop computer using a link sent by email.

GSP045

Google Cloud 自學實驗室

總覽

在本實作實驗室,您要透過實際情境學習重建環境,並設法提升部分問題網路的效能。

本實驗室的趣味所在,是讓您模擬疑難排解情境,對比各個執行個體來驗證成果,並熟悉提升自家系統效能的步驟。

本實驗室改編自 Colt McAnlis 的網誌文章《Core Count and the Egress problem》(核心數與輸出問題) 和《Internal IP vs External IP》(內部 IP 與外部 IP)。Colt 在 Medium 發表了多篇 Google Cloud 網路效能相關網誌文章。

目標

  • 如何使用開放原始碼工具測試網路連線和效能
  • 如何使用開放原始碼工具檢查網路流量
  • 機器大小如何影響網路效能

事前準備

  • 具備 Google Cloud 服務基本知識 (強烈建議先完成 Google Cloud 必備知識實驗室,藉此掌握相關內容)
  • 瞭解 Google Cloud 網路和 TCP/IP 基本知識 (強烈建議先完成「Google Cloud 網路」課程的前幾個實驗室,藉此掌握相關內容)
  • 熟悉 Unix/Linux 指令列基本知識

設定和需求

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

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

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

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

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

如何開始實驗室及登入 Google Cloud 控制台

  1. 按一下「Start Lab」按鈕。如果實驗室會產生費用,請在開啟的對話方塊中選取付款方式。右側的「Lab setup and access」面板會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 此實驗室所需的臨時憑證 (使用者名稱和密碼)
    • 完成此實驗室所需的其他資訊 (如有)

    請注意,實驗室計時器位於頁面頂端附近,會顯示剩餘時間。

  2. 按一下「Open Google Cloud console」。如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。

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

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

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

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

    您也可以在「Lab setup and access」面板找到「Username」。

  4. 點選「下一步」。

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

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

    您也可以在「Lab setup and access」面板找到「Password」。

  6. 點選「下一步」。

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

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

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

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

本實驗室的目標是說明核心大小與處理量之間的關係,因此在您開始實驗室時,已內建 6 個執行個體。

  • 前往 Cloud 控制台,依序點選「導覽選單」>「Compute Engine」>「VM 執行個體」,即可查看執行個體:

「VM 執行個體」頁面,以資料表列出六個執行個體及其詳細資料

注意:實際顯示的執行個體區域和可用區可能與螢幕截圖不同。

連線測試

簡單測試網路連線,確保一切正常運作。

  1. 在控制台點選 instance-1 名稱旁的「SSH」按鈕,透過 SSH 連至該執行個體。

  2. 在新開啟的殼層視窗,對另一個執行個體執行下列 ping 指令來偵測連線 (將 <external ip address of instance-2> 換成 instance-2 的外部 IP 位址):

ping -c 5 <external ip address of instance-2>

輸出內容範例:

student-00-aafd1bd9c185@instance-1:~$ ping -c 5 35.194.158.169 PING 35.194.158.169 (35.194.158.169) 56(84) bytes of data. 64 bytes from 35.194.158.169: icmp_seq=1 ttl=76 time=1.89 ms 64 bytes from 35.194.158.169: icmp_seq=2 ttl=76 time=0.409 ms 64 bytes from 35.194.158.169: icmp_seq=3 ttl=76 time=0.542 ms 64 bytes from 35.194.158.169: icmp_seq=4 ttl=76 time=0.557 ms 64 bytes from 35.194.158.169: icmp_seq=5 ttl=76 time=0.559 ms --- 35.194.158.169 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4001ms rtt min/avg/max/mdev = 0.409/0.792/1.894/0.554 ms
  1. 再對另一個執行個體進行連線偵測 (ping)。將 <external ip address of instance-3> 換成 instance-3 的外部 IP 位址,然後執行 ping 指令來偵測連線:
ping -c 5 <external ip address of instance-3>

輸出內容範例:

student-00-aafd1bd9c185@instance-1:~$ ping -c 5 35.194.187.75 PING 35.194.187.75 (35.194.187.75) 56(84) bytes of data. 64 bytes from 35.194.187.75: icmp_seq=1 ttl=64 time=1.59 ms 64 bytes from 35.194.187.75: icmp_seq=2 ttl=64 time=0.336 ms 64 bytes from 35.194.187.75: icmp_seq=3 ttl=64 time=0.338 ms 64 bytes from 35.194.187.75: icmp_seq=4 ttl=64 time=0.302 ms 64 bytes from 35.194.187.75: icmp_seq=5 ttl=64 time=0.270 ms --- 35.194.187.75 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3999ms rtt min/avg/max/mdev = 0.270/0.568/1.596/0.514 ms

一切正常,繼續操作吧!

查看防火牆規則

本實驗室也建立了防火牆規則。

  • 依序前往「導覽選單」>「虛擬私有雲網路」>「防火牆」,然後點選 iperftesting 防火牆,即可查看這些規則。

防火牆規則 iperftesting 的設定如下:

欄位 值 註解
名稱 iperftesting 新規則名稱
目標 網路中的所有執行個體
來源 IP 範圍 0.0.0.0/0 我們會開放防火牆,讓網際網路任何 IP 位址的流量進入
通訊協定和通訊埠 tcp:5001; udp:5001
流量方向 輸入
相符時執行的動作 允許

現在可以開始實驗室了。

應用情境 1:網路和 Compute Engine 核心數量

在第一個情境,您將瞭解機器大小如何影響可測量的處理量。

Dobermanifesto 是寵物專屬影片微網誌網路。世界各地的使用者都能上傳、傳送、觀看動物相關影片,以及與影片互動。

將資料輸入/輸出 Compute Engine 後端時,Dobermanifesto 發現頻寬不如預期:

折線圖:同一 Dobermanifesto 可用區的處理量,以 Gbit/秒為單位。

工作 1:重現行為

我們在該可用區同時建立兩個執行個體,並在兩者之間執行 iperf 100 次,嘗試重現這個行為。

折線圖:在同一可用區傳輸 100 次的結果,以 Mbit/秒為單位

這次效能更差!測試顯然有問題。我們需要該公司提供更多資訊和更詳細的重現步驟。

接下來,您要設定情境。

Dobermanifesto 的環境

  1. 返回 Compute Engine 控制台的 VM 執行個體清單。

  2. 透過 SSH 連至 instance-1 (1 個 vCPU,3.75 GB),然後執行下列指令來設定 iperf「接收端」:

iperf -s
  1. 接著透過 SSH 連至 instance-2 (1 個 vCPU,3.75 GB),並產生指向 instance-1 的 iperf 流量:
iperf -c <external ip address of instance-1>

輸出內容範例:

student-00-aafd1bd9c185@instance-2:~$ iperf -c 35.225.180.44 ------------------------------------------------------------ Client connecting to 35.225.180.44, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.20.0.4 port 56330 connected with 35.225.180.44 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0000-10.0010 sec 4.66 GBytes 4.00 Gbits/sec
  1. 返回 instance-1,然後輸入 CTRL + C 結束接收端。

測試環境

  1. 返回 Compute Engine 控制台,再開啟一個 SSH 視窗並連至 instance-6 (1 個 vCPU,e2-micro,0.6 GB)。

  2. 執行下列指令,將其設為「接收端」:

iperf -s

輸出內容範例:

student-00-aafd1bd9c185@instance-6:~$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 128 KByte (default) ------------------------------------------------------------
  1. 在 instance-2 SSH 視窗,測試與 instance-6 的連線:
iperf -c <internal ip address of instance-6>

輸出內容範例:

student-00-aafd1bd9c185@instance-2:~$ iperf -c 10.40.0.7 ------------------------------------------------------------ Client connecting to 10.40.0.7, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.40.0.5 port 54029 connected with 10.40.0.7 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 2.29 GBytes 1.96 Gbits/sec
  1. 返回 instance-6,然後輸入 CTRL + C 結束接收端。

結果頻寬似乎增加了!您的測試結果可能也是如此,也可能更低。

在下一節,您將瞭解核心總數如何限制頻寬;當核心數較小 (核心數為 1),頻寬始終都會在 2 Gbit/秒左右,絕不超過這個上限。這導致網路速度緩慢且頻寬受限,與 Dobermanifesto 的情況類似。不過,如果您稍後測試具備 4 個 CPU 的機器,會發現處理量更高。

核心數與 Gbit/秒相關

為何數次測試的結果都差不多?Compute Engine 說明文件指出:

「虛擬機器的傳出流量受限於網路輸出處理量上限,而處理量上限取決於虛擬機器執行個體的 vCPU 數量。在尖峰效能下,每個核心的處理量上限為 2 Gbit/秒 (Gbps)。每增加一個核心,都能提高網路處理量上限,理論上最高可為每部虛擬機器增加 16 Gbps。」

也就是說,網路中的虛擬 CPU 越多,網路處理量就越高。

為瞭解實際運作情形,我們在同一可用區設定不同大小的核心群組,並在這些群組之間執行 iperf 1000 次。

長條圖:RCP 處理量 (依執行個體類型,執行 1000 次),顯示平均值與最大值之間的差異。

當核心數增加,平均和最大處理量也會隨之提升。透過這個簡單測試,您應能發現高階機器的固定上限就是 16 Gbps。

注意:如果使用多個執行緒 (約 8 個) 執行 iperf,處理量可能超過 10 Gbps,使用 e2-standard-16 或更大機型,處理量可達約 16 Gbps。本實驗室環境沒有這麼大的機器,因此接下來會用多個執行緒來測試。 此外,如果使用 N2、N2D、C2、C2D 系列中費用更高的 VM,即可選用高頻寬級別 1 設定,將處理量提升到 50-100 Gbps。

工作 2:如何提升成效

Dobermanifesto 的網路使用具 1 個 vCPU 的機器。增加核心大小或許可提升 Dobermanifesto 的網路效能。現在來驗證這個理論。

  1. 透過 SSH 連至 instance-3 (4 個 vCPU,15 GB 記憶體),然後執行下列指令:
iperf -s

輸出內容範例:

student-00-aafd1bd9c185@instance-3:~$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 128 KByte (default) ------------------------------------------------------------
  1. 透過 SSH 連至 instance-4 (4 個 vCPU,15 GB 記憶體):
iperf -c <internal ip address of instance-3>

輸出內容範例:

student-00-aafd1bd9c185@instance-4:~$ iperf -c 10.40.0.2 ------------------------------------------------------------ Client connecting to 10.40.0.2, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.40.0.4 port 54081 connected with 10.40.0.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 8.93 GBytes 7.67 Gbits/sec
  1. 現在使用 4 個執行緒再試一次:
iperf -c <internal ip address of instance-3> -P4
  1. 接著使用 8 個執行緒再試一次:
iperf -c <internal ip address of instance-3> -P8
  1. 返回 instance-3,然後輸入 CTRL + C 結束接收端。

以上實驗結果顯示,當伺服器和用戶端都使用 4 個 vCPU,速度將大幅提高:資料傳輸量增加了 6.64 GB,頻寬則提升了 5.71 Gbps。也就是說,使用多執行緒時,效能可達到該核心數的上限。

  1. 繼續使用 instance-5 測試,這是使用 4 個 vCPU 的高效能機器,執行個體類型為「highcpu-4」。

這個執行個體類型具有更快的 CPU,但記憶體較少。您發現兩者之間有什麼差異嗎?那使用多個執行緒呢?

現在 Dobermanifesto 團隊將決定要採取的方案。分析 CPU 用量並瞭解定價資訊後,他們決定採用 e2-standard-4 機器。這個機器的平均處理量幾乎是原本的 4 倍,且比 e2-standard-8 機器便宜。

改用大型機器的好處之一,是執行頻率會降低。他們發現,機器長時間保持運作只為了傳輸資料。由於新機器更大,執行個體停機時間增加,負載平衡器每天會減少執行個體總數。因此,他們必須支付高級機器的費用,但同時每月使用的核心時數減少。

當成效直接影響收益,就必須仔細考慮許多方面的取捨。

應用情境 2:使用內部 IP 的 Google Cloud 網路

接下來,您將在這個範例使用 iperf 測試處理量速度。您要將一部機器設為伺服器,然後讓其他機器指向該伺服器並比較結果。

Gecko Protocol 是一間 B2B 公司,專門為遊戲和其他即時圖像系統提供專屬的輕量網路通訊協定。該公司發現後端機器的處理量低於預期,這些機器負責傳輸和轉碼大型影片與圖像檔案。

以下是他們的基準 iperf 測試結果:

------------------------------------------------------------ Client connecting to 104.155.145.79, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.128.0.3 port 53504 connected with 104.155.145.79 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.03 GBytes 884 Mbits/sec

他們以同一網路設定再次執行同樣測試,卻發現結果與剛才完全不同:

student-00-aafd1bd9c185@instance-2:~$ iperf -c 10.128.0.2 ------------------------------------------------------------ Client connecting to 10.128.0.2, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.128.0.3 port 38978 connected with 10.128.0.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 2.27 GBytes 1.95 Gbits/sec

這次測試結果為 1.95 Gbit/秒,遠高於 Gecko Protocol 在前一張圖表看到的數值。究竟是怎麼回事?

現在來重建這個情境。

  1. 在控制台透過 SSH 連至 instance-1,然後設定 iperf 接收端:
iperf -s

輸出內容範例:

student-00-aafd1bd9c185@instance-1:~$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 128 KByte (default) ------------------------------------------------------------
  1. 透過 SSH 連至 instance-2,並檢查外部 IP 位址連線:
iperf -c <external ip address of instance-1>

輸出內容範例:

student-00-aafd1bd9c185@instance-2:~$ iperf -c 35.201.145.135 ------------------------------------------------------------ Client connecting to 35.201.145.135, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.40.0.8 port 58691 connected with 35.201.145.135 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.36 GBytes 1.16 Gbits/sec

與 Gecko Protocol 進一步討論後,我們發現他們平時使用「外部」IP 連至機器,但測試時使用的是「內部」IP。如果機器位於同一網路,使用內部 IP 連線可提高處理量。

  1. 現在檢查與內部位址的連線:
iperf -c <internal ip address of instance-1>

輸出內容範例:

student-00-aafd1bd9c185@instance-2:~$ iperf -c 10.40.0.5 ------------------------------------------------------------ Client connecting to 10.40.0.5, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.40.0.8 port 42950 connected with 10.40.0.5 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 2.26 GBytes 1.94 Gbits/sec

注意這次的傳輸傳輸量和頻寬速率不太一樣。在這個例子,改用內部 IP 位址後,傳輸量增加 0.9 GB,頻寬則提升 0.78 Gbit/秒。您剛才證明了內部連線速度更快。

根據您解決 Dobermanifesto 問題時學到的知識,使用更大的機器是否能提升網路速度?instance-2 只有 1 個 vCPU。如果改用大一點的機器,連線速度會多快?如果改用大很多的機器呢?請繼續使用內部 IP 位址測試 (如果時間足夠,也能測試外部 IP 位址)。

具備 4 個 vCPU 的機器

  • 透過 SSH 連至 instance-3,並使用內部 IP 位址測試連線:
iperf -c <internal ip address of instance-1>

輸出內容範例 (您的結果可能不同):

student-00-aafd1bd9c185@instance-3:~$ iperf -c 10.40.0.5 ------------------------------------------------------------ Client connecting to 10.40.0.5, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.40.0.6 port 39115 connected with 10.40.0.5 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 4.53 GBytes 3.89 Gbits/sec

具備 4 個高 CPU 的機器

  • 透過 SSH 連至 instance-5,並使用內部 IP 位址測試連線:
iperf -c <internal ip address of instance-1>

輸出內容範例:

student-00-aafd1bd9c185@instance-5:~$ iperf -c 10.40.0.5 ------------------------------------------------------------ Client connecting to 10.40.0.5, TCP port 5001 TCP window size: 45.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.40.0.3 port 39736 connected with 10.40.0.5 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 10.3 GBytes 8.84 Gbits/sec

這確實能大幅提升處理量。

看來 Gecko Protocol 也要思考最合適的核心大小。他們根據這次小型偵錯結果,將影片和圖像資料傳輸速度提升約 14 倍。對他們來說,提升幅度相當大;畢竟他們提供的網路通訊協定是建構在高效能後端服務上,專為高效能運算情境設計。

工作 3:測試自家環境

本實驗室未說明如何測試自家系統,但我們提供下列額外資訊供您參考。如要進一步瞭解如何測試自家網路,請參閱「Network Throughput Testing with iPerf」(使用 iperf 測試網路處理量) 一文。

如果有時間,隨時能自行設定 VM 來測試。建立 VM 時,請務必使用「iperftest」防火牆規則和標記。記得同時測試內部和外部 IP 位址。

自行測試網路速度所需的設定

  1. 前往控制台,依序點選「導覽選單」>「虛擬私有雲網路」>「防火牆」。

  2. 點選「建立防火牆規則」。使用下列設定建立防火牆規則:

欄位 值 註解
名稱 iperf-testing 新規則名稱
目標 網路中的所有執行個體
來源 IP 範圍 0.0.0.0/0 我們會開放防火牆,讓網際網路任何 IP 位址的流量進入
流量方向 輸入
相符時執行的動作 允許
通訊協定和通訊埠 tcp:5001; udp:5001
  1. 點選「建立」。

點選「Check my progress」,確認目標已達成。建立防火牆規則

通常會盡可能將工作負載提升到接近 100%,但這會讓磁碟幾乎沒有空間執行重組等作業。

使用率為 90-93% 屬於正常,但當使用率達到 98%,就會出現大量爭用情形,導致效能下降。

測試時,如果發現輸入/輸出效能下降,請查看節流計數器。如果沒有節流情形,請查看 CPU 使用率,數值很高就表示有問題。

工作 4:如果時間充裕

在實驗室介面右側的「Student Resources」下方,您可以找到本實驗室的相關影片連結,歡迎觀看!

「Student Resources」專區,內含「Compute Engine and the Egress Problem」(Compute Engine 與輸出問題) 和「Internal IP vs External IP Performance」(內部 IP 與外部 IP 效能) 連結

恭喜!

太棒了!在本實驗室,您學會使用開放原始碼工具測試網路連線和效能,並瞭解機器大小如何影響網路表現。

後續行動/瞭解詳情

Google Cloud 教育訓練與認證

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

使用手冊上次更新日期:2026 年 7 月 7 日

實驗室上次測試日期:2026 年 7 月 7 日

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

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We can notify you via email when it becomes available

Great!

We can contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.