- Bei ping -c1 195.135.220.3 -s 1600 -M do solange den Parameter 1600 um 100 erniedrigen bis keine Meldung mehr kommt dass 'DF set' ist.
- Dann die Größe wieder schrittweise um 10 erhöhen bis die 'DF set' Meldung wieder erscheint
- Danach die Größe wieder um 2 schrittweise erniedrigen, bis 'DF set' wieder verschwindet.
- Dann 28 dazuzählen (IP Headergröße) - und das ist die richtige maximale MTU
- Mit ipconfig eth0 mtu 1492 kann man dann der MTU Wert temporär ändern.
- Permanentes Ändern des MTU Wertes geht bei SuSE entweder per YAST bei SuSE 10.3 und ansonsten muss der Parameter in /etc/sysconfig/network/eth.... bei MTU='1492' eingetragen werden.
size=1272; while ping -s $size -c1 -M do google.com >&/dev/null; do ((size+=4)); done; echo "Max MTU size: $((size-4+28))"
#!/bin/bash
# Detect maximum possible MTU for client
# 10/12/03 - framp at linux-tips-and-tricks dot de
DFDetected=0
testMTU=1600
echo "Calculating optimal MTU"
echo "Decreasing MTU until fragmentation starts..."
while [[ $DFDetected -eq 0 ]]; do
dummy=`ping -c1 195.135.220.3 -s $testMTU -M do | grep "DF set"`
DFDetected=$?
if [[ $DFDetected -eq 0 ]]; then
let testMTU=$testMTU-100
fi
done
DFDetected=0
let testMTU=$testMTU+100
while [[ $DFDetected -eq 0 ]]; do
dummy=`ping -c1 195.135.220.3 -s $testMTU -M do | grep "DF set"`
DFDetected=$?
if [[ $DFDetected -eq 0 ]]; then
let testMTU=$testMTU-10
fi
done
DFDetected=0
let testMTU=$testMTU+10
echo "Increasing MTU until fragmentation stops..."
while [[ $DFDetected -eq 0 ]]; do
dummy=`ping -c1 195.135.220.3 -s $testMTU -M do | grep "DF set"`
DFDetected=$?
if [[ $DFDetected -eq 0 ]]; then
let testMTU=$testMTU-2
fi
done
let mtuRequired=$testMTU+28
echo "Adding IP header of 28 bytes to MTU..."
echo "Optimal MTU is $mtuRequired"
defaultGatewayNic=`route -n | awk '/^[0]+\.[0]+\.[0]+\.[0]+/ { print $NF; } '`
mtuActive=`ifconfig $defaultGatewayNic | perl -n -e '{ if ($_=~/MTU:(\d+)/) { print "$1"}; }'`
echo "MTU of $mtuActive is used on interface $defaultGatewayNic"
if [[ $mtuActive -gt $mtuRequired ]]; then
echo "Current MTU should be corrected to $mtuRequired"
else
echo "MTU is Ok"
fi

