基于网桥实现三层路由转发的方法、系统及网关设备与流程

文档序号:25437090发布日期:2021-06-11 21:54阅读:173来源:国知局
本发明涉及网络通信
技术领域
:,尤其涉及基于网桥实现三层路由转发的方法、系统及网关设备。
背景技术
::在为企业、学校等机构添加某些网关设备(例如vpn网关)时,经常因为不能改变现有的网络拓扑而必须以旁路模式部署,或以网桥模式插入到现有网络中。但是,以旁路模式部署网关设备时,需要内网终端用户手动添加静态路由,将访问相应网段的路由指向这台旁路网关;而以网桥模式将网关设备插入到现有网络中时,需要先基于网关设备的操作系统内核配置一个虚拟网桥设备,然后利用该虚拟网桥设备将网关部署到现有网络拓扑结构中,这种部署方式中,请参阅图1,虽然网桥能接收到内网终端的所有数据包,但却不能对经过其的数据包进行三层(网络层)路由转发,进而无法实现网关在网络层以上的网络互连,这是因为网关的操作系统的协议栈对数据包的处理通常是分层进行的,即对接收到的数据包依次进行数据链路层、网络层、传输层、应用层的解析和处理,而传统的网桥仅工作在二层(即数据链路层),只能将数据包按mac地址进行转发,即:接收到来自内网从属物理接口的数据包,并将该数据包转发到外网从属物理接口,以实现基于mac地址的二层数据转发,而无法将数据包按ip地址进行三层路由转发。故而,将网关设备以网桥模式部署到现有网络中时,也需要内网终端用户手动添加静态路由才能工作,不够便捷。因此,如何基于工作在二层的网桥实现三层路由转发,是在现有的网络拓扑结构中快速部署新的网关设备时亟需解决的问题。技术实现要素:本发明的目的在于提供基于网桥实现三层路由转发的方法、系统及网关设备,在网桥处理接收到的数据包时筛选出需要按ip地址进行路由转发的数据包,并将该数据包直接送入操作系统协议栈的网络层,以减少网络拓扑工作的作业量,方便于快速部署新的网关设备。为了实现上述目的,本发明提供如下技术方案:一种基于网桥实现三层路由转发的方法,包括:获取网桥需要转发的数据包,并获取所述数据包的目的ip地址,其中,所述网桥为:配置在网关设备操作系统中的虚拟设备;对所述目的ip地址进行路由查询,若所述目的ip地址有路由命中,则将所述数据包送入当前网桥所在的操作系统协议栈的网络层。优选地,通过网桥的内网从属物理接口获取网桥需要转发的数据包。具体地,获取所述数据包的目的ip地址的方法包括:判断所述数据包中是否包含ip数据报;若包含ip数据报,则解析得到所述ip数据报中的目的ip地址;若不包含ip数据报,则将所述数据包送入当前网桥的操作系统协议栈的网络层。进一步地,通过识别所述数据包的网络层协议是否为ip协议,判断所述数据包中是否包含ip数据报;通过解析所述ip数据报的报头得到所述目的ip地址。较佳地,对所述目的ip地址进行路由查询的方法包括但不限于:调用网桥所在的操作系统内核中的路由查询api,并将所述目的ip作为路由查询参数,查询路由表;若所述路由查询api返回有效的路由表项,则所述目的ip有路由命中,并将所述数据包送入当前网桥所在的操作系统协议栈的网络层;否则,所述目的ip没有路由命中,并将所述数据包送入当前网桥的操作系统协议栈的网络层。优选地,将包含有路由命中的目的ip地址的数据包送入当前网桥所在的操作系统协议栈的网络层的方法包括:将所述数据包中以太网帧的mac地址修改为当前网桥的虚拟接口的mac地址,同时将所述数据包的接收接口修改为当前网桥的虚拟接口;调用网桥的网卡数据包接收api,将修改后的数据包发送到网桥所在的操作系统协议栈的网络层。一种基于网桥实现三层路由转发的系统,内置于配置有虚拟网桥设备的网关设备的操作系统中,包括数据包获取模块和网络层预处理模块,其中,所述数据包获取模块用于获取网桥需要转发的数据包,并获取所述数据包的目的ip地址,其中,所述网桥为:配置在网关设备操作系统中的虚拟设备;所述网络层预处理模块用于对所述目的ip地址进行路由查询,若所述目的ip地有路由命中,则将所述数据包送入当前网桥所在的操作系统协议栈的网络层;其中,所述网桥为通过网桥模式部署到网络拓扑结构中的网关设备。一种网关设备,所述网关设备通过网桥模式部署到网络拓扑结构中,所述网关设备的操作系统中配置有虚拟网桥设备,且所述网关设备的操作系统中内置有上述基于网桥实现三层路由转发的系统。较好地,所述网关设备的操作系统包括但不限于linux操作系统,并且所述网关设备支持ipv4和/或ipv6的三层路由转发。一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行上述基于网桥实现三层路由转发的方法。与现有技术相比,本发明提供的基于网桥实现三层路由转发的方法、系统及网关设备具有以下有益效果:本发明提供的基于网桥实现三层路由转发的方法,首先获取网桥需要转发的数据包的目的ip地址,当数据包的目的ip地址有路由命中时,将数据包送回当前网桥的操作系统协议栈,则该数据包自动跳过数据链路层直接进入网络层进行基于ip地址的路由转发,无需手动为以网桥模式部署到现有网络拓扑中的网关设备添加静态路由即可实现数据包的三层路由转发,方便于快速部署新的网关设备。本发明提供的基于网桥实现三层路由转发的系统,采用上述方法,在网桥处理接收到的数据包时筛选出需要按ip地址进行路由转发的数据包,并将该数据包直接送入操作系统协议栈的网络层,以减少网络拓扑工作的作业量,方便于在现有的网络拓扑结构中快速部署新的网关设备。本发明提供的网关设备,内置有上述基于网桥实现三层路由转发的系统,在以网桥模式部署到现有网络拓扑结构中时,无需手动添加静态路由即可实现数据包的三层路由转发,减少了网络拓扑工作的作业量。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为现有技术中网关设备以网桥模式部署到现有网络拓扑结构中时转发数据的执行过程示意图;图2为本发明实施例中基于网桥实现三层路由转发的方法流程示意图;图3为本发明实施例中基于网桥实现三层路由转发的方法执行过程示意图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。实施例一请参阅图2或图3,一种基于网桥实现三层路由转发的方法,包括:通过网桥的内网从属物理接口获取网桥需要转发的数据包,并获取该数据包的目的ip地址,其中,本实施例中的网桥为:配置在网关设备操作系统中的虚拟设备;对上述目的ip地址进行路由查询,若有该目的ip地址有路由命中,则将该数据包送入当前网桥所在的操作系统协议栈的网络层,以实现对该数据包进行三层路由转发。本发明提供的基于网桥实现三层路由转发的方法,首先获取网桥需要转发的数据包的目的ip地址,当数据包中的目的ip地址有路由命中时,将数据包送入当前网桥的操作系统协议栈,则该数据包自动跳过数据链路层直接进入网络层进行基于ip地址的路由转发,无需手动为以网桥模式部署到现有网络拓扑中的网关设备添加静态路由即可实现数据包的三层路由转发,方便于快速部署新的网关设备。具体实施中,上述作为网桥部署到现有网络拓扑结构中的网关设备,操作系统包括但不限于linux操作系统,并且支持ipv4和/或ipv6的三层路由转发,且该网关设备操作系统中配置的虚拟网桥设备,配置有虚拟接口、内网从属物理接口和外网从属物理接口。本领域技术人员应当理解的是,linux内核是通过一个虚拟的网桥设备来实现桥接的,而运行着linux内核的机器本身就是一台主机,有可能就是网络报文(数据包)的目的地,其收到的数据包不仅可能被转发或被丢弃,还可能被送到网络协议栈的上层(网络层),从而被当前设备自己消化。以一台基于linux操作系统3.18内核的vpn网关为例,该vpn网关的操作系统中已使用brctl命令配置了虚拟接口名为br0的虚拟的网桥设备,该网桥还被配置了内网从属物理接口eth0和外网从属物理接口eth1。这个虚拟的网桥设备可以绑定若干个以太网接口设备,从而将它们桥接起来。然后利用入口函数从网桥从属物理接口接收数据包,并从中筛选出接收自内网从属物理接口eth0的数据包。在具体实施中,可以利用linux3.18内核源代码文件br_input.c中的br_handle_frame函数作为处理接收自网桥从属物理接口的数据包的入口函数,再判断sk_buff类型的结构体所指的数据包是否接收自内网从属物理接口eth0以筛选出接收自内网从属物理接口eth0的数据包。对于接收自内网从属物理接口eth0的数据包,进一步获取数据包的目的ip地址,具体方法包括:在网桥所在的操作系统内核(网关设备的操作系统内核)的处理网桥从属物理接口数据包的入口函数中,判断数据包中是否包含ip数据报;若包含ip数据报,则解析得到ip数据报中的目的ip地址;若不包含ip数据报,则将数据包转发到当前网桥的外网从属物理接口。具体实施中,可以通过识别数据包的网络层协议是否为ip协议,判断数据包中是否包含ip数据报,以及通过解析ip数据报的报头得到目的ip地址。这种方式可以方便快捷的识别出包含ip数据报的数据包并获取到该ip数据报中的目的ip地址。本实施例提供的基于网桥实现三层路由转发的方法中,对所述目的ip地址进行路由查询的方法包括但不限于:调用网桥所在的操作系统内核中的路由查询api,并将目的ip作为路由查询参数,查询路由表;若路由查询api返回有效的路由表项,则目的ip有路由命中,并将数据包送入当前网桥所在的操作系统协议栈的网络层;否则,目的ip没有路由命中,并将数据包转发到当前网桥的外网从属物理接口。仍以上述基于linux操作系统3.18内核的vpn网关中配置的虚拟网桥设备实现数据包的三层路由转发为例,以目的ip地址为参数调用linux内核中ipv4路由查询的关键api“ip_route_output_key函数”查询路由表,若返回的rtable指针不为null(空指针)且rtable所指的路由项不是默认路由,则表示有路由命中;其中,默认路由即0.0.0.0/0,也就是如果没有命中到特定网段的路由,就会返回这一条,这里我们认为它没有路由命中。请继续参阅图3,对所述目的ip地址进行路由查询之后,将包含有路由命中的目的ip地址的数据包送入当前网桥所在的操作系统协议栈的网络层,具体方法包括:将数据包中以太网帧的mac地址修改为当前网桥的虚拟接口的mac地址,同时将数据包的接收接口修改为当前网桥的虚拟接口;调用网桥的网卡数据包接收api,将修改后的数据包发送到网桥所在的操作系统协议栈的网络层。在具体实施中,仍以上述基于linux操作系统3.18内核的vpn网关中配置的虚拟网桥设备实现数据包的三层路由转发为例,将该包含有路由命中的目的ip地址的数据包的以太网帧中的目的mac地址修改为网桥虚拟接口br0的mac地址,并将数据包接收接口skb->dev指针修改为网桥虚拟接口br0对应的net_device结构体,然后调用网卡数据包接收api“netif_rx”将数据包重新送回协议栈。这是因为,如果数据包的目的mac地址为本地mac地址,该数据包会被传递给上层协议栈,实现数据包从二层(数据链路层)到三层(网络层)的层间传递。之后,该数据包就会跳过数据链路层而直接进入协议栈的网络层,进行真正的ip协议解析、路由查询和三层转发。同理,本领域技术人员应当理解的是,若利用网关设备中配置的虚拟网桥设备实现ipv6协议下的路由和转发,可采用类似的方法实现,也在本发明的保护范围内。本发明提供的基于网桥实现三层路由转发的方法,实现了将数据包跳过数据链路层直接进入网络层以进行基于ip地址的路由转发,无需手动为以网桥模式部署到现有网络拓扑中的网关设备添加静态路由即可实现数据包的三层路由转发,方便于快速部署新的网关设备。实施例二本发明是实施例提供一种基于网桥实现三层路由转发的系统,该系统内置于网关设备的操作系统中,并且该网关设备的操作系统中还配置有虚拟网桥设备。本实施例提供的基于网桥实现三层路由转发的系统包括:数据包获取模块和网络层预处理模块。其中,数据包获取模块用于获取网桥需要转发的数据包,并获取数据包的目的ip地址,其中,网桥为:配置在网关设备操作系统中的虚拟设备;网络层预处理模块用于对所述目的ip地址进行路由查询,若有路由命中,则将数据包送入当前网桥所在的操作系统协议栈的网络层。本发明提供的基于网桥实现三层路由转发的系统,采用上述实施例一提供的基于网桥实现三层路由转发的方法,在网桥处理接收到的数据包时筛选出需要按ip地址进行路由转发的数据包,并将该数据包直接送入操作系统协议栈的网络层,以减少网络拓扑工作的作业量,方便于在现有的网络拓扑结构中快速部署新的网关设备。与现有技术相比,本发明实施例提供的基于网桥实现三层路由转发的系统的有益效果与上述实施例一提供的基于网桥实现三层路由转发的方法的有益效果相同,且该系统中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。实施例三一种网关设备,网关设备通过网桥模式部署到网络拓扑结构中,网关设备的操作系统中配置有虚拟网桥设备,且网关设备的操作系统中内置有上述实施例二中的基于网桥实现三层路由转发的系统。具体实施中,该网关设备操作系统包括但不限于linux操作系统,并且网关设备支持ipv4和/或ipv6的三层路由转发。本发明提供的网关设备,内置有上述基于网桥实现三层路由转发的系统,该网关设备在以网桥模式部署到现有网络拓扑结构中时,无需手动添加静态路由即可实现数据包的三层路由转发,减少了网络拓扑工作的作业量。与现有技术相比,由于该网关设备内置的基于网桥实现三层路由转发的系统,采用上述实施例一所述的基于网桥实现三层路由转发的方法,因此,本发明实施例提供的网关设备的有益效果与上述实施例一提供的基于网桥实现三层路由转发的方法的有益效果相同,且该网关设备中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。实施例四本发明实施例提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,计算机可读程序指令用于执行上述实施例一中的基于网桥实现三层路由转发的方法。本发明实施例提供的计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。上述计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。或者,上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定,例如,数据包获取模块还可以被描述为“用于获取网桥需要转发的数据包,并获取数据包的目的ip地址的模块”。本发明提供的计算机可读存储介质,存储有用于执行上述实施例一中提供的基于网桥实现三层路由转发的方法的计算机可读程序指令,实现了将数据包跳过数据链路层直接进入网络层以进行基于ip地址的路由转发,无需手动为以网桥模式部署到现有网络拓扑中的网关设备添加静态路由即可实现数据包的三层路由转发,方便于快速部署新的网关设备。与现有技术相比,本发明实施例提供的计算机可读存储介质的有益效果与上述实施例一提供的基于网桥实现三层路由转发的方法的有益效果相同,在此不做赘述。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1