Saturday, September 5, 2009

tcp large send

1. tcp can send segment size larger than (MTU-tcpip hdr = MSS)
2. NIC driver does resegmentation before do hard_xmit()
3. reduce host function cals of host cpu.
-init phase: driver will advertise to DLPI its tcp segmentation
capability by setting DL_xx_DRV_IPV4TCPEG bit
-dlpi will inform ip module in dlpi_ioc_driver_options ioctl()
-ip layer query driver by sending ioctl: dl_xx_get_tcpsegipv4_info
typedef struct dl_xx_get_tcpseg_info {
u32 dl_tcpss_version;
u32 dl_tcpss_vmtu; <---max size for nix (tunable).
u32 dl_tcpss_min;
u32 dl_tcpss_flags;
} dl_xx_get_tcpsg_info_t;

enum dl_xx_tcpseg_flags {
ip_options = 1,
tcp_options = 2,
header_buffer_alloc = 4
} dl_xx_tcpseg_flags_t;

--nic must not modift/reorder any received packets.
--nic will copy tcp/ip options to each packets. nic must not increment time stamp.
--nic must always break into mss size packets.
-----------------------------------------
any changes from ip layer to driver layer
-----------------------------------------
ip header:
total length:
identification #
ip checksum()
tcp headr
seq # (payload length)
tcp checksum
flags (FIN/PSH)

cko_info_t {};
um

No comments:

Post a Comment