Thread (128 messages) 128 messages, 10 authors, 2017-07-10

Re: [PATCH v5 2/3] lib/gro: add TCP/IPv4 GRO support

From: Tan, Jianfeng <hidden>
Date: 2017-06-22 09:35:26

Hi Jiayu,
-----Original Message-----
From: Hu, Jiayu
Sent: Thursday, June 22, 2017 4:18 PM
To: Tan, Jianfeng
Cc: dev@dpdk.org; Ananyev, Konstantin; yliu@fridaylinux.org; Wiles, Keith;
Bie, Tiwei; Yao, Lei A
Subject: Re: [PATCH v5 2/3] lib/gro: add TCP/IPv4 GRO support

On Mon, Jun 19, 2017 at 11:43:20PM +0800, Tan, Jianfeng wrote:
quoted

On 6/18/2017 3:21 PM, Jiayu Hu wrote:
quoted
Each element in the flow array records the information of one flow,
which includes two parts:
- key: the criteria of the same flow. If packets have the same key
     value, they belong to the same flow.
- start_index: the index of the first incoming packet of this flow in
     the item array. With start_index, we can locate the first incoming
     packet of this flow.
Each element in the item array records one packet information. It mainly
includes two parts:
- pkt: packet address
- next_pkt_index: index of the next packet of the same flow in the item
     array. All packets of the same flow are chained by next_pkt_index.
     With next_pkt_index, we can locate all packets of the same flow
     one by one.

To process an incoming packet, we need three steps:
a. check if the packet should be processed. Packets with the following
     properties won't be processed:
	- packets without data;
	- packets with wrong checksums;
Why do we care to check this kind of error? Can we just suppose the
applications have already dropped the packets with wrong cksum?
quoted
	- fragmented packets.
IP fragmented? I don't think we need to check it here either. It's the
application's responsibility to call librte_ip_frag firstly to reassemble
IP-fragmented packets, and then call this gro library to merge TCP packets.
And this procedure should be shown in an example for other users to refer.
If we leave this check to applications, they have to call librte_ip_frag
first, then call GRO library. If they call GRO library first, error
happens. But if GRO checks if the packet is fragmented, no error happens.
IMO, it's more flexible. Besides, for GRO library, to check if the packet
is fragmented is very simple. Just to check if DF bit is set is enough.
So I still think GRO library need to check it.
I would expect ip fragment is also a gro engine (might be two for ipv4 and ipv6).
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help