Eli Dart wrote:
see below...

Julian Elischer wrote:
Eli Dart wrote:


Stephen Clark wrote:


So was any decision reached on this issue - will FreeBSD changed
to accept a packet on an interface that is larger than the mtu on
that interface?

If possible, I'd like to see the ability to enforce interface MTU
for received packets preserved in a sysctl if it is removed for the
 default config...  In other words, something like:

net.link.mtu_limits_received_pktsize = 0|1

Then, default it to 0 to preserve 4.x behavior.

what would this achieve?

Answering himself.. it MAY allow a driver to optimise a bit by not needing to cope with the posibility of receiving jubo packets? I can not think of any other reason.. (except to break networks that are apparently working fine).

The networks that are apparently working fine are most likely misconfigured, IMHO.

Others have made a case for permitting an interface to accept as large a packet as it can, regardless of configured MTU. That's fine for theory.

My operational experience leads me to a different place. If an interface receives a packet that is larger than its configured MTU, I would prefer that the packet be dropped as a giant and a giants counter incremented, regardless of whether the hardware can theoretically receive the packet. In modern networks, an MTU mismatch within a broadcast domain indicates a broken network, IMHO. If the devices in the network are configured to enforce MTU for both tx and rx, more problems get spotted during turnup, rather than surfacing later on as difficult-to-diagnose problems that users only call about after they are truly frustrated. And, if you have a giants counter (or input error counter) you can look at, it makes it straightforward to spot the problem.

(one could also stretch a bit and say that enforcing MTU on rx might provide less surprise to code that consumes packets and has knowledge of the MTU setting of an interface.....unfortunately I don't know enough about the details of the network stack to know if this is a real concern)

then we should have an MRU value.
mtu is mTu

note that if the following code is what is doing it, it is only enabled in
DIAGNOSTIC mode anyhow.

#ifdef DIAGNOSTIC
       if (m->m_pkthdr.len >
           ETHER_MAX_FRAME(ifp, etype, m->m_flags & M_HASFCS) &&
           (ifp->if_capenable & IFCAP_LRO) == 0) {
               if_printf(ifp, "discard oversize frame "
                               "(ether type %x flags %x len %u > max %lu)\n",
                               etype, m->m_flags, m->m_pkthdr.len,
                               ETHER_MAX_FRAME(ifp, etype,
                                               m->m_flags & M_HASFCS));
               ifp->if_ierrors++;                m_freem(m);
               return;
       }

personally I'd just remove it.


Many thanks,

        --eli



_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to