CN102833155A - 在二层单板上实现三层通信的方法及装置 - Google Patents
在二层单板上实现三层通信的方法及装置 Download PDFInfo
- Publication number
- CN102833155A CN102833155A CN2012102752916A CN201210275291A CN102833155A CN 102833155 A CN102833155 A CN 102833155A CN 2012102752916 A CN2012102752916 A CN 2012102752916A CN 201210275291 A CN201210275291 A CN 201210275291A CN 102833155 A CN102833155 A CN 102833155A
- Authority
- CN
- China
- Prior art keywords
- virtual network
- message
- network port
- dev
- network interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开一种在二层单板上实现三层通信的方法,包括:根据报文从L2传递所产生的中断,获取报文及对应的skb指针;提取报文中的VLAN信息,根据VLAN信息,判断是否能够查找到对应的虚拟网口;若是,则将skb指针对应的skb dev替换为虚拟网口dev;通过虚拟网口dev接收或转发报文。本发明还公开一种在二层单板上实现三层通信的装置。本发明通过根据报文从L2传递所产生的中断,获取该报文及对应的skb指针,根据报文中的VLAN信息,将该报文接收或转发的方法,具有在L2交换芯片系统上实现三层通信的有益效果,提高了数据传输性能,避免了子接口的使用限制,节约了硬件成本。
Description
技术领域
本发明涉及通讯技术领域,尤其涉及一种在二层单板上实现三层通信的方法及装置。
背景技术
在二层系统中,linux(一类多用户计算机操作系统的统称)单板之间的通讯是通过交换芯片进行二层转发的;目前,随着组网环境越来越复杂,设备也越来越多,使二层linux单板具有三层通信功能成了迫切需求。
在二层单板上实现三层通信的基本原理是: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(Media Access Control,介质访问控制)地址,且不能实现网口独立的功能。
发明内容
本发明的主要目的是提供一种在二层单板上实现三层通信的方法及装置,旨在解决单板物理网口数目不足,不能和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交换芯片的系统上实现三层通信的有益效果,提高了数据传输性能,避免了子接口使用过程中的一些限制,节约了硬件成本。
附图说明
图1是本发明在二层单板上实现三层通信的方法第一实施例流程示意图;
图2是本发明在二层单板上实现三层通信的方法中通过虚拟网口dev发送报文一实施例流程示意图;
图3是本发明在二层单板上实现三层通信的方法第二实施例流程示意图;
图4是本发明在二层单板上实现三层通信的方法中创建并配置与物理网口绑定的多个所述虚拟网口一实施例流程示意图;
图5是本发明在二层单板上实现三层通信的装置第一实施例结构示意图;
图6是本发明在二层单板上实现三层通信的装置中报文发送模块一实施例结构示意图;
图7是本发明在二层单板上实现三层通信的装置第二实施例结构示意图;
图8是本发明在二层单板上实现三层通信的装置中网口配置模块一实施例结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1是本发明在二层单板上实现三层通信的方法第一实施例流程示意图;如图1所示,本发明在二层单板上实现三层通信的方法包括以下步骤:
步骤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内核注册虚拟网口dev。
步骤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(socket buffer,套接字缓冲区)指针。
VLAN信息获取模块02,用于提取所述报文中的VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网口;
物理网口的VLAN信息获取模块02提取该报文中的VLAN信息,所述VLAN信息为配置虚拟网口时注册的VLAN信息,一个或多个VLAN信息只能对应唯一的虚拟网口;根据该VLAN信息,VLAN信息获取模块02采用一定的算法判断是否能够查找到对应的虚拟网口,该算法可以是遍历法,在此不作限制。
dev替换模块03,用于在获取到对应的虚拟网口时,将所述skb指针对应的skb dev替换为虚拟网口dev;
如果VLAN信息获取模块02能够找到对应的虚拟网口,则dev替换模块03将skb dev替换为虚拟网口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单板物理网口数据不足的缺陷。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种在二层单板上实现三层通信的方法,其特征在于,包括以下步骤:
根据报文从二层L2传递所产生的中断,获取所述报文及对应的套接字缓冲区skb指针;
提取所述报文中的虚拟局域网VLAN信息,根据所述VLAN信息,判断是否能够查找到对应的虚拟网口;
若是,则将所述skb指针对应的skb设备dev替换为虚拟网口dev;
通过所述虚拟网口dev接收或转发所述报文。
2.如权利要求1所述的方法,其特征在于,所述通过所述虚拟网口dev转发所述报文的步骤具体包括:
将所述报文数据提交至协议栈处理;
将处理后的所述报文通过所述虚拟网口转发至所述虚拟网口dev;
调用所述虚拟网口dev的发送函数,在所述发送函数中添加所述VLAN信息后,再调用物理网口的发送函数将所述报文发出。
3.如权利要求1或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所述的装置,其特征在于,所述绑定到同一个所述物理网口的所述虚拟网口通过指针关联在一起。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210275291.6A CN102833155B (zh) | 2012-08-03 | 2012-08-03 | 在二层单板上实现三层通信的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210275291.6A CN102833155B (zh) | 2012-08-03 | 2012-08-03 | 在二层单板上实现三层通信的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102833155A true CN102833155A (zh) | 2012-12-19 |
CN102833155B CN102833155B (zh) | 2015-12-16 |
Family
ID=47336128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210275291.6A Active CN102833155B (zh) | 2012-08-03 | 2012-08-03 | 在二层单板上实现三层通信的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102833155B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453022A (zh) * | 2016-09-14 | 2017-02-22 | 上海斐讯数据通信技术有限公司 | 一种网络设备和数据包发送方法 |
CN107426347A (zh) * | 2017-07-25 | 2017-12-01 | 深圳市中航比特通讯技术有限公司 | 一种三层网络接口装置及映射方法 |
CN113992568A (zh) * | 2021-09-23 | 2022-01-28 | 北京连山科技股份有限公司 | 2层与3层业务混合转发的多链路通信系统方法及系统 |
CN114338606A (zh) * | 2020-09-25 | 2022-04-12 | 华为云计算技术有限公司 | 一种公有云的网络配置方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101115004A (zh) * | 2007-07-31 | 2008-01-30 | 北京亿阳信通软件研究院有限公司 | 阻止主机访问网络设备的方法及阻断服务器 |
CN102404180A (zh) * | 2011-11-10 | 2012-04-04 | 神州数码网络(北京)有限公司 | 一种基于pbn网络实现oam的方法及系统 |
-
2012
- 2012-08-03 CN CN201210275291.6A patent/CN102833155B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101115004A (zh) * | 2007-07-31 | 2008-01-30 | 北京亿阳信通软件研究院有限公司 | 阻止主机访问网络设备的方法及阻断服务器 |
CN102404180A (zh) * | 2011-11-10 | 2012-04-04 | 神州数码网络(北京)有限公司 | 一种基于pbn网络实现oam的方法及系统 |
Non-Patent Citations (2)
Title |
---|
朱波: "基于无线控制器的接口管理", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 December 2011 (2011-12-15) * |
黄宇恒: "多协议标签交换技术及其在第二层VPN中的应用研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 June 2009 (2009-06-15) * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453022A (zh) * | 2016-09-14 | 2017-02-22 | 上海斐讯数据通信技术有限公司 | 一种网络设备和数据包发送方法 |
CN107426347A (zh) * | 2017-07-25 | 2017-12-01 | 深圳市中航比特通讯技术有限公司 | 一种三层网络接口装置及映射方法 |
CN107426347B (zh) * | 2017-07-25 | 2021-03-19 | 深圳市中航比特通讯技术有限公司 | 一种三层网络接口装置及映射方法 |
CN114338606A (zh) * | 2020-09-25 | 2022-04-12 | 华为云计算技术有限公司 | 一种公有云的网络配置方法及相关设备 |
CN114338606B (zh) * | 2020-09-25 | 2023-07-18 | 华为云计算技术有限公司 | 一种公有云的网络配置方法及相关设备 |
CN113992568A (zh) * | 2021-09-23 | 2022-01-28 | 北京连山科技股份有限公司 | 2层与3层业务混合转发的多链路通信系统方法及系统 |
CN113992568B (zh) * | 2021-09-23 | 2022-06-14 | 北京连山科技股份有限公司 | 2层与3层业务混合转发的多链路通信系统方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102833155B (zh) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101841451B (zh) | 一种云主机基于虚拟局域网的限速方法和系统 | |
CN103401773B (zh) | 一种实现板间通信的方法及网络设备 | |
CN102868647B (zh) | 一种基于Linux网络内核的数据处理方法和装置 | |
CN105634956B (zh) | 一种报文转发方法、装置和系统 | |
CN104272684A (zh) | Fabric交换机中的动态服务插入 | |
CN102318291A (zh) | 一种业务流处理的方法、装置及系统 | |
RU2011140978A (ru) | Способ и устройство маршрутизации ввода-вывода и карта | |
CN101741664A (zh) | 以太网接口系统实现方法及实现装置 | |
CN102647370B (zh) | WiFi网络和ZigBee网络之间的通信方法 | |
CN102833155B (zh) | 在二层单板上实现三层通信的方法及装置 | |
CN101707569A (zh) | Nat业务报文处理的方法及装置 | |
CN107566237A (zh) | 一种数据报文处理方法及装置 | |
CN105052106B (zh) | 用于接收和传输互联网协议(ip)数据包的方法和系统 | |
CN104954155B (zh) | 具有多个业务板的网络设备以及多业务板分担方法 | |
CN109302226A (zh) | 天地一体化网络通信方法 | |
CN103023779A (zh) | 一种数据报文处理方法及装置 | |
CN102984070A (zh) | 一种以太网无编号接口实现数据转发方法 | |
CN101605093B (zh) | 利用IP Option实现信息透传的方法 | |
CN105284083A (zh) | OpenFlow设备与IP网络设备通信的方法、装置和系统 | |
CN104579973A (zh) | 一种虚拟集群中的报文转发方法和装置 | |
CN101242370A (zh) | 实现以太网与帧中继互联的方法与协议转换设备 | |
CN103823721B (zh) | 一种进程间通信的方法及设备 | |
CN101626343B (zh) | 数据包交换的方法、装置和通信设备 | |
CN102821020A (zh) | 通过复制中转ip包来透传vpn通信的方法 | |
CN110391961A (zh) | 一种隧道绑定方法、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |