Change the default Maximum Transmission Unit (MTU) Size
A higher MTU brings greater efficiency because each packet carries more user data while protocol overheads, such as headers or underlying per-packet delays remain fixed, and higher efficiency means a slight improvement in bulk protocol throughput. However, large packets can occupy a slow link for some time, causing greater delays to following packets and increasing lag and minimum latency. For example, a 1500 byte packet, the largest allowed by Ethernet at the network layer (and hence most of the Internet), would tie up a 14.4k modem for about one second.
Now here are the step by step to increase the MTU size, on Solaris of course.
by default, if you type “ifconfig -a” you will get the MTU size is 1500:
bash-3.00# ifconfig -a
lo0: flags=2001000849
inet 127.0.0.1 netmask ff000000
e1000g0: flags=201000843
inet 10.32.16.1 netmask ffffff00 broadcast 10.32.16.255
ether 8:0:27:73:25:e8
e1000g1: flags=201000843
inet 10.32.16.2 netmask ffffff00 broadcast 10.32.16.255
ether 8:0:27:6a:34:ae
bash-3.00#
you can change MTU size by running “ifconfig
bash-3.00# ifconfig e1000g1 mtu 8000
ifconfig: setifmtu: SIOCSLIFMTU: e1000g1: Invalid argument
{tried on bge interface also on M5000 and the result still same:
root@server # ifconfig bge2 mtu 8000
ifconfig: setifmtu: SIOCSLIFMTU: bge2: Invalid argument
{using dladm command also failed:
root@server # dladm set-linkprop -p mtu=8000 bge2
dladm: warning: invalid link property ‘mtu’
READ from this link and this link, then finally I understand that changing MTU size is different for each interface types. and here are the conclusion:
Change MTU size for E1000g (Intel PRO/1000 Gigabit family device driver) interface:
Scenario:
I have 2 interface; e1000g0 and e1000g1. I need to change the MTU size to 8000 for e1000g1 interface only.
1. Check current config with “ifconfig -a”
2. edit file “/kernel/drv/e1000g.conf”
go to “MaxFrameSize” line, change the zero values number like this:
MaxFrameSize=0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
# 0 is for normal ethernet frames.
# 1 is for upto 4k size frames.
# 2 is for upto 8k size frames.
# 3 is for upto 16k size frames.
# These are maximum frame limits, not the actual ethernet frame
# size. Your actual ethernet frame size would be determined by
# protocol stack configuration (please refer to ndd command man pages)
# For Jumbo Frame Support (9k ethernet packet)
# use 3 (upto 16k size frames)
Note: Above configuration only affect to e1000g1.
If you want to change MTU size to all interface, just simply change all zero values with 1,2,3 as you need:
Example: MaxFrameSize=2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;
then, all your interface will support 8K MTU.
3. reboot
4. check the result with “ifconfig -a | grep mtu”
bash-3.00# ifconfig -a | grep mtu
lo0: flags=2001000849
e1000g0: flags=201000843
e1000g1: flags=1201000843
bash-3.00#
5. After reboot, the MTU size is 8106. if you want 8000 mtu size, then edit file “/etc/hostname.e1000g1″:
bash-3.00# cat /etc/hostname.e1000g1
solaris10 mtu 8000
bash-3.00# ifconfig -a
lo0: flags=2001000849
inet 127.0.0.1 netmask ff000000
e1000g0: flags=201000843
inet 10.32.16.1 netmask ffffff00 broadcast 10.32.16.255
ether 8:0:27:73:25:e8
e1000g1: flags=1201000843
inet 10.32.16.2 netmask ffffff00 broadcast 10.32.16.255
ether 8:0:27:6a:34:ae
Change MTU size for bge (Broadcom Gigabit Ethernet device driver) interface:
bash3.00# grep bge /etc/path_to_inst
“/pci@0,600000/pci@0/pci@8/pci@0/network@2″ 0 “bge”
“/pci@0,600000/pci@0/pci@8/pci@0/network@2,1″ 1 “bge”
bash3.00# cat /etc/system
set bge:bge_jumbo_enable = 1
bash3.00# cat /platform/sun4u/kernel/drv/bge.conf
default_mtu=9000;
name=”bge” parent=”/pci@0,600000″ unitaddress=”2″ default_mtu=9000;
bash3.00# reboot
bash3.00# ifconfig -a
Change MTU size for ce (Cassini Gigabit-Ethernet device driver) interface:
No comments:
Post a Comment