Hi Stephen,

Thank you for immediate response.


When PACKET_FANOUT_FLAG_DEFRAG flag is removed in AF_PACKET mode, IP fragment 
packets cannot be reassembled. That is what we expected or OVS expected.


The file drivers/net/af_packet/rte_net_af_packet.c +770
#if defined(PACKET_FANOUT) fanout_arg = (getpid() ^ (*internals)->if_index) & 
0xffff; fanout_arg |= (PACKET_FANOUT_HASH | PACKET_FANOUT_FLAG_DEFRAG) << 16; 
==> fanout_arg |= (PACKET_FANOUT_HASH) << 16; #if 
defined(PACKET_FANOUT_FLAG_ROLLOVER) fanout_arg |= PACKET_FANOUT_FLAG_ROLLOVER 
<< 16; #endif #endif


Best regards,


Matthew














At 2024-01-09 00:42:32, "Stephen Hemminger" <step...@networkplumber.org> wrote:
>On Mon, 8 Jan 2024 19:07:20 +0800 (CST)
>钟 <gdsgsx2...@163.com> wrote:
>
>> Hi All,
>> 
>> 
>> Recently I debug ovs-dpdk with AF_PACKET mode.  When IP fragment packets are 
>> received via DPDK, the IP fragment packets are reassembled by DPDK. After 
>> reassembly, the packet length is over 1518. They are discarded by OVS 
>> because of oversize packets.
>> 
>> 
>> I don't understandy why  PACKET_FLAG_DEFRAG is set for AF_PACKET mode.
>> 
>> 
>
>Not sure, but it looks like the af_packet wants to hash packets for fanout.
>Hashin of fragments won't work correctly, and packet will arrive on different 
>queues if fragmented.

Reply via email to