On Mon, Aug 21, 2017 at 05:47:13PM +0800, Jiri Benc wrote: > > > I don't know how we can support this, is it a must-have thing? > > What would happen if you get a GSO packet? Ports of an ovs bridge claim > GSO support, thus they may get a GSO packet. You have to handle it one > way or the other: either software segment the packet before pushing the > header, or implement proper GSO support for NSH. >
I checked GSO support code, we have two cases to handle, one case is to output NSH packet to VxLAN-gpe port, the other case is to output NSH packet to Ethernet port (tap, veth, vhost, physical eth, etc.), I don't think it is a good way to do GSO support in OVS module, because we can't know the final output port at this point, if the final output port is VxLAN-gpe port, it will still face GSO issue, but I didn't see vxlan module handles this, maybe udp tunnel did this. I think a NSH packet can be split into two packets, one has NSH header, another one doesn't, so I'm not sure how vxlan module can avoid this situation. For the second case, we can add a nsh GSO module in net/nsh/nsh_gso.c (as MPLS did in net/mpls/mpls_gso.c), that is the best way to handle this, what do you think about it?