- 博客(8)
- 收藏
- 关注
原创 网卡驱动收发包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
1573
原创 网卡RSS功能
该功能主要是让网络报文,散列的交给多个CPU处理,从而避免单个CPU的负载过大,造成性能瓶颈。其主要流程如下:网卡收到一个网络报文后,根据不同的报文类型,选择不同的报文字段,进行hash计算,算出一个hash值。哪些报文类型要做RSS是可以配置的。(例如只指定ipv4 tcp报文做RSS,其他类型的报文都不做RSS)每一种配置的报文类型,可以指定选择哪些字段做hash计算。(例如,可以指定对于ipv4 tcp报文,只使用tcp的目的端口号做hash)
2024-07-12 15:58:29
766
原创 linux内核网卡checksum卸载功能
checksum卸载分为发送和接收两个方向。发送方向是指host主机发送报文,如果网卡不支持checksum卸载,那么需要内核网络协议栈计算报文的checksum,如果报文的数据部分长度比较长,那么这个运算会有一定的CPU开销。如果网卡支持checksum卸载,那么可以将这一部分计算卸载到网卡,由网卡硬件实现。接收方向是指网卡收到报文上送主机处理。如果网卡不支持checksum卸载,那么内核协议栈收到报文后,需要计算报文的checksum,校验报文是否数据失真。
2024-07-12 15:35:40
1585
原创 NVMEoF 内核initiator端实现源码分析
这个实现是在nvme-cli模块内部实现的,跟一个discovery控制器连接,获取可以连接的所有的nvme子系统的信息,可能会有多个。如下的示例中,只有一个nvme subsystem可以连接:nqn.2016-06.io.spdk:cnode1。具体命令如下:portid: 0。
2024-06-14 13:58:47
592
1
原创 virtio-net的前后端分析
注:MSI-X表放在一个单独一个BAR空间中,设置为non-prefetchable,因为里面的pending为是读清的操作,不可以设置为prefetchable(从目前的BSC卡的实现来看,由于virtio设备用不到msix的pending,因此可以设置为prefetchable)。其他的virtio配置寄存器放在另外一个BAR空间中,设置为prefetchable,在一些pcie的硬件架构下,可以提高访问的性能。驱动通过读写CommonCfg中的feature相关的字段来协商特性。
2024-05-27 17:15:04
654
原创 DPDK内存管理分析
DPDK的内存管理框架,从底层往上依次为:大页系统。获取系统的大页信息。包括各种大页类型,及其可用大页的数目。获取大页文件系统mount的目录(可以参数指定,--huge-dir ),将要创建的大页文件的前缀(可以参数指定,--file-prefix)每个大页文件系统指定的页的大小是固定的,因此不同页大小的大页,mount的目录是不一样的。
2024-05-20 11:28:34
1782
原创 tcp、dup的socket发包支持零拷贝
要实现零拷贝,那么sendbuf需要在实际发出去之后,才能释放,这会有很大延迟,尤其是tcp这种需要等待确认,且有可能重传的情况。但如果send操作一直阻塞住,会很大程度影响用户发送数据的吞吐量。对于用户编程来说,需要做一些改动,即调用了send操作后,会很快返回,但是其sendbuf不能立即释放,需要等待通知后,才能释放。
2024-03-28 11:15:56
363
1
原创 tcp offload的两个方案
1、SMC Shared Memory Communication系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一) - 知乎共享内存通信SMC的优势、架构、应用场景以及如何使用SMC_云服务器 ECS(ECS)-阿里云帮助中心2、SocksDirect https://www.microsoft.com/en-us/research/uploads/prod/2019/08/p90-li.pdfGitHub - bojieli/SocksDirect: SocksDirect code re
2024-03-26 11:02:44
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人