Menghitung throughput jaringan melalui Interconnect

Tutorial ini menjelaskan cara menghitung throughput jaringan, baik di dalam Google Cloud dan ke lokasi cloud lokal atau pihak ketiga yang terhubung menggunakan Cloud Interconnect. Dokumen ini menjelaskan cara menganalisis hasil, mencantumkan variabel yang dapat memengaruhi performa jaringan, dan memberikan beberapa tips pemecahan masalah.

Batasan dan pertimbangan

  • Batasan Cloud Interconnect berlaku. Untuk mengetahui informasi selengkapnya, lihat Kuota Cloud Interconnect.
  • Batas NIC: Google Cloud memperhitungkan bandwidth setiap instance mesin virtual (VM), bukan untuk setiap antarmuka jaringan (NIC) atau alamat IP. Jenis mesin VM menentukan tarif keluar maksimumnya; namun, tarif tersebut hanya dapat dicapai dalam situasi tertentu. Lihat tabel ini untuk mengetahui jumlah vCPU per jenis mesin.
  • Perangkat lain di jalur (firewall, tombol dengan buffer kecil, dan perangkat vendor lainnya) serta batasan yang berlaku. Lakukan tugas berikut untuk mengurangi batasan tersebut.

    • Mengumpulkan statistik jaringan tentang firewall dan tombol di jalur.
    • Untuk pengujian Cloud Interconnect, lewati sebanyak mungkin perangkat antara host lokal dan perangkat Google Edge.
    • Identifikasi dan verifikasi semua perangkat di jalur antara jaringan okal dan VM Google Cloud, apakah perangkat tersebut dapat menjadi sumber masalah throughput.

Ringkasan alat untuk mengukur throughput jaringan

Tutorial ini menunjukkan penggunaan alat berikut untuk menghitung throughput jaringan:

  • iPerf3: Alat pengujian jaringan yang dapat membuat aliran data TCP/UDP (thread tunggal atau multi-thread) dan mengukur throughput jaringan yang membawanya.

    Catatan: iPerf3 direkomendasikan hanya untuk mesin dengan CPU tunggal.

  • Netperf: Alat yang mirip dengan iPerf3, tetapi sesuai untuk pengujian throughput pada instance multi-CPU yang terikat dengan CPU pada single CPU .

  • tcpdump: Penganalisis paket command line yang merekam detail paket dan komunikasi TCP/IP untuk pemecahan masalah lanjutan. Alat tcpdump kompatibel dengan alat lain, seperti Wireshark.

  • Netstat: Utilitas jaringan command line yang menampilkan koneksi jaringan untuk Transmission Control Protocol (masuk dan keluar), tabel perutean, dan beberapa antarmuka jaringan (pengontrol antarmuka jaringan atau antarmuka software-defined network) dan statistik protokol jaringan.

  • mtr: Alat diagnostik jaringan yang menjalankan fungsi traceroute dan ping. Fitur ini memeriksa router di jalur rute dengan membatasi jumlah hop yang dapat dilalui setiap paket, dan memproses respons masa berlakunya.

Mengukur throughput dengan iPerf3

Ikuti prosedur ini untuk mengukur throughput dari satu instance VM.

Pilih jenis mesin yang besar

Untuk melakukan pengujian throughput, gunakan jenis mesin besar, seperti n1-standard-8. Jenis mesin ini memberikan batas throughput traffic keluar maksimum sebesar 16 Gbps, sehingga throughput traffic keluar per VM tidak mengganggu pengujian.

Instal alat

Menginstal iPerf3, mtr, netstat, dan tcpdump pada instance VM Linux

Untuk distribusi berbasis Debian, jalankan perintah berikut:

    sudo apt-get update
    sudo apt-get install iperf3 tcpdump mtr netstat

Untuk distribusi berbasis Redhat, jalankan perintah berikut:

    yum update
    yum install iperf3 tcpdump mtr netstat

Menginstal netperf

Untuk distribusi berbasis Debian, jalankan perintah berikut:

    sudo apt-get install git build-essential autoconf texinfo -y
    git clone https://github.com/HewlettPackard/netperf.git
    cd netperf
    ./autogen.sh
    ./configure --enable-histogram --enable-demo=yes
    make
    cp src/netserver ~/.local/bin
    cp src/netperf ~/.local/bin

Untuk distribusi berbasis Redhat, jalankan perintah berikut:

    sudo yum install git build-essential autoconf texinfo -y
    git clone https://github.com/HewlettPackard/netperf.git
    cd netperf
    ./autogen.sh
    ./configure --enable-histogram --enable-demo=yes
    make
    cp src/netserver ~/.local/bin
    cp src/netperf ~/.local/bin

Menjalankan pengujian prasyarat

  1. Pastikan ukuran lampiran VLAN dikonfigurasi dengan benar. Untuk mengetahui informasi selengkapnya, lihat Mengubah lampiran VLAN.
  2. Di kedua ujung koneksi (setiap terminal), jalankan perintah top atau htop untuk memantau penggunaan CPU.
  3. Kumpulkan statistik jaringan menggunakan perintah netstat sebelum menjalankan pengujian apa pun.

    netstat -s >> netstat.log
    
  4. Di terminal lain, jalankan perintah tcpdump sebelum perekaman apa pun dengan snaplenparameter value 128.

    Jalankan perintah ini di kedua endpoint.

    sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
    
  5. Mendapatkan ukuran memori baca dan tulis pada host sumber dan tujuan.

    $ sysctl net.ipv4.tcp_rmem
    $ sysctl net.ipv4.tcp_wmem
    $ sysctl net.core.rmem_max
    $ sysctl net.core.rmem_default
    $ net.core.wmem_max
    $ net.core.wmem_default
    $ uname -r
    $ cat /etc/os-release
    

Menjalankan pengujian iperf3

Karena adanya batasan 3 Gbps untuk setiap flow, sebaiknya Anda menjalankan beberapa streaming paralel dari pengujian iperf3. Sebaiknya jalankan minimum empat pengujian dan maksimum sepuluh pengujian untuk mengompensasi batasan bandwidth dan mendapatkan hasil yang berguna.

  1. Di terminal lain, jalankan server iperf3 di salah satu ujung koneksi (VM, atau mesin lokal). Beberapa aliran memerlukan beberapa server iperf3.

  2. Jalankan alat iPerf3 dengan flag udp untuk pengujian Cloud Interconnect. Jika throughput yang diinginkan dengan UDP tercapai, Anda perlu melakukan langkah pemecahan masalah lebih lanjut.

  3. Untuk menjalankan beberapa server iperf3 dari command line, jalankan perintah berikut:

    $ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s  -p 5103 &
    
  4. Gunakan skrip bash berikut untuk menjalankan beberapa server iperf3:

    #!/bin/bash
    #start iperf3 server running in background
    
    for i in `seq 0 9`;
    do
            iperf3 -s  -B 10.0.100.35 -t 30 -u -p 521$i &
    done
    

iperf3 client berjalan selama 10 detik secara default, yang mungkin tidak cukup bagi TCP untuk mencapai throughput maksimum. Tetapkan nilai DURATION ke minimal 30 detik untuk mendapatkan hasil yang lebih andal.

    iperf3 -c [server IP address] -P [THREADS] -t [DURATION]

Skrip Bash untuk menjalankan beberapa streaming UDP iperf3

echo "UDP iperf test - 10 streams"
for i in `seq 0 9`;
do
       iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -u -b 1G  -l 1390 -t10 -p 521$i    &

done

Skrip Bash untuk menjalankan beberapa streaming TCP iperf3

echo "UDP iperf test - 10 streams"
for i in `seq 0 9`;
do
       iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -b 1G  -l 1390 -t10 -p 521$i    &

done

Saat pengujian iperf3 berjalan, pantau beban CPU di kedua perangkat. Jika beban CPU mendekati 100%, CPU menjadi bottleneck untuk satu thread iperf3. Dalam hal ini, gunakan alat Netperf, karena alat ini mendukung beberapa CPU.

Jika tidak dapat menjalankan Netperf, Anda dapat memulai beberapa server dan klien iPerf3 di terminal dan port yang berbeda secara bersamaan.

Menganalisis hasil pengujian

Lakukan langkah-langkah berikut:

  1. Periksa hasil klien iperf3 untuk melihat bandwidth dan paket yang hilang.
  2. Periksa hasil server iperf3 untuk melihat apakah ada paket yang tidak berurutan.
  3. Melakukan analisis penangkapan paket. Jalankan perintah berikut untuk mengonversi file pcap menjadi file teks.

    tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
    
  4. Jalankan perintah berikut untuk mendapatkan total paket dan paket yang tidak berurutan.

    grep -e "Total" -A1 pcap [TXT-FILENAME]
    

    Output-nya adalah sebagai berikut:

    gcpvm-send-5210.txt:Total UDP packets: 874032
    gcpvm-send-5210.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5211.txt:Total UDP packets: 791218
    gcpvm-send-5211.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5212.txt:Total UDP packets: 961510
    gcpvm-send-5212.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5213.txt:Total UDP packets: 961517
    gcpvm-send-5213.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5214.txt:Total UDP packets: 961501
    gcpvm-send-5214.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5215.txt:Total UDP packets: 961521
    gcpvm-send-5215.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5216.txt:Total UDP packets: 889932
    gcpvm-send-5216.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5217.txt:Total UDP packets: 961483
    gcpvm-send-5217.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5218.txt:Total UDP packets: 961479
    gcpvm-send-5218.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5219.txt:Total UDP packets: 961518
    gcpvm-send-5219.txt:Total out-of-order packets: 0, missing packets: 0
    

    Analisis berikut menunjukkan paket yang hilang selama pengujian performa:

    $ grep -e "Total" -A1 onPrem-send-*.txt
    

    Output-nya adalah sebagai berikut:

    "Total" -A1 onPrem-send-*.txt
    onPrem-send-5210.txt:Total UDP packets: 858698
    onPrem-send-5210.txt:Total out-of-order packets: 0, missing packets: 5408
    --
    onPrem-send-5211.txt:Total UDP packets: 857667
    onPrem-send-5211.txt:Total out-of-order packets: 0, missing packets: 4929
    --
    onPrem-send-5212.txt:Total UDP packets: 857126
    onPrem-send-5212.txt:Total out-of-order packets: 0, missing packets: 5349
    --
    onPrem-send-5213.txt:Total UDP packets: 857424
    onPrem-send-5213.txt:Total out-of-order packets: 0, missing packets: 5495
    --
    onPrem-send-5214.txt:Total UDP packets: 857139
    onPrem-send-5214.txt:Total out-of-order packets: 0, missing packets: 4692
    --
    onPrem-send-5215.txt:Total UDP packets: 857175
    onPrem-send-5215.txt:Total out-of-order packets: 0, missing packets: 4789
    --
    onPrem-send-5216.txt:Total UDP packets: 857104
    onPrem-send-5216.txt:Total out-of-order packets: 0, missing packets: 5196
    --
    onPrem-send-5217.txt:Total UDP packets: 857122
    onPrem-send-5217.txt:Total out-of-order packets: 0, missing packets: 5423
    --
    onPrem-send-5218.txt:Total UDP packets: 857383
    onPrem-send-5218.txt:Total out-of-order packets: 0, missing packets: 5283
    --
    onPrem-send-5219.txt:Total UDP packets: 857313
    onPrem-send-5219.txt:Total out-of-order packets: 0, missing packets: 4934
    
  5. Mengakses halaman perangkat untuk memeriksa throughput port.

  6. Jika output netstat menampilkan error baca/tulis, penyesuaian alur massal TCP/UDP mungkin diperlukan.

  7. Jika ada paket yang tidak berurutan, rekaman paket harus dilakukan di Gateway VPN untuk analisis lebih lanjut. Untuk informasi selengkapnya tentang melakukan pengambilan paket di Gateway VPN, buka kasus dukungan.

  8. Jika pengujian UDP iperf3 mencapai throughput yang diinginkan, masalah tersebut harus berada di tempat lain dan penyesuaian TCP mungkin diperlukan.