一种路由报文从网卡经内核到路由模块的传输方法技术

技术编号:33652029 阅读:60 留言:0更新日期:2022-06-02 20:30
本发明专利技术提供了一种路由报文从网卡经内核到路由模块的传输方法,包括如下步骤:当VLAN配置IP时,创建对应的TAP,这时在Linux设备文件目录下会生成一个对应的char设备;当一个TAP设备被创建时,在Linux设备文件目录下将会生成一个对应char设备,用户程序可以像打开普通文件一样打开这个文件进行读写;当交换芯片SDK收到路由报文时,调用write()函数将报文写入TAP文件;当路由模块有报文经过协议栈发送时,调用read()函数向内核查询TAP设备上是否有需要被发送出去的数据。本发明专利技术通过使用TAP在SDK驱动(用户态)与内核协议栈进行报文交互的,仅关注用户态,扩展性强;本发明专利技术降低了编程复杂度,使用程序员专注于用户态,增强了代码可维护性、扩展性。扩展性。扩展性。

【技术实现步骤摘要】
一种路由报文从网卡经内核到路由模块的传输方法


[0001]本专利技术涉及路由报文在路由(或三层交换机)内部的传输方法,尤其是涉及一种路由报文从网卡经内核到路由模块的传输方法。

技术介绍

[0002]在传统意义的三层设备中,每个VLAN对应一个IP网段,它们可以配置IP地址形成路由接口。当vlan配置ip时,会相应地在linux内核创建网络设备(net_device)。当收到路由报文时,判断目的ip是否是该vlan,如果是则将报文送给该网络设备,再将报文传递到内核中的网络协议栈。报文经过协议栈的处理,最终传送给路由模块(ospf、rip、bgp)。网络报文的发送与之相反,路由模块通过系统调用(socket)将数据送入网络协议栈,最后到达对应的VLAN的网络设备(net_device),然后调度驱动程序使其将报文传送给网络设备,从而发送出去。当存在多个三层vlan时,会导致创建多个网络设备,编码涉及内核态和用户态,难度大,扩展性差。
[0003]公开于该
技术介绍
部分的信息仅仅旨在加深对本专利技术的总体
技术介绍
的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。

技术实现思路

[0004]本专利技术的目的在于提供一种路由报文从网卡经内核到路由模块的传输方法,以解决现有技术中存在的问题。
[0005]为了实现上述目的,本专利技术采用以下技术方案:
[0006]本专利技术提供一种路由报文从网卡经内核到路由模块的传输方法,包括如下步骤:
[0007]当VLAN配置IP时,创建对应的TAP,这时在Linux设备文件目录下会生成一个对应的char设备;
[0008]当一个TAP设备被创建时,在Linux设备文件目录下将会生成一个对应char设备,用户程序可以像打开普通文件一样打开这个文件进行读写;
[0009]当交换芯片SDK收到路由报文时,调用write()函数将报文写入TAP文件,此时对于Linux网络层来说,相当于TAP设备收到了一包数据,请求内核接受它,如同普通的物理网卡从外界收到一包数据一样,再经过内核协议栈到路由模块;
[0010]当路由模块有报文经过协议栈发送时,调用read()函数向内核查询TAP设备上是否有需要被发送出去的数据,有的话取出调用通过SDK发包接口发送报文。
[0011]采用上述技术方案,本专利技术具有如下有益效果:
[0012]本专利技术通过使用TAP在SDK驱动(用户态)与内核协议栈进行报文交互的,仅关注用户态,扩展性强;本专利技术降低了编程复杂度,使用程序员专注于用户态,增强了代码可维护性、扩展性。
附图说明
[0013]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0014]图1为本专利技术路由报文从网卡经内核到路由模块的传输方法的流程图;
[0015]图2为本专利技术TSN网络各个设备节点配置流程图。
具体实施方式
[0016]下面将结合附图对本专利技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0017]以下结合附图对本专利技术的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本专利技术,并不用于限制本专利技术。
[0018]结合图1所示,本实施例提供一种路由报文从网卡经内核到路由模块的传输方法,包括如下步骤:
[0019]在上图中,当VLAN配置IP时,创建对应的TAP,这时在Linux设备文件目录下会生成一个对应的char设备。
[0020]当备一个TAP设被创建时,在Linux设备文件目录下将会生成一个对应char设备,用户程序可以像打开普通文件一样打开这个文件进行读写。
[0021]当交换芯片SDK收到路由报文时,调用write()函数将报文写入TAP文件,此时对于Linux网络层来说,相当于TAP设备收到了一包数据,请求内核接受它,如同普通的物理网卡从外界收到一包数据一样,再经过内核协议栈到路由模块。
[0022]当路由模块有报文经过协议栈发送时,调用read()函数向内核查询TAP设备上是否有需要被发送出去的数据,有的话取出调用通过SDK发包接口发送报文。
[0023]通过上述方案可知,通过使用TAP在SDK驱动(用户态)与内核协议栈进行报文交互的,仅关注用户态,扩展性强。
[0024]结合图2所示,TSN网络各个设备节点主要配置:
[0025]配置VLAN IP时,创建TAP虚拟设备;
[0026]开启TAP任务,主要处理各个TAP虚拟设备的收发报文:
[0027]当从SDK收包后,判断是哪个TAP虚拟设备,通过写对应的char设备向内核写入报文;
[0028]轮询各个TAP设备上是否有内核来的报文,如果有调用SDK发包接口发送出去。
[0029]最后应说明的是:以上各实施例仅用以说明本专利技术的技术方案,而非对其限制;尽管参照前述各实施例对本专利技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本专利技术各实施例技术方案的范围。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种路由报文从网卡经内核到路由模块的传输方法,其特征在于,包括如下步骤:当VLAN配置IP时,创建对应的TAP,这时在Linux设备文件目录下会生成一个对应的char设备;当一个TAP设备被创建时,在Linux设备文件目录下将会生成一个对应char设备,用户程序可以像打开普通文件一样打开这个文件进行读写;当交换芯片SDK收到路由报文时,调用...

【专利技术属性】
技术研发人员:刘双杨国文
申请(专利权)人:北京卓越信通电子股份有限公司
类型:发明
国别省市:

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

1