Jak zmienić MTU?

moli

Passing Basics
Beginner
13 Wrzesień 2008
27
0
1
Poznań
QNAP
TS-109/209
Ethernet
100 Mbps
Witam!

W ramach tuningu sieci staram się ustawić dla wszystkich urządzeń sieciowych to samo MTU. Ponieważ dla mojego ISP maksymalną wartością bez fragmentacji jest 1492, to taką wartość ustawiłem na routerze i chciałbym mieć na wszystkich urządzeniach. O ile z laptopami poradziłem sobie, o tyle Qnap z uporem maniaka trzyma się wartości 1500:

Kod:
[~] # ifconfig
eth0      Link encap:Ethernet  HWaddr 00:08:9B:AD:0E:37
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2210 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2999 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:512
          RX bytes:476266 (465.1 Kb)  TX bytes:1130625 (1.0 Mb)
          Interrupt:21

Co do tej pory próbowałem (i nie przyniosło rezultatu):

1) zmiana przez ifconfig

Kod:
ifconfig eth0 mtu 1492

2) podmiana wartości MTU w sekcji Network pliku uLinux.conf

Ponieważ każdy reboot powodował przywracanie wartości 1500, to

3) zmieniłem sekcję ustawiania MTU w /etc/init.d/network.sh która to odpowiedzialna była za przywracanie tej wartości:

Kod:
set_mtu()
{
        /sbin/log_tool -a  "Attempt to set MTU to 1492" -t 0
        local MTU=`$GETCFG eth0 MTU -d 1492`
        sleep 3
        /sbin/eth_util -s eth0
        local SPEED=`$GETCFG eth0 Speed -d 100`
        if [ "$SPEED" = "1000" ]; then
                /sbin/ifconfig eth0 mtu $MTU
        else
                /sbin/ifconfig eth0 mtu 1492
                if [ ! "$MTU" = "1492" ]; then
                        $SETCFG eth0 MTU 1492
                        /sbin/write_log "MTU different than 1492 - set to 1492" 2
                fi
        fi
}

Sam skrypt network.sh też jest przywracany do postaci domyślnej przy każdym reboocie, stąd

4) dodałem procedurę jego podmiany i restartu sieci w autorun.sh:

Kod:
#!/bin/sh
/sbin/log_tool -a "Engage autorun.sh" -t 0
/bin/sleep 5
/bin/cp /share/HDA_DATA/.qpkg/network.sh /etc/init.d/network.sh
/etc/init.d/network.sh restart

W logach wygląda na to, że podmieniony skrypt network.sh został uruchomiony:

aimg828.imageshack.us_img828_303_logg.jpg


Niemniej wciąż po sprawdzeniu poleceniem ifconfig MTU ma wartość 1500.

Czy ktoś z szanownych grupowiczów ma jakiś pomysł jak możnaby przymusić Qnapa do zmiany MTU?
 
Najprawdopodobniej problem dotyczy NASów opartych o procesor ARM.

Po wydaniu polecenia ifconfig eth0 mtu 1492 W logach od kernela znalazłem następujące wpisy:

Kod:
eth0: Ilegal MTU value 1492,  rounding MTU to: 1500
eth0: link down
eth0: change mtu 1500 (buffer-size 1520) to 1500 (buffer-size 1520)

Zastanawiam się czy to ograniczenie w driverach (możnaby się pokusić o ich przekompilowanie) czy też hardware narzuca takie ograniczenia.
 
Yo!
Na mojej "atomowej" qnapce ifconfig eth0 mtu 1492 faktycznie zmienia MTU:
Kod:
<6>0000:03:00.0: eth0: changing MTU from 1500 to 1492
<6>e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
ifconfig eth0
Kod:
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:XXX.XXX.XXX.XXX  Bcast:XXX.XXX.XXX.XXX  Mask:XXX.XXX.XXX.XXX
          UP BROADCAST RUNNING MULTICAST  MTU:1492  Metric:1
          RX packets:XXX errors:0 dropped:0 overruns:0 frame:0
          TX packets:XXX errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:XXX (X.X GiB)  TX bytes:XXX (X.X GiB)
          Memory:febe0000-fec00000