Maximumtransmissie-eenheid (MTU) configureren voor virtuele machines in Azure
De Maximum Transmission Unit (MTU) is een meting die het grootste ethernetframe (pakket) vertegenwoordigt dat wordt verzonden door een netwerkapparaat of interface. Als een pakket de grootste grootte overschrijdt die door het apparaat wordt geaccepteerd, wordt het pakket gefragmenteerd in meerdere kleinere pakketten en later opnieuw verzameld op de bestemming.
Fragmentatie en opnieuwassembly kunnen prestatie- en bestelproblemen veroorzaken, wat resulteert in een suboptimale ervaring. Het optimaliseren van MTU voor uw oplossing kan prestatievoordelen voor netwerkbandbreedte bieden door het totale aantal pakketten te verminderen dat nodig is om een gegevensset te verzenden. Configuratie van grotere MTU-grootten kan de netwerkdoorvoer mogelijk verbeteren, omdat het aantal pakketten en header-overhead dat nodig is voor het verzenden van een gegevensset vermindert.
De MTU is een configureerbare instelling in het besturingssysteem van een virtuele machine. De standaardwaarde MTU-instelling in Azure is 1500 bytes.
VM's in Azure kunnen alleen ondersteuning bieden voor grotere MTU's dan de standaardwaarde van 1500 byte voor verkeer dat binnen het virtuele netwerk blijft.
In de volgende tabel ziet u de grootste MTU-grootte die wordt ondersteund op de Azure-netwerkinterfaces die beschikbaar zijn in Azure:
Besturingssysteem | Netwerkinterface | Grootste MTU voor verkeer tussen virtuele netwerken |
---|---|---|
Windows Server | Mellanox Cx-3, Cx-4, Cx-5 | 3900 Wanneer u de MTU-waarde instelt Set-NetAdapterAdvancedProperty , gebruikt u de waarde 4088 .. Als u opnieuw opstarten wilt behouden, moet de waarde die wordt Test-Connection geretourneerd door ook worden ingesteld met Set-NetIPInterface . |
Windows Server | (Preview) Microsoft Azure Network Adapter MANA | 9000 Wanneer u de MTU-waarde instelt met Set-NetAdapterAdvancedProperty , gebruikt u de waarde. 9014 Als u opnieuw opstarten wilt behouden, moet de waarde die wordt Test-Connection geretourneerd door ook worden ingesteld met Set-NetIPInterface . |
Linux | Mellanox Cx-3, Cx-4, Cx-5 | 3900 |
Linux | (Preview) Microsoft Azure-netwerkadapter | 9000 |
Vereisten
Een Azure-account met een actief abonnement. Maak gratis een account.
Twee virtuele Linux-machines in hetzelfde virtuele netwerk in Azure. Zie Een virtuele Linux-machine maken in Azure Portal voor meer informatie over het maken van een virtuele Linux-machine. Externe toegang tot de virtuele machines is vereist voor voltooiing van het artikel. Zie Wat is Azure Bastion?
- Voor de doeleinden van dit artikel hebben de virtuele machines de naam vm-1 en vm-2. Vervang deze waarden door uw waarden.
Resourcevoorbeelden
De volgende resources worden gebruikt als voorbeelden in dit artikel. Vervang deze waarden door uw waarden.
Bron | Naam | IP-adres |
---|---|---|
Virtuele machine 1 | vm-1 | 10.0.0.4 |
Virtuele machine 2 | vm-2 | 10.0.0.5 |
Voorzorgsmaatregelen
Virtuele machines in Azure kunnen alleen ondersteuning bieden voor een grotere MTU dan de standaardwaarde van 1500 byte voor verkeer dat binnen het virtuele netwerk blijft. Een grotere MTU wordt niet ondersteund voor scenario's buiten vm-naar-VM-verkeer binnen het virtuele netwerk. Verkeer dat via gateways, peerings of internet loopt, wordt mogelijk niet ondersteund. Configuratie van een grotere MTU kan leiden tot fragmentatie en vermindering van de prestaties. Voor verkeer dat gebruikmaakt van deze scenario's, gebruikt u de standaard 1500 byte MTU voor testen om ervoor te zorgen dat een grotere MTU wordt ondersteund in het hele netwerkpad.
Optimale MTU is besturingssysteem, netwerk en toepassingsspecifiek. De maximaal ondersteunde MTU is mogelijk niet optimaal voor uw use-case.
Test altijd eerst wijzigingen in MTU-instellingen in een niet-kritieke omgeving voordat u breed of op kritieke omgevingen toepast.
Pad MTU-detectie
Het is belangrijk om inzicht te krijgen in de MTU die wordt ondersteund in het netwerkpad dat door uw toepassing of machines wordt gebruikt. Pad MTU-detectie is een middel om de grootste MTU te achterhalen die wordt ondersteund tussen een bron- en doeladres. Het gebruik van een grotere MTU dan wordt ondersteund tussen het bron- en doeladres resulteert in fragmentatie, wat de prestaties negatief kan beïnvloeden.
In dit artikel worden de voorbeelden gebruikt om het MTU-pad tussen twee virtuele machines te testen. Volgende tests kunnen vanaf een virtuele machine worden uitgevoerd naar een routeerbaar doel.
Gebruik de volgende stappen om een grotere MTU-grootte in te stellen op een virtuele bron- en doelmachine. Controleer het pad MTU met een shellscript voor Linux of PowerShell voor Windows. Als de grotere MTU niet wordt ondersteund, verschillen de resultaten in het pad MTU-detectietest van de instellingen die zijn geconfigureerd op de interface van de virtuele bron- of doelmachine.
Het shell-script is beschikbaar in de galerie met Azure-voorbeelden. Download het script voor Linux via de volgende koppeling en sla het op in vm-1 en vm-2.
Gebruik de volgende stappen om de MTU-grootte op een virtuele Linux-machine te wijzigen:
Aanmelden bij vm-1
Gebruik de
ip
opdracht om de huidige netwerkinterfaces en hun MTU-instellingen weer te geven. Noteer het IP-adres voor de volgende stappen. In dit voorbeeld is het IP-adres 10.0.0.4 en de ethernetinterface 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
Stel de MTU-waarde op vm-1 in op de hoogste waarde die wordt ondersteund door de netwerkinterface. In dit voorbeeld is de naam van de netwerkinterface eth0. Vervang deze waarde door uw waarde.
- Gebruik voor de Mellanox-adapter het volgende voorbeeld om de MTU-waarde in te stellen op 3900:
echo '3900' | sudo tee /sys/class/net/eth0/mtu || echo "failed: $?"
- Gebruik voor de Microsoft Azure-netwerkadapter het volgende voorbeeld om de MTU-waarde in te stellen op 9000:
echo '9000' | sudo tee /sys/class/net/eth0/mtu || echo "failed: $?"
Belangrijk
De MTU-wijzigingen die in de vorige stappen zijn aangebracht, blijven niet behouden tijdens het opnieuw opstarten. Raadpleeg de juiste documentatie voor uw Linux-distributie om de wijzigingen permanent aan te brengen.
Gebruik de
ip
opdracht om te controleren of de MTU-instellingen zijn toegepast op de netwerkinterface: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
Meld u aan bij vm-2 om de vorige stappen te herhalen om de MTU-waarde in te stellen op de hoogste waarde die wordt ondersteund door de netwerkinterface.
Meld u aan bij vm-1.
Gebruik het volgende voorbeeld om het Linux Shell-script uit te voeren om de grootste MTU-grootte te testen die kan worden gebruikt voor een specifiek netwerkpad. Vervang de waarde van de doelhost door het IP-adres van vm-2.
./GetPathMtu.sh 10.0.0.5
De uitvoer lijkt op die in het volgende voorbeeld. Als de uitvoer van het script de instelling niet op de netwerkinterface weergeeft, geeft dit aan dat de MTU-grootte niet juist is ingesteld. Het kan ook betekenen dat een netwerkapparaat langs het pad alleen ondersteuning biedt voor de MTU-grootte die wordt geretourneerd door het GetPathMTU-script.
azureuser@vm-1:~/GetPathMTU$ ./GetPathMtu.sh 10.0.0.5 destination: 10.0.0.5 startSendBufferSize: 1200 interfaceName: Default interface Test started .................................................................................................................................................................................................... 3900
Controleer de MTU-grootte op de netwerkinterface met behulp van
PING
. Gebruik voor Linux de vlaggen -M, -s en -c. Met de optie -M wordt ping geïnstrueerd voor NOT-fragment, -s stelt de pakketgrootte in en -c stelt het aantal pings in dat moet worden verzonden. Als u de pakketgrootte wilt bepalen, trekt u 28 af van de MTU-instelling van 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
Een indicatie dat de instellingen tussen de bron en het doel niet overeenkomen, worden weergegeven als een foutbericht in de uitvoer. In dit geval is de MTU niet ingesteld op de bronnetwerkinterface.
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
Meld u aan bij vm-2.
Gebruik het volgende voorbeeld om het Linux Shell-script uit te voeren om de grootste MTU-grootte te testen die kan worden gebruikt voor een specifiek netwerkpad:
./GetPathMtu.sh 10.0.0.4
De uitvoer lijkt op die in het volgende voorbeeld. Als de uitvoer van het script de instelling niet op de netwerkinterface weergeeft, geeft dit aan dat de MTU-grootte niet juist is ingesteld. Het kan ook betekenen dat een netwerkapparaat langs het pad alleen ondersteuning biedt voor de MTU-grootte die wordt geretourneerd door het GetPathMTU-script.
azureuser@vm-1:~/GetPathMTU$ ./GetPathMtu.sh 10.0.0.4 destination: 10.0.0.4 startSendBufferSize: 1200 interfaceName: Default interface Test started .................................................................................................................................................................................................... 3900
Controleer de MTU-grootte op de netwerkinterface met behulp van
PING
. Gebruik voor Linux de vlaggen -M, -s en -c. Met de optie -M wordt ping geïnstrueerd voor NOT-fragment, -s stelt de pakketgrootte in en -c stelt het aantal pings in dat moet worden verzonden. Als u de pakketgrootte wilt bepalen, trekt u 28 af van de MTU-instelling van 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
Een indicatie dat de instellingen tussen de bron en het doel niet overeenkomen, worden weergegeven als een foutbericht in de uitvoer. In dit geval is de MTU niet ingesteld op de bronnetwerkinterface.
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
Wijzigingen ongedaan maken
Als u de wijzigingen die in dit artikel zijn aangebracht, wilt terugzetten, gebruikt u de volgende stappen:
Meld u aan bij vm-1.
Gebruik het volgende voorbeeld om de MTU-waarde in te stellen op de standaardwaarde van 1500:
echo '1500' | sudo tee /sys/class/net/eth0/mtu || echo "failed: $?"
Belangrijk
De MTU-wijzigingen die in de vorige stappen zijn aangebracht, blijven niet behouden tijdens het opnieuw opstarten. Raadpleeg de juiste documentatie voor uw Linux-distributie om de wijzigingen permanent aan te brengen.
Gebruik de
ip
opdracht om te controleren of de MTU-instellingen zijn toegepast op de netwerkinterface: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
Meld u aan bij vm-2 om de vorige stappen te herhalen om de MTU-waarde in te stellen op de standaardwaarde van 1500.
Gerelateerde inhoud
- Overzicht van Microsoft Azure Network Adapter (MANA).