netmap over virtio giving packets with extra 12 bytes

Adrian Chadd adrian at freebsd.org
Mon Jan 5 16:33:19 UTC 2015


... surely virtio should be skipping over those bytes in the netmap rx
side before handing them up?

(It won't be the only hardware that puts the RX descriptor status in
the RX frame itself..)



-adrian

On 5 January 2015 at 04:19, Luigi Rizzo <rizzo at iet.unipi.it> wrote:
> What you see is a virtio issue.
>
> virtio prepends a 10 or 12-byte "virtio header"
> to all packets, which is used to define what sort
> of NIC accelerations (checksum, tso etc.) are
> expected on the link.
>
> I do not remember if there is a way in qemu-kvm to
> remove the header. Maybe Vincenzo (in Cc) remembers.
>
> cheers
> luigi
>
> On Mon, Jan 5, 2015 at 6:54 AM, Avinash Sridharan <
> avinash.sridharan at gmail.com> wrote:
>
>> I am using netmap with the click modular router, running the click-modular
>> router in user space. A while back I was using this combination with the
>> e1000 device driver, with a slightly older netmap code-base.
>>
>> Recently I updated my netmap code base and am trying to use the
>> click-modular router with netmap over a virtio-net device driver (over
>> KVM). With this combination, though I was able to receive packets I was
>> unable to interpret any packets coming from the FromDevice element.
>>
>> To debug this issue (and to negate any changes I made to the click-modular
>> router), I ran the pkt-gen application with the "dump payload" option:
>>
>> sudo ~/pkt-gen -i eth1 -f rx -X
>>
>> This showed that packets are being received correctly from the
>> netmap-enabled interface, but there are an extra "12" bytes appended to the
>> packet.
>>
>> 381.088570 main_thread [1446] 1 pps (1 pkts in 1001088 usec)
>>
>> ring 0x7f133bca6000 cur     1 [buf    516 flags 0x0000 len    72]
>>
>>     0: 00 00 00 00 00 00 00 00 00 00 01 00 01 80 c2 00 ................ <<
>> extra 12 bytes
>>
>>    16: 00 00 40 16 7e 5b 50 f0 00 26 42 42 03 00 00 00 .. at .~[P..&BB....
>>
>>    32: 00 00 80 00 40 16 7e 5b 50 f0 00 00 00 00 80 00 .... at .~[P.......
>>
>>    48: 40 16 7e 5b 50 f0 80 01 00 00 14 00 02 00 00 00 @.~[P...........
>>
>>    64: 00 00 00 00 bc 9b f6 74
>>
>>
>> As we can see, the above is an STP BPDU, and there are 12 leading bytes in
>> the payload.
>>
>>
>> The extra leading bytes screw up the packet interpretation.
>>
>>
>> So is this is an artifact of the virtio-net driver or has something
>> changed in the netmap device driver?
>>
>>
>> Thanks,
>>
>> Avinash
>>
>
>
>
> --
> -----------------------------------------+-------------------------------
>  Prof. Luigi RIZZO, rizzo at iet.unipi.it  . Dip. di Ing. dell'Informazione
>  http://www.iet.unipi.it/~luigi/        . Universita` di Pisa
>  TEL      +39-050-2211611               . via Diotisalvi 2
>  Mobile   +39-338-6809875               . 56122 PISA (Italy)
> -----------------------------------------+-------------------------------
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"


More information about the freebsd-net mailing list