在二层单板上实现三层通信的方法及装置的制作方法

文档序号:7857372阅读:238来源:国知局
专利名称:在二层单板上实现三层通信的方法及装置的制作方法
技术领域
本发明涉及通讯技术领域,尤其涉及ー种在ニ层单板上实现三层通信的方法及装置。
背景技术
在ニ层系统中,Iinux (—类多用户计算机操作系统的统称)单板之间的通讯是 通过交换芯片进行ニ层转发的;目前,随着组网环境越来越复杂,设备也越来越多,使ニ层Iinux单板具有三层通信功能成了迫切需求。在ニ层单板上实现三层通信的基本原理是CPU (Central Processing Unit,中央处理器)和交換芯片之间通过网ロ相连,可以通过该网线对应的物理网ロ(比如ETHn)将各个VLAN (Virtual Local Area Network,虚拟局域网)的报文上报给CPU进行三层处理;CPU处理(或者转发、或者接收、或者丢弃)完毕之后,再进行VLAN封装,通过物理网ロ ETHnロ将报文发送到L2 (Layer2,ニ层)芯片上,L2通过VLAN实现报文转发,最终实现三层通τΗ ο基于上述基本原理,现有技术中的Linux系统可以通过子接ロ实现报文跨VLAN接收和转发,并将ETHn设置成桥模式,然后再根据VLAN创建子接ロ,实现VLAN报文之间的接收;报文上报CPU后,再通过子接ロ将报文转发,但是子接ロ需要和主接ロ共用MAC (MediaAccess Control,介质访问控制)地址,且不能实现网ロ独立的功能。

发明内容
本发明的主要目的是提供ー种在ニ层单板上实现三层通信的方法及装置,g在解决单板物理网口数目不足,不能和L2交換芯片的对外接ロ一一映射的问题。本发明公开了ー种在ニ层单板上实现三层通信的方法,包括以下步骤根据报文从ニ层L2传递所产生的中断,获取所述报文及对应的套接字缓冲区skb指针;提取所述报文中的虚拟局域网VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网ロ;若是,则将所述skb指针对应的skb设备dev替换为虚拟网ロ dev ;通过所述虚拟网ロ dev接收或转发所述报文。优选地,所述通过所述虚拟网ロ dev转发所述报文的步骤具体包括将所述报文数据提交至协议栈处理;将处理后的所述报文通过所述虚拟网ロ转发至所述虚拟网ロ dev ;调用所述虚拟网ロ dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网ロ的发送函数将所述报文发出。优选地,所述根据报文从L2传递所产生的中断,获取所述报文及对应的skb指针的步骤之前还包括步骤
创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ。优选地,所述创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ的步骤具体包括分配网络设备结构体和虚拟网ロ私有结构体;配置所述虚拟网ロ的相关參数,并设置所述虚拟网ロ dev的所述VLAN信息;根据所述虚拟网ロ绑定的所述物理网ロ状态,设置所述虚拟网ロ状态。优选地,所述绑定到同一个所述物理网ロ的所述虚拟网ロ通过指针关联在一起。本发明还公开ー种在ニ层单板上实现三层通信的装置,包括报文接收模块,用于根据报文从L2传递所产生的中断,获取所述报文及对应的 skb指针;VLAN信息获取模块,用于提取所述报文中的VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网ロ ;dev替换模块,用于在获取到对应的虚拟网ロ时,将所述skb指针对应的skb dev替换为虚拟网ロ dev ;报文发送模块,用于通过所述虚拟网ロ dev接收或转发所述报文。优选地,所述报文发送模块具体包括报文处理单元,用于将所述报文数据提交至协议栈处理;报文转发单元,用于将处理后的所述报文通过所述虚拟网ロ转发至所述虚拟网ロdev ;报文发送単元,用于调用所述虚拟网ロ dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网ロ的发送函数将所述报文发出。优选地,所述在ニ层单板上实现三层通信的装置,还包括网ロ配置模块,用于创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ。优选地,所述网ロ配置模块包括结构体分配単元,用于分配网络设备结构体和虚拟网ロ私有结构体;虚拟网ロ參数配置単元,用于配置所述虚拟网ロ的相关參数,并设置所述虚拟网ロ dev的所述VLAN信息;虚拟网ロ状态设置単元,根据所述虚拟网ロ绑定的所述物理网ロ状态,设置所述虚拟网ロ状态。优选地,所述绑定到同一个所述物理网ロ的所述虚拟网ロ通过指针关联在一起。本发明通过根据报文从L2传递所产生的中断,获取该报文及对应的skb指针,根据报文中的VLAN信息,将该报文通过虚拟网ロ dev发送的方法,具有在只有L2交换芯片的系统上实现三层通信的有益效果,提高了数据传输性能,避免了子接ロ使用过程中的ー些限制,节约了硬件成本。


图I是本发明在ニ层单板上实现三层通信的方法第一实施例流程示意图;图2是本发明在ニ层单板上实现三层通信的方法中通过虚拟网ロ dev发送报文一实施例流程示意图3是本发明在ニ层单板上实现三层通信的方法第二实施例流程示意图;图4是本发明在ニ层单板上实现三层通信的方法中创建并配置与物理网ロ绑定的多个所述虚拟网ロー实施例流程示意图;图5是本发明在ニ层单板上实现三层通信的装置第一实施例结构示意图;图6是本发明在ニ层单板上实现三层通信的装置中报文发送模块ー实施例结构示意图;图7是本发明在ニ层单板上实现三层通信的装置第二实施例结构示意图;图8是本发明在ニ层单板上实现三层通信的装置中网ロ配置模块ー实施例结构示意图。本发明目的的实现、功能特点及优点将结合实施例,參照附图做进ー步说明。
具体实施例方式以下结合说明书附图及具体实施例进ー步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。參照图1,图I是本发明在ニ层单板上实现三层通信的方法第一实施例流程示意图;如图I所示,本发明在ニ层单板上实现三层通信的方法包括以下步骤步骤S01、根据报文从L2传递所产生的中断,获取所述报文及对应的skb指针;报文在ニ层单板上进行传递时,产生中断,触发物理网ロ的接收流程,物理网ロ获取该报文,并获取到该报文对应的skb (socket buffer,套接字缓冲区)指针。 步骤S02、提取所述报文中的VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网ロ ;若是,则执行步骤S03 ;若否,则执行步骤S04 ;步骤S03、将所述skb指针对应的skb dev替换为虚拟网ロ dev ;步骤S04、按照常规接收流程进行处理;物理网ロ提取该报文中的VLAN信息,所述VLAN信息为配置虚拟网ロ时注册的VLAN信息,ー个或多个VLAN信息只能对应唯一的虚拟网ロ ;根据该VLAN信息,物理网ロ采用一定的算法判断是否能够查找到对应的虚拟网ロ,该算法可以是遍历法等,在此不作限制。如果物理网ロ能够找到对应的虚拟网ロ,则将skb dev (device,设备)替换为虚拟网ロ dev ;如果物理网ロ没有找到对应的虚拟网ロ,则按照常规的处理流程进行接收处理。步骤S05、通过所述虚拟网ロ dev接收或转发所述报文。物理网ロ将接收到的报文提交至协议栈进行处理,本实施例中的协议栈指的是Linux协议栈;Linux协议栈将报文处理后,通过虚拟网ロ将处理后的报文转发至虚拟网ロdev ;物理网ロ调用对应虚拟网ロ dev的发送函数,在虚拟网ロ发送函数中添加VLAN信息后,再调用物理网ロ的发送函数,通过该虚拟网ロ dev将报文发送出去。本实施例通过根据报文从L2传递所产生的中断,获取该报文及对应的skb指针,根据报文中的VLAN信息,将该报文通过虚拟网ロ dev发送的方法,具有在只有L2交换芯片的系统上实现三层通信的有益效果,提高了数据传输性能,节约了硬件成本。參照图2,图2是本发明在ニ层单板上实现三层通信的方法中通过虚拟网ロ dev发送报文ー实施例流程示意图;本实施例仅对步骤S05作进ー步描述,本发明在ニ层单板上实现三层通信的方法所涉及的其他步骤,请參照相关实施例的具体描述,在此不再赘述。
如图2所示,本发明在ニ层单板上实现三层通信的方法中,通过虚拟网ロ dev发送报文的步骤包括步骤S11、将所述报文数据提交至协议栈处理;物理网ロ将接收到的报文提交至协议栈进行处理;所述协议栈是指网络中各层协议的总和,反映了一个网络中文件传输的过程由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是应用层、运输层、网络层、链路层和物理层;本实施例中的协议栈指的是Linux协议栈。步骤S12、将处理后的所述报文通过所述虚拟网ロ转发至所述虚拟网ロ dev ;步骤S13、调用所述虚拟网ロ dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网ロ的发送函数将所述报文发出。Linux协议栈将报文处理后,通过虚拟网ロ转发至虚拟网ロ dev ;物理网ロ调用对 应虚拟网ロ dev的发送函数,并在虚拟网ロ发送函数中添加VLAN信息,添加VLAN信息的方法可以通过重新分配ー个skb的方式进行添加,也可以通过其他方式,本实施例对VLAN信息的添加方式不作限制。在虚拟网ロ发送函数中添加VLAN信息后,再调用物理网ロ的发送函数,比如本实施例的物理网ロ的发送函数为dev->priv->real_eth->hard_start_xmit,将报文发送出去。本实施例通过协议栈将处理后的报文通过虚拟网ロ转发至虚拟网ロ dev、在虚拟网ロ发送函数中添加VLAN信息并采用物理网ロ发送函数将该报文发出的方法,具有保证报文信息真实性的有益效果。參照图3,图3是本发明在ニ层单板上实现三层通信的方法第二实施例流程示意图;本实施例与第一实施例的区别是,仅增加了步骤S06 ;本实施例仅对步骤S06作具体描述,本发明在ニ层单板上实现三层通信的方法所涉及的其他步骤请參照相关实施例的具体描述,在此不再赘述。如图3所示,本发明在ニ层单板上实现三层通信的方法在步骤S01、根据报文从L2传递所产生的中断,获取所述报文及对应的skb指针的步骤之前还包括步骤步骤S06、创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ。创建绑定到所述物理网ロ的多个虚拟网ロ,所述虚拟网ロ最多4095个;绑定到同一物理网ロ的虚拟网ロ通过指针关联在一起,虚拟网ロ的组织形式包括但不限于链表形式和数组形式。配置虚拟网ロ包括分配虚拟网ロ的结构体dev、将虚拟网ロ dev加入物理网ロ设备、配置虚拟网ロ需要的VLAN信息以及虚拟网ロ的MAC(Media Access Control,介质访问控制)地址、IP (Internet Protocol,互联网协议)地址等相关參数。本实施例创建并配置与物理网ロ绑定的虚拟网ロ的方法,具有克服L2单板物理网口数据不足的有益效果,使L2单板物理网ロ能够和L2交换芯片对外接ロ进行——映射。參照图4,图4是本发明在ニ层单板上实现三层通信的方法中创建并配置与物理网ロ绑定的多个所述虚拟网ロー实施例流程示意图;本实施例仅对步骤S06作进ー步描述,本发明在ニ层单板上实现三层通信的方法所涉及的其他步骤请參照相关实施例的具体描述,在此不再赘述。如图4所示,本发明在ニ层单板上实现三层通信的方法中,步骤S06、创建并配置与物理网ロ绑定的多个所述虚拟网ロ的步骤具体包括以下步骤
步骤S21、分配网络设备结构体和虚拟网ロ私有结构体;在一优选的实施例中,分配网络设计结构体和虚拟网ロ私有结构体具体为调用 alloc_net dev 分配虚拟网 ロ 的 net_device 结构体 dev ;初始化 dev->priv_>real_eth为绑定物理端ロ的dev,并将虚拟网ロ dev加入物理网ロ设备链头dev->priv_>next_virtual_eth ;分配struct net_device dev和虚拟网ロ私有结构体,虚拟网ロ私有结构体空间通过 struct net_device dev 的 priv 成员指向;初始化 dev_> hard_start_xmit 为虚拟网ロ发送函数指针,并初始化其他必须的net_device成员,向CPU内核注册·虚拟网ロ
devo步骤S22、配置所述虚拟网ロ的相关參数,并设置所述虚拟网ロ dev的所述VLAN信 息;在一优选的实施例中,配置虚拟网ロ的相关參数,并设置虚拟网ロ dev的VLAN信息具体为配置dev->priv->vlan为虚拟网ロ需要的VLAN ;配置虚拟网ロ的MAC ;虚拟网ロ和物理网ロ可以采用相同或不同的MAC :设置相同的MAC,则到达虚拟网ロ的报文都会到达物理网ロ,并在物理网ロ的接收函数中正确的将报文传递给虚拟网ロ ;也可以将物理网ロ设置成混杂模式,CPU内核处理网络上接收到的所有的报文,正确匹配VLAN信息和对应虚拟网ロ的MAC,报文会正确接收。应用程序或者CPU内核设置虚拟网ロ dev的VLAN信息到虚拟网ロ私有结构体,设置虚拟网ロ IP,ー个VLAN或者多个VLAN只能对应唯一的虚拟网ロ。配置物理网ロ对应L2交换芯片的接ロ,添加包含所有N个虚拟网ロ VLAN在内的VLAN ;此处也可以将物理网ロ设置成混杂模式,此时无需设置VLAN,但仍需要配置L2交换芯片的对应接ロ,目的是使交换芯片将不同VLAN的报文上报至物理接ロ,让CPU做三层通信处理。步骤S23、根据所述虚拟网ロ绑定的所述物理网ロ状态,设置所述虚拟网ロ状态。创建绑定到物理网ロ的多个虚拟网ロ,该虚拟网ロ最多不超过4095个,绑定到同一物理网ロ的虚拟网ロ通过指针关联在一起,虚拟网ロ的组织形式包括但不限于链表形式和数组形式。配置物理网ロ属于多个子接ロ的各个VLAN,所有虚拟网ロ MAC地址与物理网ロ的MAC地址可以相同也可以不同,物理网ロ均能够接收各个VLAN的报文。根据虚拟网ロ绑定的物理网ロ的状态,将虚拟网ロ up ;如果物理网ロ up,则虚拟网ロ up,如果物理网ロdown,则虚拟网ロ不能up,需先将物理网ロ up。本实施例通过分配网络设备结构体和虚拟网ロ私有结构体、配置虚拟网ロ相关參数及对应的VLAN信息并根据虚拟网ロ绑定的物理网ロ状态,设置虚拟网ロ状态以此来创建并配置虚拟网ロ的方法,是在ニ层单板上实现三层通信的重要前提,克服了 L2单板物理网口数据不足的缺陷。參照图5,图5是本发明在ニ层单板上实现三层通信的装置第一实施例结构示意图;如图5所示,本发明在ニ层单板上实现三层通信的装置包括报文接收模块01,用于根据报文从L2传递所产生的中断,获取所述报文及对应的skb指针;报文在ニ层单板上进行传递时,产生中断,触发物理网ロ的接收流程,物理网ロ的报文接收模块01获取该报文,并获取到该报文对应的skb(s0cket buffer,套接字缓冲区)指针。VLAN信息获取模块02,用于提取所述报文中的VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网ロ ;物理网ロ的VLAN信息获取模块02提取该报文中的VLAN信息,所述VLAN信息为配置虚拟网ロ时注册的VLAN信息,ー个或多个VLAN信息只能对应唯一的虚拟网ロ ;根据该VLAN信息,VLAN信息获取模块02采用一定的算法判断是否能够查找到对应的虚拟网ロ,该算法可以是遍历法,在此不作限制。dev替换模块03,用于在获取到对应的虚拟网ロ时,将所述skb指针对应的skbdev替换为虚拟网ロ dev ;如果VLAN信息获取模块02能够找到对应的虚拟网ロ,则dev替换模块03将skbdev替换为虚拟网ロ dev ;如果VLAN信息获取模块02没有找到对应的虚拟网ロ,则按照常规的处理流程进行接收处理。报文发送模块04,用于通过所述虚拟网ロ dev接收或转发所述报文。

物理网ロ的报文发送模块04将接收到的报文提交至协议栈进行处理,本实施例中的协议栈指的是Linux协议栈;Linux协议栈将报文处理后,报文发送模块04通过虚拟网ロ将处理后的报文转发至虚拟网ロ dev ;报文发送模块04调用对应虚拟网ロ dev的发送函数,在虚拟网ロ发送函数中添加VLAN信息后,再调用物理网ロ的发送函数,通过该虚拟网ロ dev将报文发送出去。本实施例通过根据报文从L2传递所产生的中断,获取该报文及对应的skb指针,根据报文中的VLAN信息,将该报文通过虚拟网ロ dev发送,具有在只有L2交换芯片的系统上实现三层通信的有益效果,提高了数据传输性能,节约了硬件成本。參照图6,图6是本发明在ニ层单板上实现三层通信的装置中报文发送模块ー实施例结构示意图;本实施例仅对报文发送模块04作进ー步描述,本发明在ニ层单板上实现三层通信的装置所涉及的其他模块请參照相关实施例的具体描述,在此不再赘述。如图6所示,本发明在ニ层单板上实现三层通信的装置中,报文发送模块04具体包括报文处理单元041,用于将所述报文数据提交至协议栈处理;报文处理单元041将接报文接收模块01收到的报文提交至协议栈进行处理;所述协议栈是指网络中各层协议的总和,反映了一个网络中文件传输的过程由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是应用层、运输层、网络层、链路层和物理层;本实施例中的协议栈指的是Linux协议栈。报文转发单元042,用于将处理后的所述报文通过所述虚拟网ロ转发至所述虚拟网 ロ dev ;报文发送単元043,用于调用所述虚拟网ロ dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网ロ的发送函数将所述报文发出。报文处理单元041将报文处理后,报文转发单元042通过虚拟网ロ转发至虚拟网ロ dev ;报文发送单元043调用对应虚拟网ロ dev的发送函数,并在虚拟网ロ发送函数中添加VLAN信息,添加VLAN信息的方法可以通过重新分配ー个skb的方式进行添加,也可以通过其他方式,本实施例对VLAN信息的添加方式不作限制。报文发送単元043在虚拟网ロ发送函数中添加VLAN信息后,再调用物理网ロ的发送函数,比如在一优选的实施例中,物理网ロ的发送函数为dev->priv->real_eth->hard_start_xmit,将报文发送出去。
本实施例通过协议栈将处理后的报文通过虚拟网ロ转发至虚拟网ロ dev、在虚拟网ロ发送函数中添加VLAN信息并采用物理网ロ发送函数将该报文发出,具有保证报文信息真实性的有益效果。參照图7,图7是本发明在ニ层单板上实现三层通信的装置第二实施例结构示意图;本实施例与第一实施例的区别是,仅增加了网ロ配置模块05 ;本实施例仅对网ロ配置模块05作具体描述,本发明在ニ层单板上实现三层通信的装置所涉及的其他模块请參照各相关实施例的具体描述,在此不再赘述。如图7所示,本发明在ニ层单板上实现三层通信的装置还包括网ロ配置模块05,用于创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ。网ロ配置模块05创建绑定到所述物理网ロ的多个虚拟网ロ,所述虚拟网ロ最多4095个;绑定到同一物理网ロ的虚拟网ロ通过指针关联在一起,虚拟网ロ的组织形式包括但不限于链表形式和数组形式。网ロ配置模块05配置虚拟网ロ包括分配虚拟网ロ的结构 体dev、将虚拟网ロ dev加入物理网ロ设备、配置虚拟网ロ需要的VLAN信息以及虚拟网ロ的MAC (Media Access Control,介质访问控制)地址、IP (Internet Protocol,互联网协议)地址等相关參数。本实施例创建并配置与物理网ロ绑定的虚拟网ロ,具有克服L2单板物理网口数据不足的有益效果,使L2单板物理网ロ能够和L2交换芯片对外接ロ进行一一映射。參照图8,图8是本发明在ニ层单板上实现三层通信的装置中网ロ配置模块ー实施例结构示意图。本实施例仅对网ロ配置模块05作进ー步描述,本发明在ニ层单板上实现三层通信的装置所涉及的其他模块,请參照相关实施例的具体描述,在此不再赘述。如图8所示,本发明在ニ层单板上实现三层通信的装置中,网ロ配置模块05具体包括结构体分配单元051,用于分配网络设备结构体和虚拟网ロ私有结构体;在一优选的实施例中,结构体分配单元051分配网络设计结构体和虚拟网ロ私有结构体具体为调用alloc_net dev分配虚拟网ロ的net_device结构体dev ;初始化dev->priv->real_eth为绑定物理端ロ的dev,并将虚拟网ロ dev加入物理网ロ设备链头dev->priv->next_virtual_eth ;分配 struct net_device dev 和虚拟网 ロ私有结构体,虚拟网ロ私有结构体空间通过struct net_device dev的priv成员指向;初始化dev_>hard_start_xmit为虚拟网ロ发送函数指针,并初始化其他必须的net_device成员,向CPU内核注册·虚拟网ロ dev。虚拟网ロ參数配置単元052,用于配置所述虚拟网ロ的相关參数,并设置所述虚拟网ロ dev的所述VLAN信息;在一优选的实施例中,虚拟网ロ參数配置单元052配置虚拟网ロ的相关參数,并设置虚拟网ロ dev的VLAN信息具体为配置dev->priv_>vlan为虚拟网ロ需要的VLAN ;配置虚拟网ロ的MAC ;虚拟网口和物理网ロ可以采用相同或不同的MAC :设置相同的MAC,则到达虚拟网ロ的报文都会到达物理网ロ,并在物理网ロ的接收函数中正确的将报文传递给虚拟网ロ ;也可以将物理网ロ设置成混杂模式,CPU内核处理网络上接收到的所有的报文,正确匹配VLAN信息和对应虚拟网ロ的MAC,报文会正确接收。虚拟网ロ參数配置单元052设置虚拟网ロ dev的VLAN信息到虚拟网ロ私有结构体,设置虚拟网ロ IP,ー个VLAN或者多个VLAN只能对应唯一的虚拟网ロ。虚拟网ロ參数配置单元052配置物理网ロ对应L2交换芯片的接ロ,添加包含所有N个虚拟网ロ VLAN在内的VLAN ;此处也可以将物理网ロ设置成混杂模式,此时无需设置VLAN,但仍需要配置L2交换芯片的对应接ロ,目的是使交換芯片将不同VLAN的报文上报至物理接ロ,让CPU做三层通信处理。虚拟网ロ状态设置単元053,根据所述虚拟网ロ绑定的所述物理网ロ状态,设置所述虚拟网ロ状态。虚拟网ロ状态设置单元053创建绑定到物理网ロ的多个虚拟网ロ,该虚拟网ロ最多不超过4095个,绑定到同一物理网ロ的虚拟网ロ通过指针关联在一起,虚拟网ロ的组织形式包括但不限于链表形式和数组形式。虚拟网ロ状态设置単元053配置物理网ロ属于多个子接ロ的各个VLAN,所有虚拟网ロ MAC地址与物理网ロ的MAC地址可以相同也可以不同,物理网ロ均能够接收各个VLAN的报文。虚拟网ロ状态设置単元053根据虚拟网ロ绑定的物理网ロ的状态,将虚拟网ロ up (拉高);如果物理网ロ up,则虚拟网ロ up,如果物理网ロdown (置低),则虚拟网ロ不能up,需先将物理网ロ up。

本实施例通过分配网络设备结构体和虚拟网ロ私有结构体、配置虚拟网ロ相关參数及对应的VLAN信息并根据虚拟网ロ绑定的物理网ロ状态,设置虚拟网ロ状态以此来创建并配置虚拟网ロ,是在ニ层单板上实现三层通信的重要前提,克服了 L2单板物理网口数据不足的缺陷。以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.ー种在ニ层单板上实现三层通信的方法,其特征在于,包括以下步骤根据报文从ニ层L2传递所产生的中断,获取所述报文及对应的套接字缓冲区Skb指针;提取所述报文中的虚拟局域网VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网ロ;若是,则将所述skb指针对应的skb设备dev替换为虚拟网ロ dev ;通过所述虚拟网ロ dev接收或转发所述报文。
2.如权利要求I所述的方法,其特征在于,所述通过所述虚拟网ロdev转发所述报文的步骤具体包括将所述报文数据提交至协议栈处理;将处理后的所述报文通过所述虚拟网ロ转发至所述虚拟网ロ dev ;调用所述虚拟网ロ dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网ロ的发送函数将所述报文发出。
3.如权利要求I或2所述的方法,其特征在于,所述根据报文从L2传递所产生的中断,获取所述报文及对应的skb指针的步骤之前还包括步骤创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ。
4.如权利要求3所述的方法,其特征在于,所述创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ的步骤具体包括分配网络设备结构体和虚拟网ロ私有结构体;配置所述虚拟网ロ的相关參数,并设置所述虚拟网ロ dev的所述VLAN信息;根据所述虚拟网ロ绑定的所述物理网ロ状态,设置所述虚拟网ロ状态。
5.如权利要求4所述的方法,其特征在于,所述绑定到同一个所述物理网ロ的所述虚拟网ロ通过指针关联在一起。
6.ー种在ニ层单板上实现三层通信的装置,其特征在于,包括报文接收模块,用于根据报文从L2传递所产生的中断,获取所述报文及对应的skb指针;VLAN信息获取模块,用于提取所述报文中的VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网ロ;dev替换模块,用于在获取到对应的虚拟网ロ时,将所述skb指针对应的skb dev替换为虚拟网ロ dev ;报文发送模块,用于通过所述虚拟网ロ dev接收或转发所述报文。
7.如权利要求6所述的装置,其特征在于,所述报文发送模块具体包括报文处理单元,用于将所述报文数据提交至协议栈处理;报文转发单元,用于将处理后的所述报文通过所述虚拟网ロ转发至所述虚拟网ロdev ;报文发送単元,用于调用所述虚拟网ロ dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网ロ的发送函数将所述报文发出。
8.如权利要求6或7所述的装置,其特征在于,还包括网ロ配置模块,用于创建并配置与所述物理网ロ绑定的多个所述虚拟网ロ。
9.如权利要求8所述的装置,其特征在于,所述网ロ配置模块包括结构体分配単元,用于分配网络设备结构体和虚拟网ロ私有结构体;虚拟网ロ參数配置単元,用于配置所述虚拟网ロ的相关參数,并设置所述虚拟网ロ dev的所述VLAN信息;虚拟网ロ状态设置単元,根据所述虚拟网ロ绑定的所述物理网ロ状态,设置所述虚拟网ロ状态。
10.如权利要求9所述的装置,其特征在于,所述绑定到同一个所述物理网ロ的所述虚拟网ロ通过指针关联在一起。
全文摘要
本发明公开一种在二层单板上实现三层通信的方法,包括根据报文从L2传递所产生的中断,获取报文及对应的skb指针;提取报文中的VLAN信息,根据VLAN信息,判断是否能够查找到对应的虚拟网口;若是,则将skb指针对应的skb dev替换为虚拟网口dev;通过虚拟网口dev接收或转发报文。本发明还公开一种在二层单板上实现三层通信的装置。本发明通过根据报文从L2传递所产生的中断,获取该报文及对应的skb指针,根据报文中的VLAN信息,将该报文接收或转发的方法,具有在L2交换芯片系统上实现三层通信的有益效果,提高了数据传输性能,避免了子接口的使用限制,节约了硬件成本。
文档编号H04L12/56GK102833155SQ20121027529
公开日2012年12月19日 申请日期2012年8月3日 优先权日2012年8月3日
发明者李曙光, 么爱利 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1