1 / 12

Offloading TCP Segmentation

Offloading TCP Segmentation. Using Context Descriptors lets a driver offload ‘TCP Segmentation’ as well as checksum calculations. What is ‘segmentation’?. MAC header. IP header. TCP header. packet ‘data’ payload. The sender creates an Ethernet packet – but it’s longer than the LAN allows.

alaric
Download Presentation

Offloading TCP Segmentation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Offloading TCP Segmentation Using Context Descriptors lets a driver offload ‘TCP Segmentation’ as well as checksum calculations

  2. What is ‘segmentation’? MAC header IP header TCP header packet ‘data’ payload The sender creates an Ethernet packet – but it’s longer than the LAN allows – so our NIC can be programmed to ‘carve it up’ into smaller Ethernet packets MAC header IP header TCP header partial payload MAC header IP header TCP header partial payload MAC header IP header TCP header partial payload

  3. NIC’s 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

  4. Context descriptor (type 0) 63 48 47 40 39 32 31 16 15 8 7 0 TUCSE TUCSO TUCSS IPCSE IPCSO IPCSS MSS HDRLEN RSV STA TUCMD DTYP =0 PAYLEN DEXT=1 (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)

  5. The 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 TSE=1

  6. Context descriptor (type 1) 63 48 47 40 39 32 31 16 15 8 7 0 ADDRESS VLAN POPTS RSV STA DCMD DTYP =1 DTALEN DEXT=1 (Extended Descriptor) Legend: DTALEN (Data Length) DTYP (Descriptor Type) DCMD (Descriptor Command) STA (Status) RSV (Reserved) POPTS (Packet Options) VLAN (VLAN tag)

  7. The 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 EOP=1

  8. Context 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 TUCSE TUCSO TUCSS IPCSE IPCSO IPCSS MSS HDRLEN RSV STA TUCMD DTYP =0 PAYLEN BASE ADDRESS VLAN POPTS RSV STA DCMD DTYP =1 DTALEN

  9. Internet Protocol Header Leave these fields equal to zero

  10. Transport Control Protocol Header Setup this field with ones-complement sum of words from ‘partial’ pseudo-header

  11. The ‘partial’ pseudo-header 31 0 Source IP-address Destination IP-address ZERO protocol ID ZERO

  12. 64-bit Statistical Counters • The NIC’s statistical counters are intended to operate in a ‘clear-upon-read’ manner, but this requires reading the entire register • A few of the NIC’s 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!

More Related