Garrett D'Amore wrote:
For the mtu case: the MTU definitiion targetted in the doc was intended
to address the driver's default_mtu (the tunable typically tweaked
by setting various params in the driver.conf to get Jumbo Frames). As you point out, there is a related concept of the GLDv3 max SDU which
can be lowered without involvement from the driver.  We could split the
mtu into two items, the "max_mtu" (which would be the classical ethernet driver's "default_mtu") and the "max_sdu" which would be
recognized and handled in the mac layer itself, without attempting to
invoke the mc_*prop functions. Would this make sense?

Lowering the MTU is done at the IP layer.

That's a bug IMO. IP should just use the MTU reported by the layer underneath. Any modification of MTU needs to be done from the bottom of the stack, not the top.

There is little reason to change the SDU size reported by the driver. dladm shouldn't concern itself with that.

I don't know exactly what you're trying to say. Are you saying that the driver should report different values for its max SDU in mac_register_t and its "default MTU" property? I don't see what the point of that would be. They are effectively the same thing...

The driver's default_mtu is really the value reported via the maximum SDU in Nemo. I'd just leave it "default_mtu" for now.

Right...

Do we have a way for the upper layers of the stack (IP, TCP, VLAN, aggr) to react to a change in the max_sdu? I don't think so.

Yes. DL_NOTE_SDU_SIZE. It works great with IP tunnels, and I have it working for Nemo in the Clearview IP tunneling device driver. It's not at all complex as it only required a few lines of code in Nemo to get working, and an additional MAC entry point to have the driver tell the MAC layer that the max SDU has changed.

I really don't see a reason to restrict changing the MTU to stopped MACs, as it's quite trivial to get working.

Its likely that changing this tunable will require replumbing various layers. And, quite frankly, that's probably okay, because when switching to a larger MTU it requires other administrative changes as well. (I.e. you have to make sure all other hosts on the same subnet *also* can cope with large frames.)

Synchronizing the increase of MTU of interfaces of various hosts on the network is not related. I don't see why having the following steps on 8 different hosts:

ifconfig bge0 unplumb
dladm set-linkprop default_mtu=9000 bge0
ifconfig bge0 plumb dhcp

Is any better than the following step on those same 8 hosts:

dladm set-linkprop default_mtu=9000 bge0

You cannot atomically plumb every interface on the network, so there's going to be some period of time when all of the interfaces are not in sync...

Engineering a solution around this is likely to be "non-trivial".

It is quite trivial. It took maybe 15 minutes to implement with a few dozen lines of code in Nemo. IP can already handle max SDU changes dynamically, so no changes were needed at that layer.

So it may be simpler to just have a way for brussels to report back to the user that the change won't take effect until the upper layers are replumbed.

I disagree.

-Seb
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to