Title: Offloading TCP Segmentation
1Offloading TCP Segmentation
- Using Context Descriptors lets a driver offload
TCP Segmentation as well as checksum
calculations
2What is segmentation?
packet data payload
TCP header
IP header
MAC header
The sender creates an Ethernet packet but its
longer than the LAN allows
so our NIC can be programmed to carve it up
into smaller Ethernet packets
partial payload
TCP header
IP header
MAC header
TCP header
IP header
MAC header
partial payload
TCP header
IP header
MAC header
partial payload
3NICs segmentation parameters
- HDRLEN total length of packet-headers
- PAYLEN total length of data to be sent
- DTALEN length of packet-buffer content
- MSS Maximum Segment Size (w/o hdrs)
- POPTS Packet Options
4Context descriptor (type 0)
63 48
47 40 39 32 31
16 15
8 7 0
IPCSS
IPCSE
IPCSO
TUCSS
TUCSE
TUCSO
PAYLEN
DTYP 0
MSS
TUCMD
STA
HDRLEN
RSV
DEXT1 (Extended Descriptor)
Legend IPCSS (IP CheckSum Start) TUCSS
(TCP/UDP CheckSum Start) IPCSO (IP CheckSum
Offset) TUCSO (TCP/UDP CheckSum Offset) IPCSE
(IP CheckSum Ending) TUCSE (TCP/UDP CheckSum
Ending) PAYLEN (Payload Length) DTYP
(Descriptor Type) TUCMD (TCP/UCP Command) STA
(TCP/UDP Status) HDRLEN (Header Length) MSS
(Maximum Segment Size)
5The TUCMD byte
7 6 5 4
3 2 1 0
IDE
SNAP
DEXT (1)
reserved (0)
RS
TSE
IP
TCP
Legend IDE (Interrupt Delay Enable) SNAP
(Sub-Network Access Protocol) DEXT (Descriptor
Extension) RS (Report Status) TSE
(TCP-Segmentation Enable) IP (Internet
Protocol) TCP (Transport Control Protocol)
always valid valid only when TSE1
6Context descriptor (type 1)
63 48
47 40 39 32 31
16 15
8 7 0
ADDRESS
DTALEN
DTYP 1
VLAN
DCMD
STA
POPTS
RSV
DEXT1 (Extended Descriptor)
Legend DTALEN (Data Length) DTYP (Descriptor
Type) DCMD (Descriptor Command) STA (Status)
RSV (Reserved) POPTS (Packet Options) VLAN
(VLAN tag)
7The DCMD byte
7 6 5 4
3 2 1 0
IDE
VLE
DEXT (1)
reserved (0)
RS
TSE
IFCS
EOP
Legend IDE (Interrupt Delay Enable) VLE
(VLAN Enable) DEXT (Descriptor Extension) RS
(Report Status) TSE (TCP-Segmentation Enable)
IFCS (Insert Frame CheckSum) EOP (End Of
Packet))
always valid valid only when EOP1
8Context descriptor-pairs
- The sender accompanies each packet with a Type 0
Context Descriptor and with (one or more ) Type 1
Context Descriptor(s)
63 48
47 40 39 32 31
16 15
8 7 0
IPCSS
IPCSE
IPCSO
TUCSS
TUCSE
TUCSO
PAYLEN
DTYP 0
MSS
TUCMD
STA
HDRLEN
RSV
BASE ADDRESS
DTALEN
DTYP 1
VLAN
DCMD
STA
POPTS
RSV
9Internet Protocol Header
Leave these fields equal to zero
10Transport Control Protocol Header
Setup this field with ones-complement sum of
words from partial pseudo-header
11The partial pseudo-header
31
0
Source IP-address
Destination IP-address
ZERO
ZERO
protocol ID
1264-bit Statistical Counters
- The NICs statistical counters are intended to
operate in a clear-upon-read manner, but this
requires reading the entire register - A few of the NICs statistical counters are
64-bit registers (even though a CPU may have to
access them 32-bits at a time) - Examples TOTL/TOTH, TORL/TORH
- You must be sure to access both halves!