用户态到内核态的数据报文处理方法技术

技术编号:9173602 阅读:213 留言:0更新日期:2013-09-19 23:00
本发明专利技术公开了一种用户态到内核态的数据报文处理方法。所述方法包括:S1、通过TUN/TAP驱动的方式在内核态创建虚拟网卡;S2、在用户态进行网卡驱动加载,并将用户态的网络接口信息发送给所述虚拟网卡;S3、所述虚拟网卡根据用户态的网络接口信息创建虚拟接口,所述虚拟接口的数量及状态与用户态的网络接口保持一致;S4、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡将所述需要内核态处理的报文发送给内核态进行处理。所述方法能够消除内核网卡驱动加载造成的性能损耗,同时使内核态能够感知实际物理网络及网络接口状态。

【技术实现步骤摘要】
用户态到内核态的数据报文处理方法
本专利技术涉及报文处理
,特别涉及一种用户态到内核态的数据报文处理方法。
技术介绍
主机在收发和处理网络报文时,通常采用两种方式:一种是由内核加载网卡驱动,进行报文收发,通过数据拷贝送到用户态进程进行业务处理;另一种是由用户态加载网卡驱动,进行报文收发,对于需要转发到内核处理的主机报文,通过socket创建特殊套接字或通过proc文件系统创建文件实现与内核的数据交互。第一种方式的缺点在于:内核加载网卡驱动进行报文收发,在万兆网卡大流量的冲击下会引发大量中断,消耗一定的CPU性能(特别是X86体系架构),同时Linux操作系统的内核态到用户态的数据拷贝也会造成系统性能的损耗;第二种方式的缺点在于:用户态加载网卡驱动进行报文收发,虽然降低了性能损耗,但是针对一些主机报文业务处理(例如Linux内核的PPPoE、DHCP等)需要感知实际物理网络及网络接口状态,而内核没有网络接口可感知操作,此时就会出现问题,同时还涉及用户态报文PKB与内核SKB格式转换问题。
技术实现思路
(一)所要解决的技术问题本专利技术的目的在于提供一种用户态到内核态的数据报文处理方法,以降低网卡驱动加载造成的性能损耗,同时使内核态能够感知实际物理网络及网络接口状态。(二)技术方案为了解决上述技术问题,本专利技术提出了一种用户态到内核态的数据报文处理方法,所述方法包括以下步骤:S1、通过TUN/TAP驱动的方式在内核态创建虚拟网卡;S2、在用户态进行网卡驱动加载,并将用户态的网络接口信息发送给所述虚拟网卡;S3、所述虚拟网卡根据用户态的网络接口信息创建虚拟接口,所述虚拟接口的数量及状态与用户态的网络接口保持一致;S4、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡将所述需要内核态处理的报文发送给内核态进行处理。可选的,步骤S4之后还包括步骤:S5、内核态将处理后得到的待发送报文发送给所述虚拟网卡,所述虚拟网卡将所述待发送报文发送给用户态的网络接口进行发送。可选的,步骤S3进一步包括:在所述虚拟接口中挂载所述虚拟网卡的报文处理函数。可选的,步骤S4具体包括:当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡查找出所述需要内核态处理的报文对应的虚拟接口,并调用该虚拟接口中挂载的所述虚拟网卡的报文处理函数,所述虚拟网卡的报文处理函数将所述需要内核态处理的报文发送给内核态进行处理。可选的,步骤S4之前还包括步骤:S0、在用户态创建报文链表A和报文链表B,其中,报文链表A用于对所述需要内核态处理的报文进行缓存,报文链表B用于对所述待发送报文进行缓存。可选的,步骤S4具体包括:S401、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文放入报文链表A;S402、所述虚拟网卡从报文链表A中提取所述需要内核态处理的报文并将其发送给内核态进行处理。可选的,步骤S5具体包括:S501、内核态将处理后得到的待发送报文发送给所述虚拟网卡,所述虚拟网卡将所述待发送报文放入报文链表B;S502、用户态的网络接口从报文链表B中提取所述待发送报文并将其进行发送。可选的,步骤S402中,所述虚拟网卡通过write函数从报文链表A中提取所述需要内核态处理的报文。可选的,步骤S501中,所述虚拟网卡通过read函数将所述待发送报文放入报文链表B。可选的,步骤S1具体包括:调用open函数以设备文件的形式在内核态创建虚拟网卡,并为所述虚拟网卡配置默认IP和路由。(三)有益效果与现有技术相比,本专利技术的技术方案具有如下优点:本专利技术的技术方案实现了网卡驱动加载及收发报文在用户态进行,消除了内核态网卡驱动中断及数据拷贝造成的性能损耗;同时,注册维护的一套网络接口和一套虚拟接口,可分别满足用户态、内核态对物理网络及网络接口状态的感知需求,且无需考虑用户态报文PKB与内核态SKB格式转换的问题。附图说明图1是本专利技术提出的用户态到内核态的数据报文处理方法的基本流程图。图2是本专利技术一种具体实施方式中虚拟网卡的功能示意图。图3是本专利技术一种具体实施方式中用户态与内核态的数据交互过程示意图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。本专利技术提出了一种用户态到内核态的数据报文处理方法,如图1所示,所述方法包括以下步骤:S1、通过TUN/TAP驱动的方式在内核态创建虚拟网卡;S2、在用户态进行网卡驱动加载,并将用户态的网络接口信息发送给所述虚拟网卡;S3、所述虚拟网卡根据用户态的网络接口信息创建虚拟接口,所述虚拟接口的数量及状态与用户态的网络接口保持一致;S4、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡将所述需要内核态处理的报文发送给内核态进行处理。步骤S4之后还包括步骤:S5、内核态将处理后得到的待发送报文发送给所述虚拟网卡,所述虚拟网卡将所述待发送报文发送给用户态的网络接口进行发送。优选的,步骤S3进一步包括:在所述虚拟接口中挂载所述虚拟网卡的报文处理函数。优选的,步骤S4具体包括:当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡查找出所述需要内核态处理的报文对应的虚拟接口,并调用该虚拟接口中挂载的所述虚拟网卡的报文处理函数,所述虚拟网卡的报文处理函数将所述需要内核态处理的报文发送给内核态进行处理。优选的,步骤S4之前还包括步骤:S0、在用户态创建报文链表A和报文链表B,其中,报文链表A用于对所述需要内核态处理的报文进行缓存,报文链表B用于对所述待发送报文进行缓存。优选的,步骤S4具体包括:S401、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文放入报文链表A;S402、所述虚拟网卡从报文链表A中提取所述需要内核态处理的报文并将其发送给内核态进行处理。优选的,步骤S5具体包括:S501、内核态将处理后得到的待发送报文发送给所述虚拟网卡,所述虚拟网卡将所述待发送报文放入报文链表B;S502、用户态的网络接口从报文链表B中提取所述待发送报文并将其进行发送。在本专利技术的技术方案中,网卡驱动加载及收发报文部署在用户态,由用户态维护独立的网络接口。对于需要内核处理的主机报文,使用设备文件的方式,通过TUN/TAP驱动实现用户态与内核态的数据交互。在内核初始化时配置TUN/TAP虚拟网卡可用,同时注册一套虚拟接口,虚拟接口的个数及状态与用户态网络接口保持一致,且每个虚拟接口中均挂载TUN/TAP虚拟网卡的报文处理函数。如图2所示,这里的虚拟网卡Tun0相当于一个连接用户态和内核态的通道。如图3所示,首先调用open函数以设备文件的形式在内核态创建虚拟网卡Tun0,并为其配置默认IP、route。同时,在用户态创建kernel_to_user_queue和user_to_kernel_queue两个报文链表,两个报文链表与实际物理网卡的收发队列相对应。对于物理网卡收到的需要内核处理的报文,首先将该报文入队user_to_kernel_queue,然后出队通过wr本文档来自技高网...
用户态到内核态的数据报文处理方法

【技术保护点】
一种用户态到内核态的数据报文处理方法,其特征在于,所述方法包括以下步骤:S1、通过TUN/TAP驱动的方式在内核态创建虚拟网卡;S2、在用户态进行网卡驱动加载,并将用户态的网络接口信息发送给所述虚拟网卡;S3、所述虚拟网卡根据用户态的网络接口信息创建虚拟接口,所述虚拟接口的数量及状态与用户态的网络接口保持一致;S4、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡将所述需要内核态处理的报文发送给内核态进行处理。

【技术特征摘要】
1.一种用户态到内核态的数据报文处理方法,其特征在于,所述方法包括以下步骤:S1、通过TUN/TAP驱动的方式在内核态创建虚拟网卡;S2、在用户态进行网卡驱动加载,并将用户态的网络接口信息发送给所述虚拟网卡;S3、所述虚拟网卡根据用户态的网络接口信息创建虚拟接口,所述虚拟接口的数量及状态与用户态的网络接口保持一致;S4、当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡将所述需要内核态处理的报文发送给内核态进行处理,步骤S3进一步包括:在所述虚拟接口中挂载所述虚拟网卡的报文处理函数,步骤S4具体包括:当接收到需要内核态处理的报文时,用户态的网络接口将所述需要内核态处理的报文发送给所述虚拟网卡,所述虚拟网卡查找出所述需要内核态处理的报文对应的虚拟接口,并调用该虚拟接口中挂载的所述虚拟网卡的报文处理函数,所述虚拟网卡的报文处理函数将所述需要内核态处理的报文发送给内核态进行处理。2.根据权利要求1所述的方法,其特征在于,步骤S4之后还包括步骤:S5、内核态将处理后得到的待发送报文发送给所述虚拟网卡,所述虚拟网卡将所述待发送报文发送给用户态的网络接口进行发送。3.根据权利要求2所述的方法,其特征在...

【专利技术属性】
技术研发人员:高福亮
申请(专利权)人:汉柏科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1