August 22nd, 2007
For a while I have been wanting to get Solaris working with jumbo frames on Intel gigabit ethernet (I have a PCI-X 82546EB Dual Port Gigabit Ethernet Controller). Initially i wanted this for improved performance between my diskless workstation and Solaris server (NFS). Since moving state in January 2007, I never actually setup the diskless workstation again, so never bothered with jumbo frames, as my switched network was only 100mbit (diskless workstation connected to server via dedicated port).
Anyhow, I still only have a 100mbit switched network, but I just purchased a ST Labs C-210 gigabit expresscard for my laptop and want to play with iSCSI. The plan was to have a direct gigabit connection from laptop to server dedicated to iSCSI.
To get the best performance out of iSCSI I needed to enable jumbo frame support at each end. In windows all i had to do is configure the driver to support 9k frames. In Solaris it was a bit more tricky…
In my case my internal hostname will be tanker-int with an ip of 192.168.2.5, with a mtu of 9000 (as that is the largest frame the other end of the link (the ST Labs card) can support).
Firstly added hostname to
/etc/hostname.e1000g0 (e1000g0 being the particular port i was using)
tanker-int mtu 9000 up
/etc/inet/hosts to contain:
Find The MaxFrameSize line and set to:
to support 16k frames
A reboot shouldn’t be necessary, but even after unloading the kernel module reloading it and brining interface up, it would refuse to accept my driver config changes, so i just gave up and did a reboot.
mtu 9000 index 2 inet 192.168.2.5 netmask ffffff00 broadcast 192.168.2.255 ether 0:4:23:c3:f6:90
There are other tcp tuning params that seem to be a good idea to change like window size and receive/send buffers. I have yet to work this out, it should be a good post for the future when I work it out.