一、kni虚拟网卡与物理网卡的对比
相同点:
kni虚拟网卡驱动与物理网卡驱动一样,需要在linux内核申请虚拟网卡设备的struct net结构体,并注册到网络命名空间,交由linux内核net模块进行网卡资源的操作;
其与网卡驱动一样,kni内核模块需要对该其网卡队列分配用于收发包的mbuf内存,要实现虚拟网卡的收发包方法,已经通过ethtool对虚拟网卡进行管理的接口;
不同点:
与物理网卡驱动不同的是,kni虚拟网卡设备是没有物理网卡设备的,其网卡队列不存在物理网卡的收发fifo与之对应,故不存在DMA过程,故其收发包函数不存在dma过程,不需要申请环形缓冲区,其主要的操作为将报文在网卡队列与dpdk之间进行传递;
kni虚拟网卡的收发队列是直接申请的队列结构体,通过将kni虚拟网卡注册到网络命名空间的设备链表上,由软中断函数do_softirq直接访问虚拟网卡收发队列上的skb buf;
二、kni虚拟网卡的实现模型简述
1、kni内核模块在内核注册网卡设备结构体注册到内核网络命名空间;
2、kni内核模块在linux内核创建杂类设备,文件的file_ops定义对kni设备文件到操作,用户态程序可通过打开kni设备文件,通过ioctl向kni设备文件下发ioctl命令实现对kni设备文件的操作。其中最主要的是kni_create方法,该方法用于在内核创建kni虚拟网卡;
3、用户态程序通过打开kni设备文件&#x
标签:kni,网卡,收发,虚拟,内核,模块,设备,dpdk 来源: https://blog.csdn.net/qq_29044159/article/details/119301356
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。