Thread (4 messages) 4 messages, 2 authors, 2017-06-14

Re: Receiving raw packets (incl. VLAN tags) on raw sockets

flat view

From: Eric W. Biederman <hidden>
Date: 2017-06-14 17:01:22

Jan Grashöfer [off-list ref] writes:
On 14/06/17 16:41, Eric W. Biederman wrote:
quoted
That does not work.  That is is just the software fallback for when
the device driver does not have a special case the processing
vlan tagged packets.

There was a major inconsistency that for a long time the hardware
network drivers were stripping tags and the software ones were not.

The code you are playing with is the fix for the rare slow path
that does not happen to strip the tags.  Disabling the rare slow path
might temporarily solve your symptoms but it will be much more painful
when you are entrenched in your ways and discover that high performance
hardware behaves differently than your software device.
Thanks for your reply! Actually, I was referring to COTS hardware that
incorporates offloading features. But, when it comes to (security)
monitoring, offloading is usually disabled [1,2] to process the
packets as seen on the wire. Thus the "slow path" would be the default
path for most monitoring applications. That is, what makes this
situation kind of weird. After turning off the NIC's VLAN offloading,
it took me some time to realize that now the kernel strips off VLAN
tags. If someone decides that VLAN offloading is not needed, I think
the kernel should not enforce it.
In practice it is too too complicated to support both so we choose the
mode where vlan tags are always stripped.

I can imagine a tweak to pf_packet where it readds the vlan tag before
it gets to user space.  I can not image changing how we treat the vlan
tags internally to the kernel.

There were nasty kernel bugs before: 
bcc6d4790361 ("net: vlan: make non-hw-accel rx path similar to hw-accel")

I don't even want to contemplate opening that can of worms again.

Eric
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help