一种数据传输方法、服务器及计算机可读存储介质与流程

文档序号:20203102发布日期:2020-03-27 20:50阅读:107来源:国知局
一种数据传输方法、服务器及计算机可读存储介质与流程

本发明实施例涉及数据处理领域,特别涉及一种数据传输方法、服务器及计算机可读存储介质。



背景技术:

现有的用户态协议栈与内核态协议栈通信的实现方式是:用户态协议栈的每个网口,在内核态协议栈上都创立一个虚拟网口,针对不同的应用场景,当判断数据流为控制流时,就会直接将报文发送给内核态协议栈。配置上,每个内核态协议栈上的网口ip/netmask/mac参数要和用户态协议栈一致。

然而,发明人发现现有技术中至少存在如下问题:网口的创建与删除、管理等操作不仅耗时,而且占用资源多,不好管理。



技术实现要素:

本发明实施方式的目的在于提供一种数据传输方法、服务器及计算机可读存储介质,使得减少了网口数量,便于对网口进行管理。

为解决上述技术问题,本发明的实施方式提供了一种数据传输方法,应用于第一服务器,第一服务器的用户态协议栈设有m个第一虚拟网口,第一服务器的内核态协议栈设有n个第二虚拟网口,每个第一虚拟网口分别对应一个第二虚拟网口,每个第二虚拟网口配置对应的第一虚拟网口的互联网协议ip地址;m和n为正整数,n<m;数据传输方法包括:接收到报文后,根据报文的ip地址,以及ip地址和物理mac地址的第一映射关系,确定报文的ip地址对应的mac地址;根据对应的mac地址,更新报文的mac地址;转发更新后的报文。

本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上述实施方式的数据传输方法。

本发明的实施方式还提供了一种计算机存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的数据传输方法。

本发明实施方式相对于现有技术而言,在内核态协议栈设置更少的虚拟网口,使内核态协议栈的至少一个虚拟网口对应多个用户态协议栈的虚拟网口,减少了网口数量从而减少因为创建多个网口带来的资源损耗,同时有利于进行网口管理。

另外,若报文的发送方是第一服务器的内核态协议栈,报文的ip地址为报文的源ip地址,报文的mac地址为报文的源mac地址;若报文的发送方是第二服务器,报文的ip地址为报文的目的ip地址,报文的mac地址为报文的目的mac地址。

另外,若报文的发送方为第二服务器,在根据报文的ip地址,以及ip地址和物理mac地址的第一映射关系,确定报文的ip地址对应的mac地址之前,还包括:确定报文为控制报文。

另外,在根据对应的mac地址,更新报文的mac地址之前,数据传输方法还包括:确定报文的报文类型属于预设的报文类型集合;预设的报文类型集合包括ip报文类型、单播的地址解析协议arp请求报文类型和arp响应报文类型中的一个或多个。

另外,若报文为arp响应报文;在转发更新后的报文之前,数据传输方法还包括:更新报文的目标硬件地址;若报文为单播的arp请求报文,在转发更新后的报文之前,数据传输方法还包括:更新报文的发送方硬件地址。

另外,数据传输方法还包括:若确定第一虚拟网口的ip地址或mac地址被修改,更新第一映射关系。

另外,n等于1,第二虚拟网口设置有各第一虚拟网口的ip地址。

另外,第一服务器还存储有ip地址和端口号的第二映射关系,若报文的发送方是内核态协议栈,转发更新后的报文,具体包括:根据报文的源ip地址,以及第二映射关系,确定目标端口;将报文传输至目标端口。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明的第一实施方式的数据传输方法的流程图;

图2是根据本发明的第二实施方式的数据传输方法的流程图;

图3是根据本发明的第三实施方式的服务器的结构示意图;

图4是根据本发明的第四实施方式的服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种数据传输方法,应用于第一服务器。如图1所示,数据传输方法包括以下步骤:

步骤101:接收到报文后,根据报文的ip地址,以及ip地址和mac地址的第一映射关系,确定报文的ip地址对应的mac地址。

具体地说,第一服务器的用户态协议栈设有m个第一虚拟网口,第一服务器的内核态协议栈设有n个第二虚拟网口,每个第一虚拟网口分别对应一个第二虚拟网口,每个第二虚拟网口配置对应的第一虚拟网口的互联网协议ip地址;m和n为正整数,n<m。其中,第二虚拟网口是指虚拟网络接口。

在一个实施例中,n等于1。即第二虚拟网口设置有各第一虚拟网口的ip地址。即内核态协议栈上的虚拟网络接口只需要创建一个,在该虚拟网口接口上配置各个第一虚拟网口的ip地址,使得该第二虚拟网口共设有m个ip地址,直接映射到用户态协议栈的所有网口。

值得一提的是,通过1个第二虚拟网口实现内核态协议栈和用户态协议栈的数据交互,减少了需要创建的网口数量,从而减少因为创建多个网口带来的资源损耗,更有利于进行网口管理。

需要说明的是,本实施方式中,以创建一个第二虚拟网口为例,说明第一虚拟网口和第二虚拟网口的映射关系,实际应用中,第二虚拟网口的数量可以根据需要设置,例如,n=2,第1个第二虚拟网口设置有第1个第一虚拟网口至第[m/2]个虚拟网口的ip地址,第2个第二虚拟网口设置有第[m/2]+1个虚拟网口至第m个虚拟网口的ip地址。其中,[m/2]表示一个小于或等于m/2的最大整数。

需要说明的是,上述第一虚拟网口的分配方式仅为举例说明,实际应用中,也可以不采用平均分配的方式,本实施方式不限制第一虚拟网口的分配方式。

步骤102:根据ip地址对应的mac地址,更新报文的mac地址。

具体地说,第一服务器中的至少一个第二虚拟网口对应多个第一虚拟网口,该第二虚拟网口的mac地址可能与其对应的第一虚拟网口的mac地址相同,也可能不同。为保证用户态协议栈和内核态协议栈之间能够正常通信,将接收到的报文的mac地址,需要基于ip地址和mac地址的第一映射关系,确定ip地址对应的mac地址,并更新报文中的mac地址。

在一个实施例中,报文的发送方是第一服务器的内核态协议栈,报文的ip地址为报文的源ip地址,报文的mac地址为报文的源mac地址,第一映射关系指示第一虚拟网口的ip地址和第一虚拟网口的mac地址的对应关系。具体地说,当报文从内核态协议栈发往用户态协议栈的虚拟网口时,在第一映射关系中查找报文的源ip地址对应的mac地址,将该报文的源mac地址,修改为源ip地址对应的mac地址。

在另一个实施例中,报文的发送方是第二服务器,报文的ip地址为报文的目的ip地址,报文的mac地址为报文的目的mac地址,第一映射关系指示第二虚拟网口的ip地址和第二虚拟网口的mac地址的映射关系。具体地说,当报文从用户态协议栈发往内核态协议栈的报文时,在第一映射关系中查找报文的目标ip地址对应的mac地址,将该报文的目标mac地址,修改为目标ip地址对应的mac地址。

值得一提的是,第一服务器基于报文的发送方,替换相应的mac地址,使得在只设置n个网口的情况下,内核态协议栈和用户态协议栈能够正常通信。

在一个例子中,n=1,即内核态协议栈设置有一个第二虚拟网口。该情况下,在将用户态协议栈的报文转发至内核态协议栈时,在第一映射关系中查找该报文中的目标ip地址,若查到该目标ip地址,说明该ip地址合法,将该报文的目标mac地址替换为第二虚拟网口的mac地址,并转发报文;若未查到该目标ip地址,说明该ip不合法,不对该报文进行转发。

值得一提的是,对ip地址的合法性进行检测,提高了第一服务器的安全性。

在一个实施例中,n为大于1的正整数,即内核态协议栈设置有多个第二虚拟网口。该情况下,在将用户态协议栈的报文转发至内核态协议栈时,基于第二虚拟网口的ip地址和第二虚拟网口的mac地址的映射关系,查找该报文中的目标ip地址对应的mac地址,将该报文的目标mac地址,修改为目标ip地址对应的mac地址。在将内核态协议栈的报文转发至用户态协议栈时,基于第一虚拟网口的ip地址和第二虚拟网口的ip地址的映射关系,查找报文中的源ip地址对应的mac地址,将该报文的源mac地址修改为源ip地址对应的mac地址。例如,用户态协议栈设置有a、b、c和d四张网卡,对应a、b、c和d四个第一虚拟网口,内核态协议栈设有e和f两张网卡,对应e和f两个第二虚拟网口,a和b数据流(报文)映射到e,c和d数据流(报文)映射到f,即a和b对应e,c和d对应f。那么,a和b网卡的数据流,从用户态协议栈发往内核态协议栈时,数据流的目的mac需要替换成e的mac地址,c和d网卡的数据流,从用户态协议栈发往内核态协议栈时,数据流的目的mac需要替换为f的mac地址。同理,e网卡的数据流,从内核态协议栈发往用户态协议栈时,需要根据源ip地址,确定该源ip地址对应的mac地址(a或b的mac地址),并将报文的mac地址替换为该源ip地址对应的mac地址,f网卡的数据流,从内核态协议栈发往用户态协议栈时,需要根据源ip地址,确定该源ip地址对应的mac地址(c或d的mac地址),并将报文的mac地址替换为该源ip地址对应的mac地址。

在一个实施例中,在根据对应的mac地址,更新报文的mac地址之前,还包括:确定报文的报文类型属于预设的报文类型集合;预设的报文类型集合包括ip报文类型、单播的地址解析协议arp请求报文类型和arp响应报文类型中的一个或多个。

在一个实施例中,若报文的发送方为第二服务器,在根据报文的ip地址,以及ip地址和物理mac地址的第一映射关系,确定报文的ip地址对应的mac地址之前,第一服务器判断报文是否为控制报文,若确定报文为控制报文,执行根据报文的ip地址,以及ip地址和物理mac地址的第一映射关系,确定报文的ip地址对应的mac地址的步骤。

值得一提的是,在确定报文为控制报文后再执行后续操作,避免对无需转发的数据报文进行后续操作造成不必要的计算资源浪费。

在一个实施例中,若报文为arp响应报文;在转发更新后的报文之前,数据传输方法还包括:更新报文的目标硬件地址;若报文为单播的arp请求报文,在转发更新后的报文之前,数据传输方法还包括:更新报文的发送方硬件地址。

步骤103:转发更新后的报文。

具体地说,根据修改后的报文的目标ip地址和mac地址,转发该报文。

在一个实施例中,报文的发送方为内核态协议栈时,根据预设的ip地址和端口号的第二映射关系进行转发。具体地说,第一服务器还存储有ip地址和端口号的第二映射关系,第一服务器根据报文的源ip地址,以及第二映射关系,确定目标端口;将报文传输至目标端口。

在一个实施例中,本实施方式提及的数据传输方法应用于设置在用户态协议栈上的端口聚合模块。该端口聚合模块中存储有第一映射关系,设置有报文处理单元。该报文处理单元包括报文接收子单元、地址转换单元和报文转发单元。

在一个例子中,在实施本实施方式时,首先,将用户态协议栈的网卡ip配置到内核态协议栈的同一张网卡上。然后,端口聚合模块根据用户态协议栈的各虚拟网口的ip地址和mac地址等配置,以及内核态协议栈的虚拟网口的ip地址和mac地址等配置,创建一张ip地址和mac地址的映射表。例如,第一服务器上设置有5个应用(应用1、应用2、应用3、应用4和应用5),针对不同应用做不同的控制面与数据面分离,并在用户态协议栈上设置5个第一虚拟网口,名称分别为wss1、wss2、wss3、wss4和wss5,内核态协议栈上设置1个第二虚拟网口,wss1的配置为ip1和mac1,wss2的配置为ip2和mac2,wss3的配置为ip3和mac3,wss4的配置为ip4和mac4,wss5的配置为ip5和mac5,第二虚拟网口的配置为ip1/ip2/ip3/ip4/ip5和mac6,根据该配置,生成映射表。针对控制面的上下行与不同报文类型,端口聚合模块做不同的处理。对于上行报文,在物理网卡收到报文后,先进行报文的分类,如果是控制报文,则执行端口聚合模块的处理,端口聚合模块根据映射表,替换报文内容,发送至内核态协议栈上,如果是数据报文,则直接发送至用户态协议栈对应的虚拟网口。对于下行报文,在内核态协议栈的虚拟网口上收到报文后,执行端口聚合模块的处理,端口聚合模块根据映射表,替换报文内容,经由用户态协议栈转发至物理网口上。其中,对于针对不同类型的报文,在转发报文时,更新的报文内容可能不同。以下针对不同类型报文替换的内容进行举例说明。

若报文为ip报文,其报文格式为:ether_hdr(src_macanddst_mac)|ip_hdr(src_ipanddst_ip)|tcp/udp,其中,ether_hdr表示以太报头,src_mac表示源mac地址,dst_mac表示目标mac地址,ip_hdr表示ip报头,src_ip表示源ip地址,dst_ip表示目标ip地址。报文从用户态协议栈发往内核态协议栈的时候,根据dst_ip查找第一映射关系,若查找到,则确定报文合法,然后替换dst_mac为mac6。报文从内核态协议栈发往用户态协议栈,根据src_ip,查找表格,确定报文合法后,并找到src_ip对应的mac地址进行替换,然后找到对应的端口进行发送。

若报文为arp报文,其报文格式为:ether_hdr(src_macanddst_mac)|arp_hdr(ar_oparp_shaarp_spaarp_thaarp_tpa),其中,ether_hdr表示以太报头,src_mac表示源mac地址,dst_mac表示目标mac地址,arp_hdr表示arp报头,ar_op表示arp类型,若其为0x0001,代表该报文为arp请求报文,若其为0x0002,代表该报文为arp响应报文,arp_sha表示发送方硬件地址,arp_spa表示发送方ip地址,arp_tha表示目标硬件地址,arp_tpa表示目的ip地址。当报文从用户态协议栈发往内核态协议栈,若该报文为arp请求报文,且,该报文里的ether_hdr头部的dst_mac值是ff:ff:ff:ff:ff:ff,即报文为广播报文,报文不用改变;若该报文为arp请求报文,且,报文为单播报文,根据arp_hdr里面的arp_tpa的ip地址查找对应的mac地址,修改ether_hdr报文头部的dst_mac地址,修改arp_hdr里面的arp_tha(目标硬件地址),若该报文为arp响应报文,根据arp_hdr里面的arp_tpa的ip地址查找对应的mac地址,修改ether_hdr报文头部的dst_mac地址,修改arp_hdr报文里面的arp_tha目标硬件地址。当报文从内核态协议栈发往用户态协议栈,对于arp请求报文和arp响应报文,根据arp_hdr里面的arp_spa的ip地址查找对应的mac地址,修改ether_hdr报文头部的src_mac地址,修改arp_hdr里面的arp_sha发送者硬件地址。

需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。

与现有技术相比,本实施方式中提供的数据传输方法,在内核态协议栈设置更少的虚拟网口,使内核态协议栈的至少一个虚拟网口对应多个用户态协议栈的虚拟网口,减少了网口数量从而减少因为创建多个网口带来的资源损耗,同时有利于进行网口管理。

本发明的第二实施方式涉及一种数据传输方法。本实施方式在第一实施方式的基础上做了进一步改进,具体改进之处为:本实施方式中,第一服务器若确定第一虚拟网口的ip地址或mac地址被修改,更新第一映射关系。

具体的说,如图2所示,在本实施方式中,包含步骤201至步骤204,其中,步骤202、至步骤204分别与第一实施方式中的步骤101至步骤103大致相同,此处不再赘述。下面主要介绍不同之处:

步骤201:若确定第一虚拟网口的ip地址或第一虚拟网口的mac地址被修改,更新第一映射关系。

具体地说,当用户态协议栈有ip地址和mac地址等参数修改时,同步到内核态协议栈,动态调整第一映射关系。

执行步骤202至步骤204。

需要说明的是,本实施方式中,为描述清楚,将步骤201设置为步骤202的前一步骤。但本领域技术人员可以理解,实际应用中,步骤201可以发生在任意时刻,本实施方式不起限定作用。

需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。

与现有技术相比,本实施方式中提供的数据传输方法,在内核态协议栈设置更少的虚拟网口,使内核态协议栈的至少一个虚拟网口对应多个用户态协议栈的虚拟网口,减少了网口数量,便于进行网口管理。除此之外,基于用户态协议栈的虚拟网口的参数修改,及时调整第一映射关系,确保报文能够准确转发。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明的第三实施方式涉及一种服务器,该服务器的用户态协议栈设有m个第一虚拟网口,服务器的内核态协议栈设有n个第二虚拟网口,每个第一虚拟网口分别对应一个第二虚拟网口,每个第二虚拟网口配置对应的第一虚拟网口的互联网协议ip地址;m和n为正整数,n<m。如图3所示,服务器包括确定模块301、更新模块302和转发模块303。确定模块301用于接收到报文后,根据报文的ip地址,以及ip地址和物理mac地址的第一映射关系,确定报文的ip地址对应的mac地址。更新模块302用于根据对应的mac地址,更新报文的mac地址。转发模块303用于转发更新后的报文。

不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明的第四实施方式涉及一种服务器,如图4所示,包括:至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行如上述实施方式提及的数据传输方法。

该服务器包括:一个或多个处理器401以及存储器402,图4中以一个处理器401为例。处理器401、存储器402可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施方式中第一映射关系就存储于存储器402中。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述数据传输方法。

存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器402中,当被一个或者多个处理器401执行时,执行上述任意方法实施方式中的数据传输方法。

上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。

本发明的第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1