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

ravi kerur rkerur at gmail.com
Tue May 29 22:21:36 UTC 2012


Jesse, Does this make sense?

Thanks,
Ravi

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 setup 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.
>
> 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.
>
> Thanks,
> Ravi
>
> On Tue, May 29, 2012 at 12:47 PM, Jesse Gross <jesse at nicira.com> wrote:
>> On Tue, May 29, 2012 at 12:12 PM, ravi kerur <rkerur at gmail.com> wrote:
>>> Additional changes are needed here esp. in NIC driver(looked into
>>> e1000e driver code from Intel) as it requires handling of new
>>> eth_types. For these changes I probably need to work with you and
>>> Jesse on how best we can incorporate them.
>>
>> At this point, I wouldn't worry about getting drivers to handle MPLS
>> offloading.  What I was talking about before was about correctness,
>> not performance.  Specifically:
>>  1. Sender (say a VM) transmits a TCP packet that uses offloading.
>>  2. OVS inserts a MPLS tag on the packet before sending it on the wire.
>>  3. The NIC needs to be able to parse into the packet but doesn't
>> understand the MPLS tag and doesn't do anything.
>>  4. The packet gets dropped at some point because it's too big or the
>> checksum computation wasn't performed, etc.
>>
>> In order to avoid this situation you need to perform any offloading in
>> software before giving it to the NIC.  This can be done generically
>> though and doesn't require any changes to the driver.  Eventually you
>> could start updating drivers for NICs that do support MPLS but you'll
>> still need the software fallback path for other cards, so the software
>> emulation is a good place to start.



More information about the dev mailing list