Bagikan melalui


Mengonfigurasi Unit Transmisi Maksimum (MTU) untuk komputer virtual di Azure

Unit Transmisi Maksimum (MTU) adalah pengukuran yang mewakili bingkai ethernet ukuran (paket) terbesar yang ditransmisikan oleh perangkat atau antarmuka jaringan. Jika paket melebihi ukuran terbesar yang diterima oleh perangkat, paket difragmentasi menjadi beberapa paket yang lebih kecil, kemudian disusun ulang di tujuan.

Fragmentasi dan penyatuan ulang dapat memperkenalkan masalah performa dan pemesanan, yang menghasilkan pengalaman suboptimal. Mengoptimalkan MTU untuk solusi Anda dapat memberikan manfaat performa bandwidth jaringan dengan mengurangi jumlah total paket yang diperlukan untuk mengirim himpunan data. Konfigurasi ukuran MTU yang lebih besar berpotensi meningkatkan throughput jaringan karena mengurangi jumlah paket dan overhead header yang diperlukan untuk mengirim himpunan data.

MTU adalah pengaturan yang dapat dikonfigurasi dalam sistem operasi komputer virtual. Nilai default pengaturan MTU di Azure adalah 1500 byte.

VM di Azure dapat mendukung MTU yang lebih besar daripada default 1.500 byte hanya untuk lalu lintas yang tetap berada dalam jaringan virtual.

Tabel berikut ini memperlihatkan ukuran MTU terbesar yang didukung pada Antarmuka Jaringan Azure yang tersedia di Azure:

Sistem operasi Antarmuka Jaringan MTU terbesar untuk lalu lintas antar jaringan virtual
Windows Server Mellanox Cx-3, Cx-4, Cx-5 3900
Saat mengatur nilai MTU dengan Set-NetAdapterAdvancedProperty, gunakan nilai 4088.. Untuk mempertahankan boot ulang, nilai yang dikembalikan oleh Test-Connection juga harus diatur dengan Set-NetIPInterface.
Windows Server (Pratinjau) Microsoft Azure Network Adapter MANA 9000
Saat mengatur nilai MTU dengan Set-NetAdapterAdvancedProperty, gunakan nilai 9014.Untuk mempertahankan boot ulang, nilai yang dikembalikan oleh Test-Connection juga harus diatur dengan Set-NetIPInterface.
Linux Mellanox Cx-3, Cx-4, Cx-5 3900
Linux (Pratinjau) Microsoft Azure Network Adapter 9000

Prasyarat

  • Sebuah akun Azure dengan langganan aktif. Buat akun gratis.

  • Dua komputer virtual Linux dalam jaringan virtual yang sama di Azure. Untuk informasi selengkapnya tentang membuat komputer virtual Linux, lihat Membuat komputer virtual Linux di portal Microsoft Azure. Akses jarak jauh ke komputer virtual diperlukan untuk penyelesaian artikel. Untuk informasi selengkapnya tentang menyambungkan ke Azure Virtual Machines dengan aman, lihat Apa itu Azure Bastion?

    • Untuk tujuan artikel ini, komputer virtual diberi nama vm-1 dan vm-2. Ganti nilai-nilai ini dengan nilai Anda.

Contoh sumber daya

Sumber daya berikut digunakan sebagai contoh dalam artikel ini. Ganti nilai-nilai ini dengan nilai Anda.

Sumber Daya Nama Alamat IP
Mesin Virtual 1 vm-1 10.0.0.4
Mesin Virtual 2 vm-2 10.0.0.5

Tindakan pencegahan

  • Komputer virtual di Azure dapat mendukung MTU yang lebih besar dari default 1.500 byte hanya untuk lalu lintas yang tetap berada dalam jaringan virtual dan jaringan virtual yang di-peering langsung dalam wilayah yang sama. Lalu lintas yang melintas melalui gateway, peering global, atau ke internet tidak didukung. Konfigurasi MTU yang lebih besar dapat mengakibatkan fragmentasi dan pengurangan performa. Untuk lalu lintas yang menggunakan skenario ini, gunakan MTU 1.500 byte default untuk pengujian guna memastikan bahwa MTU yang lebih besar didukung di seluruh jalur jaringan.

  • MTU yang optimal bersifat spesifik tergantung pada sistem operasi, jaringan, dan aplikasi. MTU yang didukung maksimal mungkin tidak optimal untuk kasus penggunaan Anda.

  • Selalu uji perubahan pengaturan MTU di lingkungan noncritical terlebih dahulu sebelum menerapkan secara luas atau ke lingkungan penting.

Penemuan Jalur MTU

Penting untuk memahami MTU yang didukung di seluruh jalur jaringan yang digunakan aplikasi atau mesin Anda. Penemuan MTU jalur adalah sarana untuk mengetahui MTU terbesar yang didukung antara alamat sumber dan tujuan. Menggunakan MTU yang lebih besar daripada yang didukung antara alamat sumber dan tujuan menghasilkan fragmentasi, yang dapat berdampak negatif pada performa.

Dalam artikel ini, contoh yang digunakan menguji jalur MTU antara dua komputer virtual. Pengujian berikutnya dapat dilakukan dari komputer virtual ke tujuan yang dapat dirutekan.

Gunakan langkah-langkah berikut untuk mengatur ukuran MTU yang lebih besar pada komputer virtual sumber dan tujuan. Verifikasi jalur MTU dengan skrip shell untuk Linux atau PowerShell untuk Windows. Jika MTU yang lebih besar tidak didukung, hasil yang ditampilkan dalam uji penemuan MTU jalur berbeda dari pengaturan yang dikonfigurasi pada antarmuka komputer virtual sumber atau tujuan.

Skrip shell tersedia di galeri contoh Azure. Unduh skrip untuk Linux dari tautan berikut dan simpan ke vm-1 dan vm-2.

Gunakan langkah-langkah berikut untuk mengubah ukuran MTU pada komputer virtual Linux:

  1. Masuk ke vm-1

  2. ip Gunakan perintah untuk menampilkan antarmuka jaringan saat ini dan pengaturan MTU mereka, Rekam alamat IP untuk langkah-langkah berikutnya. Dalam contoh ini, alamat IP adalah 10.0.0.4 dan antarmuka ethernet adalah eth0.

    ip address show
    
    azureuser@vm-1:~$ ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0d:3a:c5:f3:14 brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.4/24 metric 100 brd 10.0.0.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20d:3aff:fec5:f314/64 scope link 
           valid_lft forever preferred_lft forever
    3: enP46433s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master eth0 state UP group default qlen 1000
        link/ether 00:0d:3a:c5:f3:14 brd ff:ff:ff:ff:ff:ff
        altname enP46433p0s2
        inet6 fe80::20d:3aff:fec5:f314/64 scope link 
           valid_lft forever preferred_lft forever
    
  3. Atur nilai MTU pada vm-1 ke nilai tertinggi yang didukung oleh antarmuka jaringan. Dalam contoh ini, nama antarmuka jaringan adalah eth0. Ganti nilai ini dengan nilai Anda.

    • Untuk adaptor Mellanox, gunakan contoh berikut untuk mengatur nilai MTU ke 3900:
    echo '3900' | sudo tee /sys/class/net/eth0/mtu || echo "failed: $?"
    
    • Untuk Microsoft Azure Network Adapter, gunakan contoh berikut untuk mengatur nilai MTU ke 9000:
    echo '9000' | sudo tee /sys/class/net/eth0/mtu || echo "failed: $?"
    

    Penting

    Perubahan MTU yang dilakukan pada langkah-langkah sebelumnya tidak bertahan selama boot ulang. Untuk membuat perubahan permanen, lihat dokumentasi yang sesuai untuk distribusi Linux Anda.

  4. ip Gunakan perintah untuk memverifikasi bahwa pengaturan MTU diterapkan ke antarmuka jaringan:

    ip address show
    
    azureuser@vm-1:~$ ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 3900 qdisc mq state UP group default qlen 1000
        link/ether 00:0d:3a:c5:f3:14 brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.4/24 metric 100 brd 10.0.0.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20d:3aff:fec5:f314/64 scope link 
           valid_lft forever preferred_lft forever
    3: enP46433s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 3900 qdisc mq master eth0 state UP group default qlen 1000
        link/ether 00:0d:3a:c5:f3:14 brd ff:ff:ff:ff:ff:ff
        altname enP46433p0s2
        inet6 fe80::20d:3aff:fec5:f314/64 scope link 
           valid_lft forever preferred_lft forever
    
  5. Masuk ke vm-2 untuk mengulangi langkah-langkah sebelumnya untuk mengatur nilai MTU ke nilai tertinggi yang didukung oleh antarmuka jaringan.

  6. Masuk ke vm-1.

  7. Gunakan contoh berikut untuk menjalankan skrip shell Linux untuk menguji ukuran MTU terbesar yang dapat digunakan untuk jalur jaringan tertentu. Ganti nilai host tujuan dengan alamat IP vm-2.

    ./GetPathMtu.sh 10.0.0.5
    
  8. Outputnya serupa dengan contoh berikut. Jika output skrip tidak menampilkan pengaturan pada antarmuka jaringan, itu menunjukkan bahwa ukuran MTU tidak diatur dengan benar. Atau, itu bisa berarti bahwa perangkat jaringan di sepanjang jalur hanya mendukung ukuran MTU yang dikembalikan oleh skrip GetPathMTU.

    azureuser@vm-1:~/GetPathMTU$ ./GetPathMtu.sh 10.0.0.5
    destination: 10.0.0.5
    startSendBufferSize: 1200
    interfaceName: Default interface
    Test started ....................................................................................................................................................................................................
    3900
    
  9. Verifikasi ukuran MTU pada antarmuka jaringan menggunakan PING. Untuk Linux, gunakan bendera -M, -s, dan -c. Opsi -M menginstruksikan ping untuk tidak terfragmentasi, -s mengatur ukuran paket, dan -c menentukan jumlah ping yang akan dikirim. Untuk menentukan ukuran paket, kurangi 28 dari pengaturan MTU 3900.

    ping 10.0.0.5 -c 10 -M do -s 3872
    
    azureuser@vm-1:~/GetPathMTU$ ping 10.0.0.5 -c 10 -M do -s 3872
    PING 10.0.0.5 (10.0.0.5) 3872(3900) bytes of data.
    3880 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=3.70 ms
    3880 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=1.08 ms
    3880 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=1.51 ms
    3880 bytes from 10.0.0.5: icmp_seq=4 ttl=64 time=1.25 ms
    3880 bytes from 10.0.0.5: icmp_seq=5 ttl=64 time=1.29 ms
    3880 bytes from 10.0.0.5: icmp_seq=6 ttl=64 time=1.05 ms
    3880 bytes from 10.0.0.5: icmp_seq=7 ttl=64 time=5.67 ms
    3880 bytes from 10.0.0.5: icmp_seq=8 ttl=64 time=1.92 ms
    3880 bytes from 10.0.0.5: icmp_seq=9 ttl=64 time=2.72 ms
    3880 bytes from 10.0.0.5: icmp_seq=10 ttl=64 time=1.20 ms
    
    --- 10.0.0.5 ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 9014ms
    rtt min/avg/max/mdev = 1.051/2.138/5.666/1.426 ms
    

    Indikasi bahwa ada ketidakcocokan dalam pengaturan antara sumber dan tujuan ditampilkan sebagai pesan kesalahan dalam output. Dalam hal ini, MTU tidak diatur pada antarmuka jaringan sumber.

    azureuser@vm-1:~/GetPathMTU$ ping 10.0.0.5 -c 10 -M do -s 3872
    PING 10.0.0.5 (10.0.0.5) 3872(3900) bytes of data.
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    
    --- 10.0.0.5 ping statistics ---
    10 packets transmitted, 0 received, +10 errors, 100% packet loss, time 9248ms
    
  10. Masuk ke vm-2.

  11. Gunakan contoh berikut untuk menjalankan skrip shell Linux untuk menguji ukuran MTU terbesar yang dapat digunakan untuk jalur jaringan tertentu:

    ./GetPathMtu.sh 10.0.0.4
    
  12. Outputnya serupa dengan contoh berikut. Jika output skrip tidak menampilkan pengaturan pada antarmuka jaringan, itu menunjukkan bahwa ukuran MTU tidak diatur dengan benar. Atau, itu bisa berarti bahwa perangkat jaringan di sepanjang jalur hanya mendukung ukuran MTU yang dikembalikan oleh skrip GetPathMTU.

    azureuser@vm-1:~/GetPathMTU$ ./GetPathMtu.sh 10.0.0.4
    destination: 10.0.0.4
    startSendBufferSize: 1200
    interfaceName: Default interface
    Test started ....................................................................................................................................................................................................
    3900
    
  13. Verifikasi ukuran MTU pada antarmuka jaringan menggunakan PING. Untuk Linux, gunakan bendera -M, -s, dan -c. Opsi -M menginstruksikan ping untuk tidak terfragmentasi, -s mengatur ukuran paket, dan -c menentukan jumlah ping yang akan dikirim. Untuk menentukan ukuran paket, kurangi 28 dari pengaturan MTU 3900.

    ping 10.0.0.4 -c 10 -M do -s 3872
    
    azureuser@vm-2:~/GetPathMTU$ ping 10.0.0.4 -c 10 -M do -s 3872
    PING 10.0.0.4 (10.0.0.4) 3872(3900) bytes of data.
    3880 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=3.70 ms
    3880 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=1.08 ms
    3880 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=1.51 ms
    3880 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=1.25 ms
    3880 bytes from 10.0.0.4: icmp_seq=5 ttl=64 time=1.29 ms
    3880 bytes from 10.0.0.4: icmp_seq=6 ttl=64 time=1.05 ms
    3880 bytes from 10.0.0.4: icmp_seq=7 ttl=64 time=5.67 ms
    3880 bytes from 10.0.0.4: icmp_seq=8 ttl=64 time=1.92 ms
    3880 bytes from 10.0.0.4: icmp_seq=9 ttl=64 time=2.72 ms
    3880 bytes from 10.0.0.4: icmp_seq=10 ttl=64 time=1.20 ms
    
    --- 10.0.0.4 ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 9014ms
    rtt min/avg/max/mdev = 1.051/2.138/5.666/1.426 ms
    

    Indikasi bahwa ada ketidakcocokan dalam pengaturan antara sumber dan tujuan ditampilkan sebagai pesan kesalahan dalam output. Dalam hal ini, MTU tidak diatur pada antarmuka jaringan sumber.

    azureuser@vm-2:~/GetPathMTU$ ping 10.0.0.4 -c 10 -M do -s 3872
    PING 10.0.0.4 (10.0.0.4) 3872(3900) bytes of data.
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    ping: local error: message too long, mtu=1500
    
    --- 10.0.0.4 ping statistics ---
    10 packets transmitted, 0 received, +10 errors, 100% packet loss, time 9248ms
    

Mengembalikan perubahan

Untuk mengembalikan perubahan yang dibuat dalam artikel ini, gunakan langkah-langkah berikut:

  1. Masuk ke vm-1.

  2. Gunakan contoh berikut untuk mengatur nilai MTU ke nilai default 1500:

    echo '1500' | sudo tee /sys/class/net/eth0/mtu || echo "failed: $?"
    

    Penting

    Perubahan MTU yang dilakukan pada langkah-langkah sebelumnya tidak bertahan selama boot ulang. Untuk membuat perubahan permanen, lihat dokumentasi yang sesuai untuk distribusi Linux Anda.

  3. ip Gunakan perintah untuk memverifikasi bahwa pengaturan MTU diterapkan ke antarmuka jaringan:

    ip address show
    
    azureuser@vm-1:~$ ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0d:3a:c5:f3:14 brd ff:ff:ff:ff:ff:ff
        inet 10.0.0.4/24 metric 100 brd 10.0.0.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20d:3aff:fec5:f314/64 scope link 
           valid_lft forever preferred_lft forever
    3: enP46433s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master eth0 state UP group default qlen 1000
        link/ether 00:0d:3a:c5:f3:14 brd ff:ff:ff:ff:ff:ff
        altname enP46433p0s2
        inet6 fe80::20d:3aff:fec5:f314/64 scope link 
           valid_lft forever preferred_lft forever
    
  4. Masuk ke vm-2 untuk mengulangi langkah-langkah sebelumnya untuk mengatur nilai MTU ke nilai default 1500.