![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网卡功能
文章平均质量分 94
wu_xue_zhi
这个作者很懒,什么都没留下…
展开
-
网卡驱动收发包sk_buff相关分析
内核在构造skb的时候,会查找出口网卡上的特性是否有NETIF_F_SG标记,如果没有这个标记,则不会使用frags[MAX_SKB_FRAGS],而是申请一个大的skb data存储数据,这在某些情况下可能效率会比较低。但是也可能申请一个新的skb+data,此时,skb的data中只拷贝14个字节的eth head,buff的剩余部分,作为skb的第一个frags存放在frags[MAX_SKB_FRAGS]中。但是,buff的最小长度为硬件默认的MTU大小,buff最大的大小不超过一个内核页大小。原创 2024-07-26 15:30:28 · 823 阅读 · 0 评论 -
网卡RSS功能
该功能主要是让网络报文,散列的交给多个CPU处理,从而避免单个CPU的负载过大,造成性能瓶颈。其主要流程如下:网卡收到一个网络报文后,根据不同的报文类型,选择不同的报文字段,进行hash计算,算出一个hash值。哪些报文类型要做RSS是可以配置的。(例如只指定ipv4 tcp报文做RSS,其他类型的报文都不做RSS)每一种配置的报文类型,可以指定选择哪些字段做hash计算。(例如,可以指定对于ipv4 tcp报文,只使用tcp的目的端口号做hash)原创 2024-07-12 15:58:29 · 598 阅读 · 0 评论 -
linux内核网卡checksum卸载功能
checksum卸载分为发送和接收两个方向。发送方向是指host主机发送报文,如果网卡不支持checksum卸载,那么需要内核网络协议栈计算报文的checksum,如果报文的数据部分长度比较长,那么这个运算会有一定的CPU开销。如果网卡支持checksum卸载,那么可以将这一部分计算卸载到网卡,由网卡硬件实现。接收方向是指网卡收到报文上送主机处理。如果网卡不支持checksum卸载,那么内核协议栈收到报文后,需要计算报文的checksum,校验报文是否数据失真。原创 2024-07-12 15:35:40 · 794 阅读 · 0 评论