assembly of packets
Hi, If TSO(tcp segmentation offload ) is enabled then nic card handle segmentation then where is assembly of packets happens ? Is it tcp_rcv_established function ?
On Mon, 03 Jun 2013 14:48:41 +0530, Varun Sharma said:
If TSO(tcp segmentation offload ) is enabled then nic card handle segmentation then where is assembly of packets happens ? Is it tcp_rcv_established function ?
The whole *point* of TSO is so the NIC does all the segmentation reassembly and DMA, and wake the kernel up when all the data is already stashed in buffers fully processed. Incidentally, this is why if you run tcpdump on an interface that has TSO enabled, you'll only see the first 3 handshaking packets and the final FIN packets - the other packets wake up the TCP stack at a point after where tcpdump's tap would have seen the packet.
In my experience, the second paragraph isn't quite true. What you see with TSO is the pre-segmentation "packet", up to 65k. (By this I mean the set of data which is given to the offload hardware to segment.) So you need to make sure that your "-s" value is big enough to see everything. (Speaking as someone who was bitten by bugs in the early versions of TSO.) Craig -----Original Message----- From: kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org [mailto:kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org] On Behalf Of Valdis.Kletnieks@vt.edu Sent: Monday, June 03, 2013 12:03 PM To: Varun Sharma Cc: kernelnewbies@kernelnewbies.org Subject: Re: assembly of packets On Mon, 03 Jun 2013 14:48:41 +0530, Varun Sharma said:
If TSO(tcp segmentation offload ) is enabled then nic card handle segmentation then where is assembly of packets happens ? Is it tcp_rcv_established function ?
The whole *point* of TSO is so the NIC does all the segmentation reassembly and DMA, and wake the kernel up when all the data is already stashed in buffers fully processed. Incidentally, this is why if you run tcpdump on an interface that has TSO enabled, you'll only see the first 3 handshaking packets and the final FIN packets - the other packets wake up the TCP stack at a point after where tcpdump's tap would have seen the packet.
On receving side upto tcp layer skb->len=1480 now where is packet assembled on tcp layer ? or it is directly copies into user space buffer. I am sending len = 10000 in send system call. On Mon, Jun 3, 2013 at 9:45 PM, Craig Jackson <cjackson@ebscohost.com>wrote:
In my experience, the second paragraph isn't quite true. What you see with TSO is the pre-segmentation "packet", up to 65k. (By this I mean the set of data which is given to the offload hardware to segment.) So you need to make sure that your "-s" value is big enough to see everything.
(Speaking as someone who was bitten by bugs in the early versions of TSO.)
Craig
-----Original Message----- From: kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org[mailto: kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org] On Behalf Of Valdis.Kletnieks@vt.edu Sent: Monday, June 03, 2013 12:03 PM To: Varun Sharma Cc: kernelnewbies@kernelnewbies.org Subject: Re: assembly of packets
On Mon, 03 Jun 2013 14:48:41 +0530, Varun Sharma said:
If TSO(tcp segmentation offload ) is enabled then nic card handle segmentation then where is assembly of packets happens ? Is it tcp_rcv_established function ?
The whole *point* of TSO is so the NIC does all the segmentation reassembly and DMA, and wake the kernel up when all the data is already stashed in buffers fully processed.
Incidentally, this is why if you run tcpdump on an interface that has TSO enabled, you'll only see the first 3 handshaking packets and the final FIN packets - the other packets wake up the TCP stack at a point after where tcpdump's tap would have seen the packet.
-----Original Message----- From: Varun Sharma [mailto:vsdssd@gmail.com] Sent: Tuesday, June 04, 2013 2:45 AM To: Craig Jackson; kernelnewbies@kernelnewbies.org; Valdis.Kletnieks@vt.edu Subject: Re: assembly of packets
On receving side upto tcp layer skb->len=1480 now where is packet assembled on tcp layer ? or it is directly copies into user space buffer.
I am sending len = 10000 in send system call.
On Mon, Jun 3, 2013 at 9:45 PM, Craig Jackson <cjackson@ebscohost.com> wrote: In my experience, the second paragraph isn't quite true. What you see with TSO is the pre-segmentation "packet", up to 65k. (By this I mean the set of data which is given to the offload hardware to segment.) So you need to make sure that your "-s" value is big enough to see everything.
(Speaking as someone who was bitten by bugs in the early versions of TSO.)
Craig
-----Original Message----- From: kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org [mailto:kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org] On Behalf Of Valdis.Kletnieks@vt.edu Sent: Monday, June 03, 2013 12:03 PM To: Varun Sharma Cc: kernelnewbies@kernelnewbies.org Subject: Re: assembly of packets
On Mon, 03 Jun 2013 14:48:41 +0530, Varun Sharma said:
If TSO(tcp segmentation offload ) is enabled then nic card handle segmentation then where is assembly of packets happens ? Is it tcp_rcv_established function ?
The whole *point* of TSO is so the NIC does all the segmentation reassembly and DMA, and wake the kernel up when all the data is already stashed in buffers fully processed.
Incidentally, this is why if you run tcpdump on an interface that has TSO enabled, you'll only see the first 3 handshaking packets and the final FIN packets - the other packets wake up the TCP stack at a point after where tcpdump's tap would have seen the packet.
Sorry for top-posting before. It's incredibly hard to get Outlook 2007 to do things right. Varun, I now see we may not have answered the question you have. TSO (TCP Segementation Offload) is associated with sending packets, not receiving them. They are re-assembled at the receiving end in the standard manner. Are you actually thinking of GRO (Generic Receive Offload)? Craig
I see the receiving side also .Packets are not assembled by ip-defrag . now where packets are assembled at transport layer ? if yes then how they are assembled ? On Tue, Jun 4, 2013 at 7:24 PM, Craig Jackson <cjackson@ebscohost.com>wrote:
-----Original Message----- From: Varun Sharma [mailto:vsdssd@gmail.com] Sent: Tuesday, June 04, 2013 2:45 AM To: Craig Jackson; kernelnewbies@kernelnewbies.org; Valdis.Kletnieks@vt.edu Subject: Re: assembly of packets
On receving side upto tcp layer skb->len=1480 now where is packet assembled on tcp layer ? or it is directly copies into user space buffer.
I am sending len = 10000 in send system call.
On Mon, Jun 3, 2013 at 9:45 PM, Craig Jackson <cjackson@ebscohost.com> wrote: In my experience, the second paragraph isn't quite true. What you see with TSO is the pre-segmentation "packet", up to 65k. (By this I mean the set of data which is given to the offload hardware to segment.) So you need to make sure that your "-s" value is big enough to see everything.
(Speaking as someone who was bitten by bugs in the early versions of TSO.)
Craig
-----Original Message----- From: kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org [mailto:kernelnewbies-bounces+cjackson=ebscohost.com@kernelnewbies.org ] On Behalf Of Valdis.Kletnieks@vt.edu Sent: Monday, June 03, 2013 12:03 PM To: Varun Sharma Cc: kernelnewbies@kernelnewbies.org Subject: Re: assembly of packets
On Mon, 03 Jun 2013 14:48:41 +0530, Varun Sharma said:
If TSO(tcp segmentation offload ) is enabled then nic card handle segmentation then where is assembly of packets happens ? Is it tcp_rcv_established function ?
The whole *point* of TSO is so the NIC does all the segmentation reassembly and DMA, and wake the kernel up when all the data is already stashed in buffers fully processed.
Incidentally, this is why if you run tcpdump on an interface that has TSO enabled, you'll only see the first 3 handshaking packets and the final FIN packets - the other packets wake up the TCP stack at a point after where tcpdump's tap would have seen the packet.
Sorry for top-posting before. It's incredibly hard to get Outlook 2007 to do things right.
Varun, I now see we may not have answered the question you have. TSO (TCP Segementation Offload) is associated with sending packets, not receiving them. They are re-assembled at the receiving end in the standard manner.
Are you actually thinking of GRO (Generic Receive Offload)?
Craig
participants (3)
-
Craig Jackson -
Valdis.Kletnieks@vt.edu -
Varun Sharma