Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86675
  • 博文数量: 14
  • 博客积分: 1708
  • 博客等级: 上尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-27 09:29
文章分类

全部博文(14)

文章存档

2011年(1)

2010年(13)

分类:

2010-07-23 16:50:34

Linux: TCP Segmentation Offload (TSO)

Scott Feldman announced that with the release of development kernel 2.5.33, the e1000 driver now supports TCP Segmentation Offloading (TSO), offering a significant boost in two-way transfer rates. (In the provided benchmark, send only throughput did not increase as the wire's physicial limitation had already been reached.)

TCP Segmentation Offload (or TCP Large Send) is when buffer's much larger than the supported maximum transmission unit (MTU) of a given medium are passed through the bus to the network interface card. The work of dividing the much larger packets into smaller packets is thus offloaded to the NIC. More specifically, the e1000 driver is passing 64k packets to the network card, which then divides these into proper MTU-sized 1500 byte packets.

Alexey Kuznetsov added TSO support into the stack, noting that as of yet, "the implementation in tcp is still at [the] level of a toy". Be that as it may, it's a good start, and before long other TSO capable devices will likely also be supported.

You're confusing number of packets with throughput. Cut the wire, and you

can't tell the difference with or without TSO. It's the same amount of data

on the wire. As David pointed out, the savings comes in how much data is

DMA'ed across the bus and how much the CPU is unburdened by the segmentation

task. A 64K TSO would be one pseudo header and the rest payload. Without

TSO you would add ~40 more headers. That's the savings across the bus.

阅读(1204) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~