On May 12, 2009, at 2:30 AM, Garrett D'Amore wrote:

Peter Memishian wrote:
> I still maintain that for arbitrary traffic, you cannot know the > "optimal" MTU, because you don't know what the overheads are. For > protocols with a very high per-packet cost, the DMA overhead of larger > packet might be in the noise, to the point that 9K is even better on the > nxge configuration you've proposed. > > I think the right answer is to document this information in the man page > somewhere like this:

Documentation is useless as a programming interface, which is what e.g.,
Fishworks needs this for.  The application can account for its own
overheads and provide whatever clues are necessary to help the driver work together to find the right value, but leaving it to the documentation just
doesn't cut it.

--
meem

How do you programmatically handle this? 8150 is almost always *wrong*. The only thing its good for is a benchmark special, or an isolated network with just these kinds of devices on it. Everyone everywhere else will use 9000 as that is the de-facto standard.


Finding/divining the proper jumbo MTU for a particular interface, whatever the value of jumbo may be, has always been an area of Solaris (well, almost any OS) that I've pined for improvement. Not only can the max usable MTU (switch hardware permitting) be hard to find, usually by digging through the driver's .conf file, but setting it as well without having to reboot, or if you're lucky and sly, doing a modunload/modload of the driver after changing the right (and inconsistent across drivers) field in the .conf file.

Some drivers, such as e1000g, hint at being able to set super jumbo frames of 16k in size. Others top out at the universally-recognized jumbo mtu of 9000. Yet one driver (the name of which escapes me) allows a 9120 byte mtu.

It would be great if one could:

1) set the max allowed MTU through dladm, or better yet, stop pretending that 1500 is the universal max and just let it be set with ifconfig, with 1500 being the default absent the mtu argument being specified.

2) A dladm linkprop (read only) that shows the max MTU that is supported by the driver. The drivers will have to advertise this, which is a good thing - drivers should be advertising their capabilities in a consistent and standard way. MTU, speeds supported, any hardware checksum or offload capabilities, maybe even rings active and configurable.

I just hate having to go on safari through kstats, driver conf files, or driver source to see what a particular interface is capable of. Listing interface capability in dladm and being able to tweak the MTU freely via the normal route of 'ifconfig <interface> mtu X' would be just awesome.

Here's an exercise: You have a machine with both e1000g and nxge interfaces, such as a T5220 for example. Go forth and turn on jumbo frames for both interface types and only for instance 0 of either interface type. Note the vastly different ways of doing it.

/dale
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to