Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
On Tue, May 9, 2017 at 5:42 PM, Fredrik Markströmwrote: > > Maybe I was unclear, the veth implementation drops all packers larger then the > configured MTU (on the receiving interface). > Most ethernet drivers accepts packets up to the ethernet MTU no matter the > configured MTU. As far as I can tell from the RFC:s that is ok. This is because IP layer does the fragmentation for you. But some drivers, for example tg3, drop packet larger than its dev->mtu very early too. > > A simpler solution would be to only drop packets larger then ethernet MTU > (like > most network drivers), but I guess that will break existing stuff > already out there. I wonder why did we introduce that mtu check for veth when IP layer could either fragment or reject with ICMP?
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
On Tue, May 9, 2017 at 5:42 PM, Fredrik Markström wrote: > > Maybe I was unclear, the veth implementation drops all packers larger then the > configured MTU (on the receiving interface). > Most ethernet drivers accepts packets up to the ethernet MTU no matter the > configured MTU. As far as I can tell from the RFC:s that is ok. This is because IP layer does the fragmentation for you. But some drivers, for example tg3, drop packet larger than its dev->mtu very early too. > > A simpler solution would be to only drop packets larger then ethernet MTU > (like > most network drivers), but I guess that will break existing stuff > already out there. I wonder why did we introduce that mtu check for veth when IP layer could either fragment or reject with ICMP?
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
On Tue, May 9, 2017 at 7:48 PM, David Millerwrote: > > From: Fredrik Markstrom > Date: Tue, 9 May 2017 14:44:36 +0200 > > > Currently veth drops all packets larger then the mtu set on the > > receiving end of the pair. This is inconsistent with most hardware > > ethernet drivers. > > False. > > In fact, many pieces of ethernet hardware a not physically capable of > sending even VLAN packets that are above the normal base ethernet MTU. > Maybe I was unclear, the veth implementation drops all packers larger then the configured MTU (on the receiving interface). Most ethernet drivers accepts packets up to the ethernet MTU no matter the configured MTU. As far as I can tell from the RFC:s that is ok. A simpler solution would be to only drop packets larger then ethernet MTU (like most network drivers), but I guess that will break existing stuff already out there. The example below demonstrates what behaviour I'm referring to. Example: 8< -- # veth0 and veth1 is a veth pair and veth1 has ben moved to a separate network namespace. % # NS A % ip address add 1.2.3.4/24 dev veth0 % ip link set veth0 mtu 300 up % # NS B % ip address add 1.2.3.5/24 dev veth1 % ip link set veth1 mtu 1000 up % ping -c 1 -W 1 -s 400 1.2.3.4 PING 1.2.3.4 (1.2.3.4) 400(428) bytes of data. --- 1.2.3.4 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms 8< -- While it works fine in most setup:s with hw-interfaces: 8< -- # Host A eth2 and Host B eth0 is on the same network. # On HOST A % ip address add 1.2.3.4/24 dev eth2 % ip link set eth2 mtu 300 up % # HOST B % ip address add 1.2.3.5/24 dev eth0 % ip link set eth0 mtu 1000 up % ping -c 1 -W 1 -s 400 1.2.3.4 PING 1.2.3.4 (1.2.3.4) 400(428) bytes of data. 408 bytes from 1.2.3.4: icmp_seq=1 ttl=64 time=1.57 ms --- 1.2.3.4 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.573/1.573/1.573/0.000 ms 8< -- > > It is therefore untenable to remove this restriction univerally like > this. With the explaination above, do you still think it's untenable ? /Fredrik
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
On Tue, May 9, 2017 at 7:48 PM, David Miller wrote: > > From: Fredrik Markstrom > Date: Tue, 9 May 2017 14:44:36 +0200 > > > Currently veth drops all packets larger then the mtu set on the > > receiving end of the pair. This is inconsistent with most hardware > > ethernet drivers. > > False. > > In fact, many pieces of ethernet hardware a not physically capable of > sending even VLAN packets that are above the normal base ethernet MTU. > Maybe I was unclear, the veth implementation drops all packers larger then the configured MTU (on the receiving interface). Most ethernet drivers accepts packets up to the ethernet MTU no matter the configured MTU. As far as I can tell from the RFC:s that is ok. A simpler solution would be to only drop packets larger then ethernet MTU (like most network drivers), but I guess that will break existing stuff already out there. The example below demonstrates what behaviour I'm referring to. Example: 8< -- # veth0 and veth1 is a veth pair and veth1 has ben moved to a separate network namespace. % # NS A % ip address add 1.2.3.4/24 dev veth0 % ip link set veth0 mtu 300 up % # NS B % ip address add 1.2.3.5/24 dev veth1 % ip link set veth1 mtu 1000 up % ping -c 1 -W 1 -s 400 1.2.3.4 PING 1.2.3.4 (1.2.3.4) 400(428) bytes of data. --- 1.2.3.4 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms 8< -- While it works fine in most setup:s with hw-interfaces: 8< -- # Host A eth2 and Host B eth0 is on the same network. # On HOST A % ip address add 1.2.3.4/24 dev eth2 % ip link set eth2 mtu 300 up % # HOST B % ip address add 1.2.3.5/24 dev eth0 % ip link set eth0 mtu 1000 up % ping -c 1 -W 1 -s 400 1.2.3.4 PING 1.2.3.4 (1.2.3.4) 400(428) bytes of data. 408 bytes from 1.2.3.4: icmp_seq=1 ttl=64 time=1.57 ms --- 1.2.3.4 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.573/1.573/1.573/0.000 ms 8< -- > > It is therefore untenable to remove this restriction univerally like > this. With the explaination above, do you still think it's untenable ? /Fredrik
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
From: Fredrik MarkstromDate: Tue, 9 May 2017 14:44:36 +0200 > Currently veth drops all packets larger then the mtu set on the > receiving end of the pair. This is inconsistent with most hardware > ethernet drivers. False. In fact, many pieces of ethernet hardware a not physically capable of sending even VLAN packets that are above the normal base ethernet MTU. It is therefore untenable to remove this restriction univerally like this.
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
From: Fredrik Markstrom Date: Tue, 9 May 2017 14:44:36 +0200 > Currently veth drops all packets larger then the mtu set on the > receiving end of the pair. This is inconsistent with most hardware > ethernet drivers. False. In fact, many pieces of ethernet hardware a not physically capable of sending even VLAN packets that are above the normal base ethernet MTU. It is therefore untenable to remove this restriction univerally like this.
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
On Tue, 9 May 2017 14:44:36 +0200 Fredrik Markstromwrote: > Currently veth drops all packets larger then the mtu set on the receiving > end of the pair. This is inconsistent with most hardware ethernet drivers. There is no guarantee that packets larger than MTU + VLAN tag will be received by hardware drivers. So why is this necessary for veth? What is your special use case which makes this necessary?
Re: [PATCH 0/2] net: Set maximum receive packet size on veth interfaces
On Tue, 9 May 2017 14:44:36 +0200 Fredrik Markstrom wrote: > Currently veth drops all packets larger then the mtu set on the receiving > end of the pair. This is inconsistent with most hardware ethernet drivers. There is no guarantee that packets larger than MTU + VLAN tag will be received by hardware drivers. So why is this necessary for veth? What is your special use case which makes this necessary?
[PATCH 0/2] net: Set maximum receive packet size on veth interfaces
Currently veth drops all packets larger then the mtu set on the receiving end of the pair. This is inconsistent with most hardware ethernet drivers. This patch set adds a new driver attribute to set the maximum size of received packet to make it possible to create configurations similar to those possible with (most) hardware ethernet interfaces. The set consists of two patches. The first one adding a parameter do the dev_forward_skb functions to specify the maximum packet size, the second one implents a new attribute (VETH_MRU) in the veth driver. Fredrik Markstrom (1): veth: Added attribute to set maximum receive size on veth interfaces Fredrik Markström (1): net: Added mtu parameter to dev_forward_skb calls drivers/net/ipvlan/ipvlan_core.c | 7 --- drivers/net/macvlan.c| 4 ++-- drivers/net/veth.c | 45 +++- include/linux/netdevice.h| 10 - include/uapi/linux/veth.h| 1 + net/bridge/br_forward.c | 4 ++-- net/core/dev.c | 17 +-- net/core/filter.c| 4 ++-- net/l2tp/l2tp_eth.c | 2 +- 9 files changed, 72 insertions(+), 22 deletions(-) -- 2.11.0
[PATCH 0/2] net: Set maximum receive packet size on veth interfaces
Currently veth drops all packets larger then the mtu set on the receiving end of the pair. This is inconsistent with most hardware ethernet drivers. This patch set adds a new driver attribute to set the maximum size of received packet to make it possible to create configurations similar to those possible with (most) hardware ethernet interfaces. The set consists of two patches. The first one adding a parameter do the dev_forward_skb functions to specify the maximum packet size, the second one implents a new attribute (VETH_MRU) in the veth driver. Fredrik Markstrom (1): veth: Added attribute to set maximum receive size on veth interfaces Fredrik Markström (1): net: Added mtu parameter to dev_forward_skb calls drivers/net/ipvlan/ipvlan_core.c | 7 --- drivers/net/macvlan.c| 4 ++-- drivers/net/veth.c | 45 +++- include/linux/netdevice.h| 10 - include/uapi/linux/veth.h| 1 + net/bridge/br_forward.c | 4 ++-- net/core/dev.c | 17 +-- net/core/filter.c| 4 ++-- net/l2tp/l2tp_eth.c | 2 +- 9 files changed, 72 insertions(+), 22 deletions(-) -- 2.11.0