一种创建多个虚拟网络接口的方法和网络设备的制作方法

文档序号:7854898阅读:285来源:国知局
专利名称:一种创建多个虚拟网络接口的方法和网络设备的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种创建多个虚拟网络接口的方法和网络设备。
背景技术
网络设备通讯中,TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)协议上层业务的展开需依赖于网络的底层驱动。在内核中需要创建网络接口以实现相应的功能。现有的技术中,一个或者多个物理接口通常在内核中初始化为一个网络设备接口。以市面上现有的多WAN(Wide Area Network,广域网)口路由器而言,多WAN 口路由器为了实现可以同时接入不同外网线路,比如物理接口 WANl 接网通、WAN2接电信,使得内网访问网通的服务走网通线路,访问电信的服务走电信的线路,需要在硬件上连接多个物理接口,如多WAN 口路由器可以采用多个RJ45接口的交换机来达到多WAN 口的目的。可见现有技术存在以下缺陷I、业务的区分依赖于硬件的接口实现,有多个业务想要实现,就需要有多个物理接口来支撑,因此极大的限制了业务多样化的开展,也极大地影响了运营商的盈利模式以及用户日益增长的需求。2、多业务的运营需要多个物理接口的实现,从而无形中提高了网络设备的成本,提高了运营商的运维成本。

发明内容
本发明所要解决的技术问题在于,提供一种创建多个虚拟网络接口的方法和网络设备,可实现在一个物理接口上创建多个虚拟接口。为了解决上述技术问题,本发明提供了一种创建多个虚拟网络接口的方法,所述方法包括设备初始化,包括加载MACVLAN模块;通过加载网络设备接口驱动创建至少一个网络接口 ;基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络接口。其中,所述通过MACVLAN机制创建多个虚拟网络接口之后还包括建立所述网络接口与所述多个虚拟网络接口之间的NAT映射关系。其中,所述通过MACVLAN机制创建多个虚拟网络接口包括注册MAC VLAN接口的通知链函数;注册MAC VLAN接口的帧处理函数;注册MAC VLAN接口的链接操作函数。其中,所述通过MACVLAN机制创建多个虚拟网络接口后还包括获取需要发送的数据包;调用创建所述虚拟网络接口时注册的函数对所述数据包进行处理;通过所述网络设备接口驱动发送经过处理的数据包。
相应的,本发明实施例还提供了一种实现创建多个虚拟网络接口的网络设备,所述网络设备包括 初始化单元,用于进行设备初始化,包括加载MACVLAN模块;网络接口创建单元,用于通过加载网络设备接口驱动创建至少一个网络接口 ;虚拟网络接口创建单元,用于基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络接口。其中,所述网络设备还包括映射关系建立单元,用于建立所述网络接口与所述多个虚拟网络接口之间的NAT映射关系。
其中,所述网络接口创建单元通过加载网络设备接口驱动创建至少一个网络接口包括注册MAC VLAN接口的通知链函数;注册MAC VLAN接口的帧处理函数;注册MAC VLAN接口的链接操作函数。其中,所述网络设备还包括数据包获取单元,用于获取需要发送的数据包;数据包处理单元,用于调用创建所述虚拟网络接口时注册的函数对所述数据包进行处理;数据包发送单元,用于通过所述网络设备接口驱动发送经过处理的数据包。实施本发明,具有如下有益效果通过采用Linux的MACVLAN机制,实现在一个物理接口上创建多个虚拟接口,可以在创建得到的多个虚拟网络接口上开展多个业务,从而达到一线多网或者一线多业务,有效的降低了成本。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本发明一种创建多个虚拟网络接口的方法的流程示意图;图2是本发明调用创建得到的虚拟网络接口进行数据包发送的流程示意图;图3是本发明一种实现创建多个虚拟网络接口的网络设备的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图I是本发明一种创建多个虚拟网络接口的方法的流程示意图。本发明实施例可以实现在如个人电脑、路由器、交换机、通讯服务器等各种网络设备上。如图所示本发明实施例中创建多个虚拟网络接口的方法至少包括步骤S101,设备初始化,包括加载 MACVLAN (Media Access Control Addressbased Virtual Local Area Network,基于虚拟局域网的媒体访问控制地址)模块。具体实现中,该步骤可以包括网络设备上电启动至加载内核,然后初始化网络协议栈,加载文件系统,加载Linux的MACVLAN模块。步骤S102,通过加载网络设备接口驱动创建至少一个网络接口。具体实现中,以路由器创建网络接口为例,加载的是以太网交换机的相关驱动,以实现基于一个物理接口创建得到一个网络接口。当有多个物理接口时,可以对应每个物理接口创建得到一个网络接□。步骤S103,基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络 接口。利用Linux的MACVLAN机制可以基于一个网络接口创建多个虚拟网络接口,具体实现中包括在加载MACVLAN模块并初始化后进行以下函数的注册注册MAC VLAN接口的Notifier通知链函数(网络设备状态变动时的处理函数);注册MAC VLAN接口的帧处理函数;注册MAC VLAN接口的链接操作函数。成功完成MAC VLAN的上述三类函数注册后,即基于一个网络接口的多个虚拟网络接口创建成功。进一步的所述一种创建多个虚拟网络接口的方法还可以包括建立所述网络接口与所述多个虚拟网络接口之间的NAT (Network AddressTranslation,网络地址转换)映射关系。该步骤为可选,例如在路由器中实现本方案的时候,建立所述NAT映射关系,可以实现循环处理数据时进行网络地址转换并由对应的网络接口转发数据包。为了说明如何使用所述创建得到的虚拟网络接口,下面通过一个使用上述方法创建得到的虚拟网络接口发送数据包的流程进行阐述图2是本发明调用创建得到的虚拟网络接口进行数据包发送的流程示意图,如图所示该流程包括步骤S201,获取需要发送的数据包。具体为网络设备接口驱动获取到所述需要发送的数据包。步骤S202,调用创建所述虚拟网络接口时注册的函数进行处理。具体实现中,所述网络设备接口驱动在获取到所述数据包后,可以调用网络协议栈对所述数据包进行处理,包括调用之前创建所述虚拟网络接口时注册成功的三种类型的函数对所述数据包进行处理,处理完毕后将经过处理的数据包返回给所述网络设备接口驱动。步骤S203,通过所述网络设备接口驱动发送经过处理的数据包。图3是本发明一种实现创建多个虚拟网络接口的网络设备的结构示意图。本发明中的网络设备可以在如个人电脑、路由器、交换机、通讯服务器等设备上实现。初始化单元310,用于进行设备初始化,包括加载MACVLAN模块。具体的,初始化单元310在网络设备上电启动至加载内核后初始化网络协议栈,加载文件系统,加载Linux的MACVLAN 模块。网络接口创建单元320,用于通过加载网络设备接口驱动创建至少一个网络接口。具体实现中,已路由器创建网络接口为例,网络接口创建单元320加载的是以太网交换机的相关驱动,以实现基于一个物理接口创建得到一个网络接口。当有多个物理接口时,网络接口创建单元320可以对应每个物理接口创建得到一个网络接口。虚拟网络接口创建单元330,用于基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络接口。利用Linux的MACVLAN机制可以基于一个网络接口创建多个虚拟网络接口,具体实现中包括在加载MACVLAN模块并初始化后虚拟网络接口创建单元330进行以下函数的注册注册MAC VLAN接口的Notifier通知链函数(网络设备状态变动时的处理函数);注册MAC VLAN接口的帧处理函数;注册MAC VLAN接口的链接操作函数。
成功完成MAC VLAN的上述三类函数注册后,虚拟网络接口创建单元330基于一个网络接口的多个虚拟网络接口创建成功。进一步的所述实现创建多个虚拟网络接口的网络设备还可以包括映射关系建立单元340,用于建立所述网络接口与所述多个虚拟网络接口之间的NAT映射关系。该步骤为可选,例如在路由器中实现本方案的时候,建立所述NAT映射关系,可以实现循环处理数据时进行网络地址转换并由对应的网络接口转发数据包。进一步的所述实现创建多个虚拟网络接口的网络设备还可以包括数据包获取单元350,用于获取需要发送的数据包。数据包处理单元360,用于调用创建所述虚拟网络接口时注册的函数对所述数据包进行处理。具体实现中,所述数据包处理单元360在获取到所述数据包后,可以调用网络协议栈对所述数据包进行处理,包括调用之前创建所述虚拟网络接口时注册成功的三种类型的函数对所述数据包进行处理,处理完毕后将经过处理的数据包返回给网络设备接口驱动。数据包发送单元370,用于通过所述网络设备接口驱动发送经过处理的数据包。本发明实施例通过采用Linux的MACVLAN机制,实现在一个物理接口上创建多个虚拟接口,可以在创建得到的多个虚拟网络接口上开展多个业务,从而达到一线多网或者一线多业务,有效的降低了成本。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1.一种创建多个虚拟网络接口的方法,其特征在于,所述方法包括 设备初始化,包括加载MACVLAN模块; 通过加载网络设备接口驱动创建至少一个网络接口; 基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络接口。
2.如权利要求I所述的创建多个虚拟网络接口的方法,其特征在于,所述通过MACVLAN机制创建多个虚拟网络接口之后还包括 建立所述网络接口与所述多个虚拟网络接口之间的NAT映射关系。
3.如权利要求I所述的创建多个虚拟网络接口的方法,其特征在于,所述通过MACVLAN机制创建多个虚拟网络接口包括 注册MAC VLAN接口的通知链函数; 注册MAC VLAN接口的帧处理函数; 注册MAC VLAN接口的链接操作函数。
4.如权利要求3所述的创建多个虚拟网络接口的方法,其特征在于,所述通过MACVLAN机制创建多个虚拟网络接口后还包括 获取需要发送的数据包; 调用创建所述虚拟网络接口时注册的函数对所述数据包进行处理; 通过所述网络设备接口驱动发送经过处理的数据包。
5.一种实现创建多个虚拟网络接口的网络设备,其特征在于,所述网络设备包括 初始化单元,用于进行设备初始化,包括加载MACVLAN模块; 网络接口创建单元,用于通过加载网络设备接口驱动创建至少一个网络接口 ; 虚拟网络接口创建单元,用于基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络接口。
6.如权利要求5所述的实现创建多个虚拟网络接口的网络设备,其特征在于,还包括 映射关系建立单元,用于建立所述网络接口与所述多个虚拟网络接口之间的NAT映射关系。
7.如权利要求5或6所述的实现创建多个虚拟网络接口的网络设备,其特征在于,所述网络接口创建单元通过加载网络设备接口驱动创建至少一个网络接口包括 注册MAC VLAN接口的通知链函数; 注册MAC VLAN接口的帧处理函数; 注册MAC VLAN接口的链接操作函数。
8.如权利要求7所述的实现创建多个虚拟网络接口的网络设备,其特征在于,还包括 数据包获取单元,用于获取需要发送的数据包; 数据包处理单元,用于调用创建所述虚拟网络接口时注册的函数对所述数据包进行处理; 数据包发送单元,用于通过所述网络设备接口驱动发送经过处理的数据包。
全文摘要
本发明实施例公开了一种创建多个虚拟网络接口的方法,所述方法包括设备初始化,包括加载MACVLAN模块;通过加载网络设备接口驱动创建至少一个网络接口;基于所述创建得到的网络接口,通过MACVLAN机制创建多个虚拟网络接口。本发明实施例还公开了一种实现创建多个虚拟网络接口的网络设备。采用本发明,可以实现在一个物理接口上创建多个虚拟接口。
文档编号H04L12/46GK102752203SQ20121022302
公开日2012年10月24日 申请日期2012年6月30日 优先权日2012年6月30日
发明者赵春雄 申请人:深圳市同洲电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1