天天看點

協定棧對GSO和TSO,UFO的支援

TSO效率的節省源于對大包隻走一次協定棧,而不是多次.

盡可能晚的推遲分段(segmentation), 最理想的是在網卡驅動裡分段,在網卡驅動裡把大包(super-packet)拆開,組成SG list,或在一塊預先配置設定好的記憶體中重組各段,然後交給網卡。

假設網卡驅動的設定如下,并且網卡也支援這些功能:

dev->features |= NETIF_F_SG | NETIF_F_ALL_CSUM;

dev->features |= NETIF_F_TSO | NETIF_F_UFO | NETIF_F_FRAGLIST;

TCP層裡的 tcp_push_one()中,若真的進行了tso_fragment(sk, skb, limit, mss_now),是個有損協定棧效率的事,但unlikely這個宏的限定,說明真進行tso_fragment()的幾率不是很大,否則就用 likely()了