[ovs-dev] FW: MPLS and VLAN QinQ patch

ravi kerur rkerur at gmail.com
Tue May 29 22:47:34 UTC 2012


Thanks Jesse, I will check the code in vport-netdev.c file and get
back with the diffs. I did modify the code to get earlier version
working. Anyways will get back to you.

On Tue, May 29, 2012 at 3:32 PM, Jesse Gross <jesse at nicira.com> wrote:
> On Tue, May 29, 2012 at 1:32 PM, ravi kerur <rkerur at gmail.com> wrote:
>> Thanks Jesse. What I have tested is 2 Ubuntu 11.04 and 12.04 physical
>> systems connected via a ethernet switch. I have tested scp downloads,
>> iperf + netperf. Flows are setnsup such that MPLS tag is pushed for
>> every outgoing TCP segments. I do see via tcpdump that a jumbo packet
>> (~15K) is sent out by scp and NIC chops the jumbo packet based on the
>> MTU of the NIC before sending out. On the receive side, I do see
>> around 10 1500 byte packets being received(having same IPID). I don't
>> think LRO/GRO is taking place on the receive side though. This I have
>> tested successfully.
>>
>> The reason I mentioned about NIC was because I was seeing messages
>> "checksum partial, protocol=0x8847/0x88a8..." from the driver. The
>> driver complains about this when it is sending out a template about
>> checksums offsets and other things to NIC and has to be modified to
>> handle new eth_types.
>
> Drivers need to report to the network stack what types of offloading
> they support.  Since there's no current support for MPLS, no driver
> reports this capability and should not receive MPLS packets that need
> to be offloaded.  This means that even if it works the behavior is not
> correct.
>
>> I have looked at vport-netdev.c and tunnel.c files and modified code
>> to handle MPLS and QinQ tags. Can you please point me which function
>> to be specific for software offload emulation. I will modify if I have
>> not already handled it.
>
> Generally speaking the emulation code is handled by skb_gso_segment()
> in dev.c in the kernel code outside of OVS.  This should mostly work
> except that it needs to be able to detect that MPLS requires
> emulation.  This will be the easiest part to get working and is the
> best place to start.  However, in order for this code to work on any
> kernel before your changes get integrated (i.e. Linux 3.6 at the
> earliest) you'll have to emulate it in OVS as well, like we do for
> vlans in vport-netdev.c.



More information about the dev mailing list