CN111131037B - 基于虚拟网关的数据传输方法、装置、介质与电子设备 - Google Patents
基于虚拟网关的数据传输方法、装置、介质与电子设备 Download PDFInfo
- Publication number
- CN111131037B CN111131037B CN201911377530.7A CN201911377530A CN111131037B CN 111131037 B CN111131037 B CN 111131037B CN 201911377530 A CN201911377530 A CN 201911377530A CN 111131037 B CN111131037 B CN 111131037B
- Authority
- CN
- China
- Prior art keywords
- data packet
- virtual gateway
- virtual
- data
- address
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/14—Routing performance; Theoretical aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
Abstract
本公开提供了一种基于虚拟网关的数据传输方法、基于虚拟网关的数据传输装置、计算机可读存储介质及电子设备,涉及计算机技术领域。所述方法包括:接收数据包;通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,所述虚拟网关通过在物理网卡中配置单根虚拟化功能创建;通过所述开放虚拟交换机确定所述数据包的转发规则;通过所述内核协议栈确定所述数据包的目标地址;根据所述转发规则将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址。本公开可以提高网关节点的数据传输性能,减少系统开销,增强系统灵活性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种基于虚拟网关的数据传输方法、基于虚拟网关的数据传输装置、计算机可读存储介质与电子设备。
背景技术
在网络系统中,网关是连接不同通信系统,实现数据互通的重要设备,具体的,网关可以根据不同系统的通信协议,利用协议对应的接口进行软件连接,从而通过数据接收、提取、发送的过程实现数据传输。
目前,网关主要是通过在满足相应处理需求的计算机设备上开发数据处理软件实现的,因此,网关的数据传输性能主要依赖于计算机设备的处理能力,当传输数量较大或计算机处理能力较差时,数据传输效率不高,并且当网络功能等发生变化时,通常需要使用不同的计算机设备,网络结构灵活性不强。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开提供了一种基于虚拟网关的数据传输方法、基于虚拟网关的数据传输装置、计算机可读存储介质与电子设备,进而至少在一定程度上改善现有技术中网关数据传输效率不高的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种基于虚拟网关的数据传输方法,所述方法包括:接收数据包;通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,所述虚拟网关通过在物理网卡中配置单根虚拟化功能创建;通过所述开放虚拟交换机确定所述数据包的转发规则;通过所述内核协议栈确定所述数据包的目标地址;根据所述转发规则将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址。
在本公开的一种示例性实施方式中,在接收数据包时,所述方法还包括:解析所述数据包的类型,以确定所述数据包的内部流转路径。
在本公开的一种示例性实施方式中,所述解析所述数据包的类型,以确定所述数据包的内部流转路径,包括:当确定所述数据包为内网发送至外网的数据包时,确定所述数据包的内部流转路径为第一流转路径;所述通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,包括:通过虚拟网关的接收端口,将所述数据包传输至开放虚拟交换机;在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述内核协议栈。
在本公开的一种示例性实施方式中,所述通过虚拟网关的接收端口,将所述数据包传输至开放虚拟交换机包括:通过宿主端将所述数据包封装到虚拟扩展局域网隧道中;从所述虚拟扩展局域网隧道中将所述数据包传输至虚拟网关的接收端口,以通过所述接收端口进入所述虚拟网关;通过所述虚拟网关将所述数据包传输至开放虚拟交换机。
在本公开的一种示例性实施方式中,所述解析所述数据包的类型,以确定所述数据包的内部流转路径,还包括:当确定所述数据包为外网发送至内网的数据包时,确定所述数据包的内部流转路径为第二流转路径;所述通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,包括:通过虚拟网关的接收端口,将所述数据包传输至内核协议栈;在所述内核协议栈中,解析所述数据包的目标地址,并将所述数据包传输至开放虚拟交换机;在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述虚拟网关的发送端口。
在本公开的一种示例性实施方式中,所述通过虚拟网关的接收端口,将所述数据包传输至内核协议栈包括:通过宿主端将所述数据包封装到虚拟扩展局域网隧道中;从所述虚拟扩展局域网隧道中将所述数据包传输至虚拟网关的接收端口,以通过所述接收端口进入所述虚拟网关;通过所述虚拟网关将所述数据包传输至内核协议栈。
在本公开的一种示例性实施方式中,所述在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,包括:提取所述数据包的关键字;将所述数据包的关键字与各所述转发规则的关键字进行匹配,以确定用于匹配所述数据包的目标转发规则;获取所述目标转发规则中的动作数据,以按照所述动作数据对所述数据包进行转发。
在本公开的一种示例性实施方式中,所述通过所述内核协议栈确定所述数据包的目标地址,包括:通过所述内核协议栈解析所述数据包的源地址和目标地址;当确定所述数据包为内网发送至外网的数据包时,根据预先配置的网络地址映射关系将所述源地址由内网地址映射为外网地址;当确定所述数据包为外网发送至内网的数据包时,根据预先配置的网络地址映射关系将所述目标地址由外网地址映射为内网地址。
在本公开的一种示例性实施方式中,在通过所述内核协议栈确定所述数据包的源地址和目标地址时,所述方法还包括:根据所述网络地址映射关系,确定所述源地址和所述目标地址是否符合预先配置的安全规则,以对所述数据包进行安全访问控制。
在本公开的一种示例性实施方式中,所述将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址包括:根据所述数据包的目标地址,确定所述数据包的路由数据;将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述路由数据中的下一节点,以通过所述下一节点向所述目标地址发送所述数据包。
根据本公开的第二方面,提供一种基于网关的数据传输装置,所述装置包括:接收模块,用于接收数据包;传输模块,用于通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,所述虚拟网关通过在物理网卡中配置单根虚拟化功能创建;第一确定模块,用于通过所述开放虚拟交换机确定所述数据包的转发规则;第二确定模块,用于通过所述内核协议栈确定所述数据包的目标地址;发送模块,用于根据所述转发规则将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址。
在本公开的一种示例性实施方式中,所述接收模块用于解析所述数据包的类型,以确定所述数据包的内部流转路径。
在本公开的一种示例性实施方式中,所述接收模块通过执行以下方法,解析所述数据包的类型,从而确定所述数据包的内部流转路径:当确定所述数据包为内网发送至外网的数据包时,确定所述数据包的内部流转路径为第一流转路径;所述传输模块通过执行以下方法,将所述数据包传输至开放虚拟交换机和内核协议栈:通过虚拟网关的接收端口,将所述数据包传输至开放虚拟交换机;在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述内核协议栈。
在本公开的一种示例性实施方式中,所述传输模块通过执行以下方法,将所述数据包传输至开放虚拟交换机:通过宿主端将所述数据包封装到虚拟扩展局域网隧道中;从所述虚拟扩展局域网隧道中将所述数据包传输至虚拟网关的接收端口,以通过所述接收端口进入所述虚拟网关;通过所述虚拟网关将所述数据包传输至开放虚拟交换机。
在本公开的一种示例性实施方式中,所述接收模块还通过执行以下方法,解析所述数据包的类型,从而确定所述数据包的内部流转路径:当确定所述数据包为外网发送至内网的数据包时,确定所述数据包的内部流转路径为第二流转路径;所述传输模块通过执行以下方法,将所述数据包传输至开放虚拟交换机和内核协议栈:通过虚拟网关的接收端口,将所述数据包传输至内核协议栈;在所述内核协议栈中,解析所述数据包的目标地址,并将所述数据包传输至开放虚拟交换机;在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述虚拟网关的发送端口。
在本公开的一种示例性实施方式中,所述传输模块通过执行以下方法,将所述数据包传输至内核协议栈:通过宿主端将所述数据包封装到虚拟扩展局域网隧道中;从所述虚拟扩展局域网隧道中将所述数据包传输至虚拟网关的接收端口,以通过所述接收端口进入所述虚拟网关;通过所述虚拟网关将所述数据包传输至内核协议栈。
在本公开的一种示例性实施方式中,所述传输模块还通过执行以下方法,匹配所述数据包的转发规则,对数据包进行转发:提取所述数据包的关键字;将所述数据包的关键字与各所述转发规则的关键字进行匹配,以确定用于匹配所述数据包的目标转发规则;获取所述目标转发规则中的动作数据,以按照所述动作数据对所述数据包进行转发。
在本公开的一种示例性实施方式中,所述第二确定模块通过执行以下方法,以通过所述内核协议栈确定所述数据包的目标地址:通过所述内核协议栈解析所述数据包的源地址和目标地址;当确定所述数据包为内网发送至外网的数据包时,根据预先配置的网络地址映射关系将所述源地址由内网地址映射为外网地址;当确定所述数据包为外网发送至内网的数据包时,根据预先配置的网络地址映射关系将所述目标地址由外网地址映射为内网地址。
在本公开的一种示例性实施方式中,在通过所述内核协议栈确定所述数据包的源地址和目标地址时,所述第二确定模块还通过执行以下方法,对所述数据包进行安全访问控制:根据所述网络地址映射关系,确定所述源地址和所述目标地址是否符合预先配置的安全规则。
在本公开的一种示例性实施方式中,所述发送模块通过执行以下方法,向所述目标地址发送所述数据包:根据所述数据包的目标地址,确定所述数据包的路由数据;将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述路由数据中的下一节点。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种基于虚拟网关的数据传输方法。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种基于虚拟网关的数据传输方法。
本公开具有以下有益效果:
本示例性实施方式提出了一种基于虚拟网关的数据传输方法和基于虚拟网关的数据传输装置,所提方法通过虚拟网关的接收端口,将接收到的数据包传输至开放虚拟交换机和内核协议栈,并分别通过开放虚拟交换机确定数据包的转发规则和内核协议栈确定数据包的目标地址,从而根据转发规则将数据包传输至虚拟网关的发送端口,通过虚拟网关的发送端口将数据包发送至目标地址。一方面,本示例性实施方式通过单根虚拟化创建的虚拟网关可以直接使用一个或多个物理资源,建立了虚拟环境与硬件的访问“桥梁”,从而提高了虚拟网关的数据传输效率,节省了创建网关的设备成本;另一方面,通过在开放虚拟交换机中匹配转发规则,减少了数据包在内核空间到用户空间的资源消耗,并且通过开放虚拟交换机结合内核协议栈的方式实现了基于内核空间的数据包的快速转发,从而进一步提升了数据包的传输效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本示例性实施方式中一种数据传输架构的示意图;
图2示出本示例性实施方式中一种虚拟网关的结构示意图;
图3示出本示例性实施方式中一种基于虚拟网关的数据传输方法的流程图;
图4出本示例性实施方式中一种基于虚拟网关的数据传输方法的子流程图;
图5出本示例性实施方式中另一种基于虚拟网关的数据传输方法的子流程图;
图6出本示例性实施方式中一种虚拟网关服务器的结构示意图;
图7示出本示例性实施方式中一种基于虚拟网关的数据传输装置的结构框图;
图8示出本示例性实施方式中一种用于实现上述方法的计算机可读存储介质;
图9示出本示例性实施方式中一种用于实现上述方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
本公开的示例性实施方式首先提供了一种基于虚拟网关的数据传输方法。其中,虚拟网关(Virtual Gateway,VG)可以在位于相同或不同的NAT(Network AddressTranslation,网络地址转换)或者防火墙之后的多个端点之间通过桥联实现语音和相应的信令传输。具体的,对于使用不同通信协议进行交流的通信网络,虚拟网关可以在已接收的公共IP(Internet Protocol,互联网协议)地址之间建立交叉连接,并向呼叫协调器提供交叉连接ID(Identity document,标识),该呼叫协调器可以将ID传递给每个网络端点。
图1示出了本示例性实施方式的一种数据传输架构示意图,如图所示,数据传输架构100可以包括客户端110、交换机120、虚拟网关服务器130、路由器140和外网150,其中,客户端110和交换机120构成了内部局域网,以下简称内网,示意性地,客户端110可以包括客户端111和客户端112;交换机120可以用于与内网中的客户端进行连接,可以为每个客户端提供独享的电信号通路;虚拟网关服务器130可以是虚拟网关所在的计算机设备,用于对内外网之间的数据包进行处理,并将其发送至目标地址;路由器140可以根据数据包的目标地址确定网络中转发数据包的每个节点,通过每个节点数据包可以被传输至目标地址;外网150可以是不同地区局域网或城域网计算机通信的远程网络,也可以称为广域网。
在上述示意性架构中,内网是指一个小范围的计算机互联网络,也可以称为局域网,例如可以是一个企业、家庭或学校等的网络架构。此外,需要说明的是,上述数据传输架构100中的设备数目仅作为示意性说明,例如,内网中可以包括任意数目的客户端和交换机,虚拟网关服务器也可以是由多个服务器组成的服务器集群等。
图2示出了本示例性实施方式中一种虚拟网关的结构示意图,如图所示,虚拟网关200可以包括内核空间210和用户空间220。在内核空间220中,还可以包括开放虚拟交换机的网桥221、内核协议栈222、接收端口223和发送端口224;在用户空间210中,还可以包括开放虚拟交换机的流表下发模块OVS-VSWITCHD211。在该结构中,数据包可以通过上下行链路传递至虚拟网关。需要说明的是,此处上下行仅代表数据包传输的路线,不表示数据包传输的方向,例如,当数据包是由外网传输至内网时,其下行链路也可以是上行链路,上行链路也可以是上行链路。
其中,开放虚拟交换机(Open VSwitch,OVS)是一种支持OpenFlow(一种网络通信协议)协议的虚拟交换机,可以通过远端的控制器来管理数据包,其一般包括用户空间和内核空间;开放虚拟交换机的流表下发模块OVS-VSWITCHD可以用于下发一些流表规则到开放虚拟交换机的网桥,或者根据首包被送到控制器来下发新的流表规则;网桥可以根据流表规则匹配数据包,并通过匹配结果来执行相应的动作,如丢弃或转发数据包等;内核协议栈提供了丰富的协议支持和调试手段,可以为多个网络应用服务,如处于网络传输层的TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据包协议)协议,其分别是一种面向连接的、可靠的、基于字节流的传输层通信协议、一种无连接的传输层协议,可以提供面向事务的简单的不可靠信息传送服务;接收端口和发送端口分别是虚拟网关接收数据包和发送数据包的端口或接口,特别的,接收端口和发送端口的功能可以依据数据包的传输方向进行变换,即如果将由内网发送至外网的数据包所经过的端口分别称为接收端口和发送端口,则当数据包是由外网发送至内网时,其接收端口可以是内网发送外网数据包的发送端口,发送端口可以是内网发送外网数据包的接收端口。
下面以虚拟网关为执行主体,对本示例性实施方式中的数据传输方法进行详细阐述:
图3示出了本示例性实施方式的一种流程,可以包括以下步骤S310~S350:
步骤S310.接收数据包。
在虚拟网关接收数据包前,其上一节点可以通过路由信息解析每个数据包的网络地址,以将每个数据包传输至虚拟网关,此时虚拟网关可以通过接收端口依次接收每个数据包。
数据包可以是由内网发送至外网,也可以是由外网发送至内网,也就是说数据包在内外网之间的数据流转方向可以是相反的,相应地,其在虚拟网关内部的数据流转方向也可以是相反的,因此,在一种可选的实施方式中,在接收数据包时,虚拟网关可以通过解析数据包的类型,确定数据包在虚拟网关中的内部流转路径。
进一步的,虚拟网关解析数据包的类型可以通过读取数据包对应字段的地址数据实现,例如数据包的头部或者尾部可以包含确定字节的地址信息,虚拟网关可以通过读取上述字节的地址信息,确定数据包的源地址信息,从而确定数据包在内网和外网之间的流转路径,例如:在如图1所示的网络结构中,若在虚拟网关服务器130中,虚拟网关接收到的数据包的源IP地址为10.1.1.10,目的IP地址为114.114.114.114,若根据虚拟网关中配置的路由信息可以确定10.1.1.10为内网中某个客户端的IP地址,114.114.114.114为一个外网IP,则可以确定上述数据包的数据传输方向为由内网至外网;若虚拟网关接收到的数据包的源IP地址为42.42.42.42,目的IP地址为114.114.114.114,根据虚拟网关的路由信息,可以确定42.42.42.42为一个公网IP,则可以确定上述数据包的数据传输方向为由外网至内网。此外,需要说明的是,上述虚拟网关解析数据包的方式仅作为示例性说明,且不应对本示例性实施方式造成范围限定。
在确定数据包在虚拟网关中的内部流转路径为由内网发送至外网时,可以将该数据包的内部流转路径确定为第一流转路径;在确定数据包在虚拟网关中的内部流转路径为由外网发送至内网时,可以将该数据包的内部流转路径确定为第二流转路径。
步骤S320.通过虚拟网关的接收端口,根据数据包的内部流转路径将数据包传输至开放虚拟交换机和内核协议栈,上述虚拟网关通过在物理网卡中配置单根虚拟化功能创建。
其中,虚拟网关的接收端口可以是设备或模块之间通信交流的接口,一般可以分为虚拟端口和物理端口,虚拟端口指计算机内部或交换机路由器内的端口,通常不可见,例如计算机中的80端口、21端口、23端口等,物理端口也可以称为接口,是可见端口,例如计算机背板的RJ45网口、交换机、路由器和集线器等的RJ45端口等;物理网卡是一种网络组件,是局域网中连接计算机和传输设备的接口,可以为计算机之间提供透明的数据传输;单根虚拟化技术是一种基于硬件的虚拟化解决方法,该技术允许在虚拟机之间高效共享PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以使虚拟网关获得类似于本机性能的I/O性能。
在确定数据包在虚拟网关内的内部流转路径后,可以通过虚拟网关的接收端口将数据包按照对应的内部流转路径发送至开放虚拟交换机和内核协议栈,例如,在如图2所示的虚拟网关中,通过虚拟网关的接收端口,数据包可以依次被传输至开放虚拟交换机和内核协议栈,也可以沿相反的方向,依次被传输至内核协议栈和开放虚拟交换机。
根据步骤S310中确定数据包内部流转路径的方法可知,数据包的内部流转路径可以包括第一流转路径和第二流转路径,在一种可选的实施方式中,参考图4所示,当确定数据包在虚拟网关中的内部流转路径为第一流转路径时,步骤S320可以通过以下步骤S410~S420实现:
步骤S410.通过虚拟网关的接收端口,将数据包传输至开放虚拟交换机。
当数据包被传输至虚拟网关服务器时,可以通过虚拟网关的接收端口接收上述数据包,并将其转发至开放虚拟交换机的网桥中。
步骤S420.在开放虚拟交换机的网桥中,匹配数据包的转发规则,以将数据包转发至内核协议栈。
其中,网桥(DataPath)是指开放虚拟交换机中用以实现匹配和快速转发的模块。
在开放虚拟交换机的网桥中,可以通过解析数据包查询上述数据包的转发规则,若在网桥中查询到上述数据包的转发规则,则可以根据转发规则对数据包进行匹配处理,以将上述数据包发送至虚拟网关的内核协议栈;若在网桥中未查询到上述数据包的转发规则,则可以向如图2所示的虚拟网关中的流表下发模块OVS-VSWITCHD发送查询请求,以获取上述数据包的转发规则,然后根据该转发规则对上述数据包进行匹配处理,以将上述数据包发送至虚拟网关的内核协议栈。
相应地,参考图5所示,当确定数据包在虚拟网关中的内部流转路径为第二流转路径时,步骤S320可以通过以下步骤S510~S530实现:
步骤S510.通过虚拟网关的接收端口,将数据包传输至内核协议栈。
由于数据包是由外网发送至内网的,为了确定数据包在内网中的目的主机,可以在数据包被传输至虚拟网关后,通过接收端口将数据包传输至内核协议栈,以确定数据包的目的地址,也就是目的主机。
步骤S520.在内核协议栈中,解析数据包的目标地址,并将数据包传输至开放虚拟交换机。
在内网中,多个主机可以共用一个外网IP,因此,在内核协议栈中,通常可以设置一个NAT模块,来解析数据包的地址信息,将数据包的目的地址替换为内网中目的主机的地址数据。在完成地址转换后,将数据包传输至开放虚拟交换机。
步骤S530.在开放虚拟交换机的网桥中,匹配数据包的转发规则,以将数据包转发至虚拟网关的发送端口。
在开放虚拟交换机中,网桥可以在接收到外网发送的数据包后,通过匹配转发规则,对数据包进行相应的处理,具体的,每条转发规则可以由一系列字段组成,如基本字段、条件字段和动作字段,其中,基本字段可以包括生效时间、所属表项、优先级等;条件字段可以包括输入端口号、源目的MAC(Media Access Control Address,媒体存取控制位址)地址、源目的IP地址和数据包类型等;动作字段可以包括丢弃、转发等。网桥可以通过解析数据包获取其字段信息,并将字段信息与转发规则的基本字段和条件字段进行匹配,以确定上述数据包的动作字段,按照该动作字段对上述数据包进行处理,最后将数据包转发至虚拟网关的发送端口。
步骤S330.通过开放虚拟交换机确定数据包的转发规则。
其中,转发规则可以看作是OpenFlow对网络设备的数据转发功能的一种抽象,可以包括网络中各个层次的网络配置信息。
每个转发规则可以包括匹配域数据和动作域数据,当开放虚拟交换机接收到数据包时,可以通过获取数据包的匹配字段信息确定数据包的优先级,该匹配字段信息可以被封装在数据包中,也可以作为一个新的数据包发送至开放虚拟交换机,按照上述数据包的优先级依次匹配本地保存的转发规则中的匹配域数据,可以将发生最高优先级的转发规则作为匹配结果,从而根据对应的转发规则中的动作域数据对数据包进行相应的处理。
为了减少单独发送匹配数据包对网络资源的占用和匹配信息的多余字节对数据包数据量的增加,在数据包中可以预先封装一定字节的匹配字段数据,该匹配字段数据可以仅包括匹配信息的必要信息,由此,在一种可选的实施方式中,步骤S330确定数据包的转发规则的方法还可以通过以下方式实现:
提取数据包的关键字;
将数据包的关键字与各转发规则的关键字进行匹配,以确定用于匹配数据包的目标转发规则;
获取目标转发规则中的动作数据,以按照上述动作数据对数据包进行转发。
其中,数据包的关键字是指用以匹配转发规则的关键字段信息,例如可以包括转发规则中优先级较高的匹配字段信息,如数据包的源目的MAC地址、源目的IP地址和数据包类型等。
通过解析获取数据包的关键字信息,并将该关键字信息与开放虚拟交换机本地存储的转发规则中的匹配字段进行匹配,以确定用于匹配上述数据包的目标转发规则,获取目标转发规则中的动作数据,按照该动作数据对上述数据包进行处理,如输出数据包到指定的端口,从而实现数据包的转发。
步骤S340.通过内核协议栈确定数据包的目标地址。
其中,目标地址可以是数据包在网络中最终到达的主机或服务器等的地址,具体的,当数据包是由内网发送至外网时,其目标地址可以是外网的IP地址;当数据包是由外网发送至内网时,其目标地址可以是内网中任一主机的IP地址。
通过内核协议栈中的网络地址转换模块可以实现数据包的地址转换,参考图2所示,以内核协议栈中的NETFILTER架构为例,该架构是Linux2.4.x之后新一代的Linux防火墙机制,是Linux内核的一个子系统,由于其采用模块化设计,故具备较好的可扩展性。具体的,在NETFILTER中的网络地址转换模块中,通常可以配置相应的地址转换信息,当数据包是由内网发送至外网时,其目的IP是外网IP,源IP是内网中的主机IP,网络地址转换模块可以根据其地址转换信息将源IP地址转换为虚拟网关服务器对应的外网IP;当数据包是由外网发送至内网时,其目的IP为虚拟网关服务器对应的外网IP,源IP是公网IP,网络地址转换模块可以相应地将数据包的目的IP转换为内网中对应的主机IP。
为了使内核协议栈在接收到数据包时及时解析数据包中封装的地址信息,可以在内核协议栈中预先配置并存储数据包的地址转换关系,由此,在一种可选的实施方式中,步骤S340确定数据包的目标地址的方法可以通过以下方式实现:
通过内核协议栈解析数据包的源地址和目标地址;
当确定数据包为内网发送至外网的数据包时,根据预先配置的网络地址映射关系将源地址由内网地址映射为外网地址;
当确定数据包为外网发送至内网的数据包时,根据预先配置的网络地址映射关系将目标地址由外网地址映射为内网地址。
其中,网络地址映射关系可以是内网和外网之间的路由数据,其可以包括内网和外网中的全局地址。
在接收到数据包时,内核协议栈可以按照相应的通信协议解析数据包,例如按照通信协议规定的字节数读取数据包的头部信息,获取头部信息中对应字节的地址数据,从而确定数据包的目标地址。当内核协议栈通过数据包的地址信息确定数据包为内网发送至外网的数据包时,可以根据数据包的地址数据匹配内核协议栈中预先配置的网络地址映射关系,从而将数据包的源地址由内网地址映射为外网地址,如将数据包的源地址数据更改为虚拟网关服务器访问公网的外网地址;当内核协议栈通过数据包的地址信息确定数据包为外网发送至内网的数据包时,可以相应地将数据包的目标地址由外网地址映射为内网地址,如将数据包的目标地址数据更改为内网中的目标主机地址。
为了提高内外网数据传输的可靠性,在一种可选的实施方式中,在通过内核协议栈确定数据包的源地址和目标地址时,还可以通过以下方式对数据包进行安全访问控制:
根据网络地址映射关系,确定源地址和目标地址是否符合预先配置的安全规则,以对数据包进行安全访问控制。
通过内核协议栈解析数据包的地址数据,确定数据包的源地址信息和目标地址信息,并通过上述源地址信息和目标地址信息匹配预先配置的网络地址映射关系,确定数据包的访问路径是否满足安全条件,从而实现对数据包的安全访问控制。此外,由于NETFILTER架构是Linux2.4.x之后新一代的Linux防火墙机制,上述对数据包的安全访问控制也可以通过内核协议栈中的防火墙机制实现。
步骤S350.根据转发规则将数据包传输至虚拟网关的发送端口,并通过发送端口将数据包发送至目标地址。
根据开放虚拟交换机的转发规则可以确定数据包的输出端口,也就是发送端口,从而将上述数据包传输至对应的发送端口,同时数据包中可以包括内核协议栈中解析得到的目标地址,通过虚拟网关的发送端口可以将上述数据包发送至其对应的目标地址。
通常,虚拟网关服务器与外网设备之间存在多个网络节点,因此,在一种可选的实施方式中,步骤S350可以通过以下方式实现:
根据数据包的目标地址,确定数据包的路由数据;
将数据包传输至虚拟网关的发送端口,并通过发送端口将数据包发送至路由数据中的下一节点,以通过下一节点向目标地址发送数据包。
虚拟网关的发送端口通常配置有相应的路由数据,该路由数据可以配置为全局地址模式,在该模式下,路由数据中包含网络中各个节点的地址信息,因此,在数据包传输至发送端口时,其可以通过匹配数据包的目标地址,确定该数据包到达目标地址的路由数据,根据该路由数据可以确定数据包的下一节点地址,此时虚拟网关的发送端口可以根据上述下一节点地址将数据包传输至下一节点,从而通过下一节点向目标地址发送数据包。
进一步的,图6示出了本示例性实施方式中一种虚拟网关服务器的结构示意图,虚拟网关服务器130可以包括多个虚拟机610,如图中所示的虚拟机611、虚拟机612,通过单根虚拟化技术可以将一张物理网卡620虚拟为多个虚拟功能(Virtual Function,VF),如图中虚拟功能621和622,每个虚拟功能可以连接虚拟机,并独立处理虚拟机I/O。
在步骤S320开放虚拟交换机接收数据包之前,数据包可以通过网络节点之间的传输介质传输至开放虚拟交换机,在一种可选的实施方式中,步骤S410通过虚拟网关的接收端口,将数据包传输至开放虚拟交换机的方法可以通过以下方式实现:
通过宿主端将数据包封装到虚拟扩展局域网隧道中;
从虚拟扩展局域网隧道中将数据包传输至虚拟网关的接收端口,以通过接收端口进入虚拟网关;
通过虚拟网关将数据包传输至开放虚拟交换机。
其中,当数据包的内部流转路径为第一流转路径时,宿主端可以是内网中的任一主机设备,例如可以是如图1所示的客户端111;虚拟扩展局域网(Virtual ExtensibleLocal Area Network,VXLAN)隧道是一种网络虚拟化技术,可以将虚拟网关发送的数据包封装在UDP中,并可以使用物理网络的IP/MAC地址作为外层进行封装,对网络只表现为数据包封装后的参数,不同的虚拟网关可以对应不同的虚拟扩展局域网,每个虚拟扩展局域网可以通过VXLANID来标识,VXLANID又被称为VNI(VXLAN Network Identifier,VXLAN网络标识符),其长度一般为24比特。
由于在如图6所示的虚拟网关服务器中,通过引入开放虚拟交换机流缓存的机制,该机制是使用特征匹配的方式来搜索数据包,当接收到数据包时,可以通过一定的策略从这个数据包中提出某些特征值,并将其与已有的特征库进行比较,如果有相似的特征值,则把相应的数据提出来对比,如果一致,则将数据编码,并把标签发送至开放虚拟交换机,否则,将这个包的特征值保存在特征库中,以供后续使用。通过上述方式可以加快开放虚拟交换机转发数据包的效率,因此,当宿主端发送数据包后,可以通过虚拟扩展局域网隧道对数据包进行封装,并将其发送至开放虚拟交换机。在上述过程中,虚拟扩展局域网隧道对数据包进行封装可以通过增加相应的字节数据,以实现数据封装,例如可以在原始的二层数据帧外添加X字节的VXLAN头、Y字节的UDP头和Z字节的IP头,其分别可以表示某个虚拟扩展局域网、UDP端口号和目的路由地址,通过虚拟扩展局域网隧道将封装后的数据包发送至虚拟网关的接收端口,以进入虚拟网关,虚拟网关在接收到数据包后,可以通过对数据包进行解封装,例如可以读取数据包中头部中的VXLAN头、UDP头和IP头读取数据包,从而将解封装后的数据包传输至开放虚拟交换机。
同样,在内核协议栈接收数据包之前,数据包可以通过网络节点之间的传输介质传输至虚拟网关,在一种可选的实施方式中,步骤S510通过虚拟网关的接收端口,将数据包传输至内核协议栈的方法可以通过以下方式实现:
通过宿主端将数据包封装到虚拟扩展局域网隧道中;
从虚拟扩展局域网隧道中将数据包传输至虚拟网关的接收端口,以通过接收端口进入虚拟网关;
通过虚拟网关将数据包传输至内核协议栈。
其中,当数据包的内部流转路径为第二流转路径时,宿主端可以是外网中的服务器地址。
当宿主端发送数据包后,可以通过虚拟扩展局域网隧道封装数据包,并将封装后的数据包发送至虚拟网关的接收端口,以进入虚拟网关,虚拟网关在接收到数据包后,可以通过对数据包进行解封装,例如可以读取数据包中头部中的字段信息,从而去掉数据包中的多余信息,如首部的VXLAN头,以解析数据包,并将数据包传输至开放内核协议栈。
综上,本示例性实施方式提出了一种基于虚拟网关的数据传输方法和基于虚拟网关的数据传输装置,所提方法通过虚拟网关的接收端口,将接收到的数据包传输至开放虚拟交换机和内核协议栈,并分别通过开放虚拟交换机确定数据包的转发规则和内核协议栈确定数据包的目标地址,从而根据转发规则将数据包传输至虚拟网关的发送端口,通过虚拟网关的发送端口将数据包发送至目标地址。一方面,本示例性实施方式通过单根虚拟化创建的虚拟网关可以直接使用一个或多个物理资源,建立了虚拟环境与硬件的访问“桥梁”,从而提高了虚拟网关的数据传输效率,节省了创建网关的设备成本;另一方面,通过在开放虚拟交换机中匹配转发规则,减少了数据包在内核空间到用户空间的资源消耗,并且通过开放虚拟交换机结合内核协议栈的方式实现了基于内核空间的数据包的快速转发,从而进一步提升了数据包的传输效率。
进一步的,本公开的示例性实施方式提供了一种基于虚拟网关的数据传输装置,参考图7所示,数据传输装置700包括:接收模块710,可以用于接收数据包;传输模块720,可以用于通过虚拟网关的接收端口,根据数据包的内部流转路径将数据包传输至开放虚拟交换机和内核协议栈,虚拟网关通过在物理网卡中配置单根虚拟化功能创建;第一确定模块730,可以用于通过开放虚拟交换机确定数据包的转发规则;第二确定模块740,可以用于通过内核协议栈确定数据包的目标地址;发送模块750,可以用于根据转发规则将数据包传输至虚拟网关的发送端口,并通过发送端口将数据包发送至目标地址。
在本公开的一种示例性实施方式中,接收模块710可以用于解析数据包的类型,以确定数据包的内部流转路径。
在本公开的一种示例性实施方式中,接收模块710可以通过执行以下方法,解析数据包的类型,从而确定数据包的内部流转路径:当确定数据包为内网发送至外网的数据包时,确定数据包的内部流转路径为第一流转路径;传输模块720可以通过执行以下方法,将数据包传输至开放虚拟交换机和内核协议栈:通过虚拟网关的接收端口,将数据包传输至开放虚拟交换机;在开放虚拟交换机的网桥中,匹配数据包的转发规则,以将数据包转发至内核协议栈。
在本公开的一种示例性实施方式中,传输模块720可以通过执行以下方法,将数据包传输至开放虚拟交换机:通过宿主端将数据包封装到虚拟扩展局域网隧道中;从虚拟扩展局域网隧道中将数据包传输至虚拟网关的接收端口,以通过接收端口进入虚拟网关;通过虚拟网关将数据包传输至开放虚拟交换机。
在本公开的一种示例性实施方式中,接收模块710还可以通过执行以下方法,解析数据包的类型,从而确定数据包的内部流转路径:当确定数据包为外网发送至内网的数据包时,确定数据包的内部流转路径为第二流转路径;传输模块720可以通过执行以下方法,将数据包传输至开放虚拟交换机和内核协议栈:通过虚拟网关的接收端口,将数据包传输至内核协议栈;在内核协议栈中,解析数据包的目标地址,并将数据包传输至开放虚拟交换机;在开放虚拟交换机的网桥中,匹配数据包的转发规则,以将数据包转发至虚拟网关的发送端口。
在本公开的一种示例性实施方式中,传输模块720可以通过执行以下方法,将数据包传输至内核协议栈:通过宿主端将数据包封装到虚拟扩展局域网隧道中;从虚拟扩展局域网隧道中将数据包传输至虚拟网关的接收端口,以通过接收端口进入虚拟网关;通过虚拟网关将数据包传输至内核协议栈。
在本公开的一种示例性实施方式中,传输模块720还可以通过执行以下方法,匹配数据包的转发规则,对数据包进行转发:提取数据包的关键字;将数据包的关键字与各转发规则的关键字进行匹配,以确定可以用于匹配数据包的目标转发规则;获取目标转发规则中的动作数据,以按照动作数据对数据包进行转发。
在本公开的一种示例性实施方式中,第二确定模块740可以通过执行以下方法,以通过内核协议栈确定数据包的目标地址:通过内核协议栈解析数据包的源地址和目标地址;当确定数据包为内网发送至外网的数据包时,根据预先配置的网络地址映射关系将源地址由内网地址映射为外网地址;当确定数据包为外网发送至内网的数据包时,根据预先配置的网络地址映射关系将目标地址由外网地址映射为内网地址。
在本公开的一种示例性实施方式中,在通过内核协议栈确定数据包的源地址和目标地址时,第二确定模块740还可以通过执行以下方法,对数据包进行安全访问控制:根据网络地址映射关系,确定源地址和目标地址是否符合预先配置的安全规则。
在本公开的一种示例性实施方式中,发送模块750可以通过执行以下方法,向目标地址发送数据包:根据数据包的目标地址,确定数据包的路由数据;将数据包传输至虚拟网关的发送端口,并通过发送端口将数据包发送至路由数据中的下一节点。
上述装置中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的方案细节内容可以参见方法部分的实施方式内容,因而不再赘述。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
参考图8所示,描述了根据本公开的示例性实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品800可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施方式还提供了一种能够实现上述方法的电子设备。下面参照图9来描述根据本公开的这种示例性实施方式的电子设备900。图9显示的电子设备900仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图9所示,电子设备900可以以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930和显示单元940。
其中,存储单元920存储有程序代码,程序代码可以被处理单元910执行,使得处理单元910执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元910可以执行图3至图5所示的方法步骤等。
存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)921和/或高速缓存存储单元922,还可以进一步包括只读存储单元(ROM)923。
存储单元920还可以包括具有一组(至少一个)程序模块925的程序/实用工具924,这样的程序模块925包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备900也可以与一个或多个外部设备1000(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备900交互的设备通信,和/或与使得该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口950进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例性实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开示例性实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
Claims (10)
1.一种基于虚拟网关的数据传输方法,其特征在于,所述方法包括:
接收数据包;
解析所述数据包的类型,以确定所述数据包的内部流转路径,包括:当确定所述数据包为内网发送至外网的数据包时,确定所述数据包的内部流转路径为第一流转路径,当确定所述数据包为外网发送至内网的数据包时,确定所述数据包的内部流转路径为第二流转路径;
通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,所述虚拟网关通过在物理网卡中配置单根虚拟化功能创建;
通过所述开放虚拟交换机确定所述数据包的转发规则;
通过所述内核协议栈确定所述数据包的目标地址;
根据所述转发规则将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址;
所述通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,包括:
当确定所述数据包的内部流转路径为所述第一流转路径时,通过虚拟网关的接收端口,将所述数据包传输至开放虚拟交换机,在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述内核协议栈;
当确定所述数据包的内部流转路径为所述第二流转路径时,通过虚拟网关的接收端口,将所述数据包传输至内核协议栈,在所述内核协议栈中,解析所述数据包的目标地址,并将所述数据包传输至开放虚拟交换机,在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述虚拟网关的发送端口。
2.根据权利要求1所述的数据传输方法,其特征在于,所述通过虚拟网关的接收端口,将所述数据包传输至开放虚拟交换机包括:
通过宿主端将所述数据包封装到虚拟扩展局域网隧道中;
从所述虚拟扩展局域网隧道中将所述数据包传输至虚拟网关的接收端口,以通过所述接收端口进入所述虚拟网关;
通过所述虚拟网关将所述数据包传输至开放虚拟交换机。
3.根据权利要求1所述的数据传输方法,其特征在于,所述通过虚拟网关的接收端口,将所述数据包传输至内核协议栈包括:
通过宿主端将所述数据包封装到虚拟扩展局域网隧道中;
从所述虚拟扩展局域网隧道中将所述数据包传输至虚拟网关的接收端口,以通过所述接收端口进入所述虚拟网关;
通过所述虚拟网关将所述数据包传输至内核协议栈。
4.根据权利要求1-3任一项所述的数据传输方法,其特征在于,所述在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,包括:
提取所述数据包的关键字;
将所述数据包的关键字与各所述转发规则的关键字进行匹配,以确定用于匹配所述数据包的目标转发规则;
获取所述目标转发规则中的动作数据,以按照所述动作数据对所述数据包进行转发。
5.根据权利要求1所述的数据传输方法,其特征在于,所述通过所述内核协议栈确定所述数据包的目标地址,包括:
通过所述内核协议栈解析所述数据包的源地址和目标地址;
当确定所述数据包为内网发送至外网的数据包时,根据预先配置的网络地址映射关系将所述源地址由内网地址映射为外网地址;
当确定所述数据包为外网发送至内网的数据包时,根据预先配置的网络地址映射关系将所述目标地址由外网地址映射为内网地址。
6.根据权利要求5所述的数据传输方法,其特征在于,在通过所述内核协议栈确定所述数据包的源地址和目标地址时,所述方法还包括:
根据所述网络地址映射关系,确定所述源地址和所述目标地址是否符合预先配置的安全规则,以对所述数据包进行安全访问控制。
7.根据权利要求1所述的数据传输方法,其特征在于,所述将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址包括:
根据所述数据包的目标地址,确定所述数据包的路由数据;
将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述路由数据中的下一节点,以通过所述下一节点向所述目标地址发送所述数据包。
8.一种基于虚拟网关的数据传输装置,其特征在于,所述装置包括:
接收模块,用于接收数据包;
传输模块,用于通过虚拟网关的接收端口,根据所述数据包的内部流转路径将所述数据包传输至开放虚拟交换机和内核协议栈,所述虚拟网关通过在物理网卡中配置单根虚拟化功能创建;
第一确定模块,用于通过所述开放虚拟交换机确定所述数据包的转发规则;
第二确定模块,用于通过所述内核协议栈确定所述数据包的目标地址;
发送模块,用于根据所述转发规则将所述数据包传输至所述虚拟网关的发送端口,并通过所述发送端口将所述数据包发送至所述目标地址;
所述接收模块还用于解析所述数据包的类型,以确定所述数据包的内部流转路径,包括:当确定所述数据包为内网发送至外网的数据包时,确定所述数据包的内部流转路径为第一流转路径,当确定所述数据包为外网发送至内网的数据包时,确定所述数据包的内部流转路径为第二流转路径;
所述传输模块还用于当确定所述数据包的内部流转路径为所述第一流转路径时,通过虚拟网关的接收端口,将所述数据包传输至开放虚拟交换机,在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述内核协议栈,当确定所述数据包的内部流转路径为所述第二流转路径时,通过虚拟网关的接收端口,将所述数据包传输至内核协议栈,在所述内核协议栈中,解析所述数据包的目标地址,并将所述数据包传输至开放虚拟交换机,在所述开放虚拟交换机的网桥中,匹配所述数据包的转发规则,以将所述数据包转发至所述虚拟网关的发送端口。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911377530.7A CN111131037B (zh) | 2019-12-27 | 2019-12-27 | 基于虚拟网关的数据传输方法、装置、介质与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911377530.7A CN111131037B (zh) | 2019-12-27 | 2019-12-27 | 基于虚拟网关的数据传输方法、装置、介质与电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111131037A CN111131037A (zh) | 2020-05-08 |
CN111131037B true CN111131037B (zh) | 2022-04-29 |
Family
ID=70504052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911377530.7A Active CN111131037B (zh) | 2019-12-27 | 2019-12-27 | 基于虚拟网关的数据传输方法、装置、介质与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111131037B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110460731A (zh) * | 2019-08-23 | 2019-11-15 | 深圳市天海世界卫星通信科技有限公司 | 基于卫星网络的通话方法、装置、可读存储介质及系统 |
CN113691572B (zh) * | 2020-05-19 | 2023-09-22 | 中移(成都)信息通信科技有限公司 | 一种数据转发方法、装置、设备及计算机存储介质 |
CN111988221B (zh) * | 2020-08-31 | 2022-09-13 | 网易(杭州)网络有限公司 | 数据传输方法、数据传输装置、存储介质与电子设备 |
CN112671669A (zh) * | 2020-12-24 | 2021-04-16 | 浪潮云信息技术股份公司 | 一种基于OpenFlow虚拟化网络Qos的实现方法及系统 |
CN112769794B (zh) * | 2020-12-30 | 2022-06-21 | 神州绿盟成都科技有限公司 | 一种数据转换方法及装置 |
CN113422729B (zh) * | 2021-04-29 | 2022-08-05 | 全球能源互联网研究院有限公司 | 一种虚拟电厂靶向通信系统及控制方法 |
CN113595905B (zh) * | 2021-07-23 | 2022-11-29 | 平安科技(深圳)有限公司 | 分布式路由方法、装置、设备及存储介质 |
CN113630301B (zh) * | 2021-08-19 | 2022-11-08 | 平安科技(深圳)有限公司 | 基于智能决策的数据传输方法、装置、设备及存储介质 |
CN114244743B (zh) * | 2021-12-10 | 2022-10-21 | 北京天融信网络安全技术有限公司 | 一种资源池的数据包传输方法、装置、设备及介质 |
CN114584529B (zh) * | 2022-01-29 | 2023-06-30 | 中国电子科技集团公司第五十二研究所 | 一种基于nat和虚拟网桥的推理服务器 |
CN115499410B (zh) * | 2022-07-29 | 2023-06-23 | 天翼云科技有限公司 | 基于Linux的NAT穿透方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300060A (zh) * | 2018-03-23 | 2019-10-01 | 北京京东尚科信息技术有限公司 | 用于软件定义网络的通信方法和装置 |
CN110391993A (zh) * | 2019-07-12 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230682A (zh) * | 2016-07-15 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种基于openvswitch openflow协议实现的vxlan网络 |
CN107846358B (zh) * | 2016-09-19 | 2020-07-10 | 北京金山云网络技术有限公司 | 一种数据传输方法、装置及网络系统 |
TWI636679B (zh) * | 2017-02-07 | 2018-09-21 | 財團法人工業技術研究院 | 虛擬區域網路配置系統與方法及其電腦程式產品 |
CN107770010B (zh) * | 2017-09-29 | 2020-05-12 | 烽火通信科技股份有限公司 | 一种基于OpenFlow的家庭组网方法和家庭组网系统 |
CN108199982B (zh) * | 2018-01-03 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 报文处理方法、装置、存储介质和计算机设备 |
CN109803016A (zh) * | 2019-01-24 | 2019-05-24 | 山东超越数控电子股份有限公司 | 一种利用虚拟交换机转发数据包的方法及设备 |
-
2019
- 2019-12-27 CN CN201911377530.7A patent/CN111131037B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300060A (zh) * | 2018-03-23 | 2019-10-01 | 北京京东尚科信息技术有限公司 | 用于软件定义网络的通信方法和装置 |
CN110391993A (zh) * | 2019-07-12 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
"OpenFlow-based virtual TAP using open vswitch and DPDK";SeyeonJeong等;《IEEE》;20180709;全文 * |
"基于DPDK平台的虚拟交换机关键技术研究与实现";张柳霞;《万方数据库》;20180829;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111131037A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111131037B (zh) | 基于虚拟网关的数据传输方法、装置、介质与电子设备 | |
US10541836B2 (en) | Virtual gateways and implicit routing in distributed overlay virtual environments | |
US9602307B2 (en) | Tagging virtual overlay packets in a virtual networking system | |
US10812378B2 (en) | System and method for improved service chaining | |
US11283707B2 (en) | Segment routing with fast reroute for container networking | |
KR101840904B1 (ko) | 가상화된 네트워크와 비-가상화된 네트워크 간 가상화 게이트웨이 | |
CN105612719B (zh) | 使用封装头部中的元数据的高级网络虚拟化 | |
US10182125B2 (en) | Server, physical switch and communication system | |
CN113691589B (zh) | 报文传输方法、装置及系统 | |
CN113326228A (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
US9137199B2 (en) | Stateful NAT64 function in a distributed architecture | |
CN114518969A (zh) | 进程间通信方法、系统、存储介质和计算机设备 | |
US9929951B1 (en) | Techniques for using mappings to manage network traffic | |
CN113709016B (zh) | 通信系统以及通信方法、装置、设备和存储介质 | |
CN116418726A (zh) | 源路由编码方法、数据包路由方法、装置、设备及介质 | |
CN113114565B (zh) | 数据报文转发方法及装置、存储介质及电子设备 | |
CN116582516B (zh) | 数据传输方法、设备、系统、介质及程序产品 | |
US11853253B1 (en) | Transaction based remote direct memory access | |
CN115514771A (zh) | 数据传输方法、装置、电子设备及计算机可读存储介质 | |
CN116208544A (zh) | 报文发送方法、系统、装置、设备及存储介质 | |
CN115766557A (zh) | 一种路由系统、会话保持表的表项生成方法及相关装置 | |
CN117395101A (zh) | 跨数据中心的通信方法、系统、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |