FWIW, I recently hit a bug during a demo that I would have caught but for lack 
of padding by pg in UT. In my case I had tested full spread of packet sizes 
using the UT framework, but hadn't done it thoroughly enough with real 
interfaces and so got bit by b->current_length > iplen with small ip packets.

Unless there are real world scenarios where the device pg is emulating returns 
< 60b frames I think it would be good just to fix pg to pad. If code breaks 
based on this, wouldn't that code also break when used in production? :)

Thanks,
Chris.

> On Oct 29, 2019, at 9:01 AM, Paul Vinciguerra <pvi...@vinciconsulting.com> 
> wrote:
> 
> Hi Ben.
> 
> Isn't it amazing how timing is everything.  Would you believe this issue came 
> up in discussion yesterday? I was suggesting the use of alternate interfaces, 
> such as over tap/veth/af_packet over pg in tests.  
> 
> If the behavior is changed, it should probably be done in a backward 
> compatible way (maybe an allow-runts flag?).  Would it be enough for vpp to 
> log a counter when it encounters an improperly padded packet?  The tests 
> could then identify the condition and act accordingly.
> 
> It was a topic of discussion because I too am seeing issues and saw a comment 
> about pg not being an ethernet device.  I am seeing/working through the cdp 
> and the dhcp_client tests passing, but failing and/or erroring in real life.  
>  
> 
> Paul
> 
> 
> On Tue, Oct 29, 2019 at 6:40 AM Benoit Ganne (bganne) via Lists.Fd.Io 
> <bganne=cisco....@lists.fd.io> wrote:
> Hi all,
> 
> While working on Address Sanitizer, I realized pg pcap replay was not padding 
> runt frames to 60-bytes before handing them to ethernet-input. With a real 
> NIC, we should never get packets smaller than 60-bytes.
> This means we process very short Ethernet frames in make test. It is very 
> common, because scapy does not pad either so any packet we build with scapy 
> will only contains the bytes we define (eg. our process for learning remote 
> hosts MAC address in make test is generating only Ethernet headers - 
> 14-bytes).
> This cause 2 issues :
>  1) we do not catch bugs where we check that payload len advertised by 
> protocols == received packet payload length. This is not very common but it 
> happens
>  2) it makes make test non-deterministic: there is a lot of places (esp. in 
> L2 code) where we assume it is safe to load & test values in the 1st 
> 60-bytes. The assumption is correct but with current pg behavior it means we 
> branch based on uninitialized values, so 2 identical make test runs could 
> trigger different codepath
> 
> Does anyone see a drawback to change pg to pad pcap replay frames with 0 up 
> to 60-bytes?
> 
> Best
> ben
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> 
> View/Reply Online (#14375): https://lists.fd.io/g/vpp-dev/message/14375
> Mute This Topic: https://lists.fd.io/mt/39414067/1594641
> Group Owner: vpp-dev+ow...@lists.fd.io
> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [pvi...@vinciconsulting.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> 
> View/Reply Online (#14376): https://lists.fd.io/g/vpp-dev/message/14376
> Mute This Topic: https://lists.fd.io/mt/39414067/1826170
> Group Owner: vpp-dev+ow...@lists.fd.io
> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [cho...@chopps.org]
> -=-=-=-=-=-=-=-=-=-=-=-

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#14377): https://lists.fd.io/g/vpp-dev/message/14377
Mute This Topic: https://lists.fd.io/mt/39414067/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to