云计算环境下实现docker网络穿透两层协议栈的方法及装置与流程

文档序号:16815406发布日期:2019-02-10 14:23阅读:468来源:国知局
云计算环境下实现docker网络穿透两层协议栈的方法及装置与流程

本发明实施例涉及计算机网络技术领域,具体涉及一种云计算环境下实现docker网络穿透两层协议栈的方法及装置。



背景技术:

docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。docker设想是交付运行环境如同海运,os(操作系统)如同一个货轮,每一个在os基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的应用app)

现在,docker在云计算环境中使用的越来越多,用户往往会先创建云主机后安装docker服务,这种场景下docker网络的数据包会先走docker的网络协议栈,再从云主机的协议栈出去,再走物理机器的协议栈,这样会造成极大的cpu(中央处理器)、内存、时间消耗,目前并没有好的技术方案能处理此类问题。



技术实现要素:

由于现有方法存在上述问题,本发明实施例提出一种云计算环境下实现docker网络穿透两层协议栈的方法及装置。

第一方面,本发明实施例提出一种云计算环境下实现docker网络穿透两层协议栈的方法,包括:

docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

可选地,在docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈之前,所述方法还包括:

在物理节点创建透传用协议栈cache,并将所述透传用协议栈cache传送给docker网络协议栈的网络驱动。

可选地,在物理节点创建透传用协议栈cache,并将所述透传用协议栈cache传送给docker网络协议栈的网络驱动之后,所述方法还包括:

修改docker网络协议栈的网络驱动,使docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

修改云主机网络协议栈的网络驱动,使云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

修改物理节点协议栈的网络驱动,使物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

第二方面,本发明实施例还提出一种云计算环境下实现docker网络穿透两层协议栈的装置,包括:

第一发送模块,用于docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

第二发送模块,用于云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

第三发送模块,用于物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

可选地,所述装置还包括:

创建模块,用于在物理节点创建透传用协议栈cache,并将所述透传用协议栈cache传送给docker网络协议栈的网络驱动。

可选地,所述装置还包括:

第一修改模块,用于修改docker网络协议栈的网络驱动,使docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

第二修改模块,用于修改云主机网络协议栈的网络驱动,使云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

第三修改模块,用于修改物理节点协议栈的网络驱动,使物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器、总线及存储在存储器上并可在处理器上运行的计算机程序;

其中,所述处理器,存储器通过所述总线完成相互间的通信;

所述处理器执行所述计算机程序时实现上述方法。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述方法。

由上述技术方案可知,本发明实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的方法及装置,通过通过将数据和对应的数据包头信息放到物理节点预先创建的透传用协议栈cache中,让docker里面的数据包不再全部一一都经过docker网络协议栈、云主机网络协议栈和物理节点协议栈的处理,大大减少了在docker、云主机内网络协议栈的数据包数量,从而降低cpu使用率和数据包的转发速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1为本发明一实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的方法的流程示意图;

图2为本发明一实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的装置的结构示意图;

图3为本发明一实施例提供的电子设备的实体结构示意图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1示出了本发明一实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的方法的流程示意图,如图1所示,本实施例的云计算环境下实现docker网络穿透两层协议栈的方法,包括:

s1、docker网络协议栈将tcp(传输控制协议)/ip(网络之间互连的协议)/eth(ethernet以太网)相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache(高速缓冲存储器)中,并根据所述透传用协议栈cache对应的address(地址)和size(大小)构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈。

此时可以将本来数万个数据包合并到一个数据块中,只记录相应透传用协议栈cache的address和size,大大减少了数据包在一个物理节点内的cpu消耗。

s2、云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

s3、物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

本实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的方法,通过将数据和对应的数据包头信息放到物理节点预先创建的透传用协议栈cache中,让docker里面的数据包不再全部一一都经过docker网络协议栈、云主机网络协议栈和物理节点协议栈的处理,大大减少了在docker、云主机内网络协议栈的数据包数量,从而降低cpu使用率和数据包的转发速度。

进一步地,在具体应用中,在所述步骤s1之前,本实施例所述方法还可以包括:

在物理节点创建透传用协议栈cache,并将所述透传用协议栈cache传送给docker网络协议栈的网络驱动。

进一步地,在物理节点创建透传用协议栈cache,并将所述透传用协议栈cache传送给docker网络协议栈的网络驱动之后,所述方法还可以包括:

修改docker网络协议栈的网络驱动,使docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

修改云主机网络协议栈的网络驱动,使云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

修改物理节点协议栈的网络驱动,使物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

本实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的方法,通过将数据和对应的数据包头信息放到物理节点预先创建的透传用协议栈cache中,让docker里面的数据包不再全部一一都经过docker网络协议栈、云主机网络协议栈和物理节点协议栈的处理,大大减少了在docker、云主机内网络协议栈的数据包数量,从而降低cpu使用率和数据包的转发速度。

图2示出了本发明一实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的装置的结构示意图,如图2所示,本实施例的云计算环境下实现docker网络穿透两层协议栈的装置,包括:第一发送模块21、第二发送模块22和第三发送模块23;其中:

所述第一发送模块21,用于docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

所述第二发送模块22,用于云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

所述第三发送模块23,用于物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

可以理解的是,所述第一发送模块21根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈,可以将本来数万个数据包合并到一个数据块中,只记录相应透传用协议栈cache的address和size,大大减少了数据包在一个物理节点内的cpu消耗。

本实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的装置,通过将数据和对应的数据包头信息放到物理节点预先创建的透传用协议栈cache中,让docker里面的数据包不再全部一一都经过docker网络协议栈、云主机网络协议栈和物理节点协议栈的处理,大大减少了在docker、云主机内网络协议栈的数据包数量,从而降低cpu使用率和数据包的转发速度。

进一步地,在具体应用中,本实施例所述装置还可以包括图中未示出的:

创建模块,用于在物理节点创建透传用协议栈cache,并将所述透传用协议栈cache传送给docker网络协议栈的网络驱动。

进一步地,所述装置还可以包括图中未示出的:

第一修改模块,用于修改docker网络协议栈的网络驱动,使docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;

第二修改模块,用于修改云主机网络协议栈的网络驱动,使云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;

第三修改模块,用于修改物理节点协议栈的网络驱动,使物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

本实施例提供的一种云计算环境下实现docker网络穿透两层协议栈的装置,通过将数据和对应的数据包头信息放到物理节点预先创建的透传用协议栈cache中,让docker里面的数据包不再全部一一都经过docker网络协议栈、云主机网络协议栈和物理节点协议栈的处理,大大减少了在docker、云主机内网络协议栈的数据包数量,从而降低cpu使用率和数据包的转发速度。

本实施例的云计算环境下实现docker网络穿透两层协议栈的装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图3示出了本发明一实施例提供的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器301、存储器302、总线303及存储在存储器302上并可在处理器301上运行的计算机程序;

其中,所述处理器301和存储器302通过所述总线303完成相互间的通信;

所述处理器301执行所述计算机程序时实现上述方法实施例所提供的方法,例如包括:docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例所提供的方法,例如包括:docker网络协议栈将tcp/ip/eth相关的包数据和对应包头信息存放到物理节点预先创建的透传用协议栈cache中,并根据所述透传用协议栈cache对应的地址address和大小size构造出一个新的数据包,将所述新的数据包放到相关的协议栈包处理函数中发送给云主机协议栈;云主机网络协议栈判断接收的所述新的数据包是否放在透传用协议栈cache中,若是则直接将所述新的数据包转发给物理节点协议栈;物理节点协议栈在接收到所述新的数据包时,取出所述新的数据包中的address、size以及对应的包头信息,根据取出的address和size取出所述透传用协议栈cache中存放的数据,将所取出所述透传用协议栈cache中存放的数据传给tcp、ip、eth层对应的函数进行封包处理后发给物理网卡传送出去。

本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置/系统。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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