[发明专利]一种多虚拟设备容器组网方法有效

专利信息
申请号: 201910853433.4 申请日: 2019-09-10
公开(公告)号: CN110601949B 公开(公告)日: 2021-05-04
发明(设计)人: 邓文平;王承松;唐竹;汪泉;郦苏丹;荀鹏;彭伟;王宏;陈红艳 申请(专利权)人: 中国人民解放军国防科技大学
主分类号: H04L12/46 分类号: H04L12/46;H04L12/24;G06F9/455
代理公司: 长沙中科启明知识产权代理事务所(普通合伙) 43226 代理人: 任合明
地址: 410003 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种多虚拟设备容器组网方法,目的是解决虚拟网桥设备上的单点故障问题,并对不同容器网络进行隔离从而迅速定位故障。技术方案是先搭建由控制节点和容器运行节点组成的容器网络底层环境:在容器网络底层环境中搭建组网系统,即在容器运行节点安装虚拟网桥组件、组网组件,在控制节点安装中心数据库;组网组件包括对外接口、容器加入退出网络模块、网络信息处理模块、VNI分配模块、网络主机列表更新模块五个子模块;组网组件、虚拟网桥组件相互配合,完成创建网络、删除网络、容器加入网络、容器退出网络这些组网的工作。采用本发明可避免一个功能单元的故障影响到其他功能单元,并能将可能的网络故障迅速定位。
搜索关键词: 一种 虚拟 设备 容器 组网 方法
【主权项】:
1.一种多虚拟设备容器组网方法,其特征在于包括以下步骤:/n本发明包括以下步骤:/n第一步,搭建容器网络底层环境:容器网络底层环境由多个主机节点构成,这些主机节点通过三层网络连在一起实现IP层互通;主机节点根据功能不同分为两种:控制节点和容器运行节点,控制节点共M个,容器运行节点共N个;控制节点用于安装中心数据库;容器运行节点用于运行容器;M和N均为正整数;所述三层网络指TCP/IP网络的第三层网络,又称IP网络,通过IP地址进行寻址;/n第二步,在容器网络底层环境中搭建组网系统,即在容器运行节点安装虚拟网桥组件、组网组件,在控制节点安装中心数据库,方法是:/n在M个控制节点采用分布式存贮的方式部署中心数据库,中心数据库中保存各容器网络的全局信息,供组网组件进行信息查询,并在数据发生变化时通知组网组件;中心数据库保存的全局信息包括:容器网络信息、容器网络主机列表、容器网络VNI即虚拟网络标识分配记录、已分配VNI集合总共四类;这些全局信息通过键值对的方式保存在数据库,其中键为一个字符串,用于索引及区分不同的数据记录,值为具体的数据信息;/n容器网络信息包含K条容器数据记录,一条容器数据记录对应一个容器网络;这些数据记录的键为“netInfo/”和容器网络名组成的字符串,值中包含容器网络名、网络VNI、网络中运行的容器,容器网络名是字符串,表示容器网络的名称;网络VNI是整数,表示容器网络的VNI;网络中运行的容器是由逗号分开的R个字符串,表示R个容器名称,R为正整数;/n容器网络主机列表包含K条主机数据记录,这些主机数据记录的键为“netlist/”和容器网络名组成的字符串,值为主机列表中与容器网络名所指容器网络相关联的容器运行节点的IP地址;/n容器网络VNI分配记录包含K条VNI数据记录,这些VNI数据记录的键为“VNI/”和容器网络名组成的字符串,值为分配给容器网络的VNI值;/n已分配VNI集合在中心数据库中为一条数据记录,键为字符串“VNISet”。值为所有已分配VNI的集合,表示已分配VNI的集合中的VNI值已经分配给了已经存在的容器网络;/n在N个容器运行节点部署组网组件和虚拟网桥组件,方法是:/n虚拟网桥组件与组网组件、容器相连;虚拟网桥组件负责在容器运行节点创建虚拟网桥设备、vxlan虚拟设备,并通过内部配置,将虚拟网桥设备、vxlan虚拟设备、容器连接起来;虚拟网桥组件从组网组件接收创建、删除、配置、查询虚拟网桥、vxlan虚拟设备、端口命令,根据命令创建、配置、删除、查询虚拟网桥、vxlan虚拟设备、端口并将容器连接到虚拟网络设备以完成组网,并向组网组件发送命令执行结果;所述虚拟网络设备包括虚拟网桥、vxlan虚拟设备、端口;/n组网组件部署在容器运行节点内,与所属容器运行节点的虚拟网桥组件相连,并与控制节点的中心数据库通过主机节点间的三层网络通信;组网组件通过命令行或键盘接收用户发送的组网命令,根据组网命令生成容器网络信息;将容器网络信息保存到中心数据库;向虚拟网桥组件发送创建、删除、配置、查询虚拟网桥、vxlan虚拟设备、端口命令;/n组网组件包括:对外接口、容器加入退出网络模块、网络信息处理模块、VNI分配模块、网络主机列表更新模块五个子模块;/n对外接口与容器加入退出网络模块、网络信息处理模块相连,负责从键盘或文件接收用户的组网命令;若接收到容器加入、退出网络命令,将容器名、要加入或退出的网络名发送给容器加入退出网络模块;若接收到创建网络、删除网络命令,从命令中解析要添加及删除的容器网络,然后向网络信息处理模块发送添加、删除网络信息命令,并从容器网络信息处理模块接收返回的错误码;/n容器加入退出网络模块与对外接口、网络信息处理模块、VNI分配模块、网络主机列表更新模块、虚拟网桥组件相连;容器加入退出网络模块负责处理容器加入、退出网络;容器加入退出网络模块从对外接口接收容器名、要加入或退出的网络名;向网络信息处理模块发送查询容器网络信息命令,从网络信息处理模块接收容器网络信息;向VNI分配模块发送获取VNI命令,从VNI分配模块接收返回的VNI值、虚拟网桥名;向网络主机列表管理模块发送查询主机列表命令,从网络主机列表管理模块接收网络主机列表;根据容器名、容器网络信息和VNI值、虚拟网桥名、网络主机列表,计算容器加入退出时需要进行的虚拟网络设备配置、连接,以及需要变更的容器网络信息;向虚拟网桥组件发送创建、删除、配置、查询虚拟网桥、vxlan虚拟设备、端口命令;向网络信息处理模块发送更新容器网络信息命令;向网络主机列表管理模块发送更新网络主机列表命令。/n网络信息处理模块与对外接口、容器加入退出网络模块、VNI分配模块、中心数据库相连;负责记录、保存容器网络信息,供容器加入退出网络模块、对外接口查询;网络信息处理模块存贮各容器网络的容器网络信息,作为中心数据库中保存的容器网络信息的缓存,在启动时从中心数据库载入数据,在数据发生变化时保存到中心数据库;网络信息处理模块从对外接口接收添加、删除容器网络信息命令,向VNI分配模块发送回收VNI命令,向对外接口返回错误码;从容器加入退出网络模块接收查询、更新容器网络信息命令,向容器加入退出网络模块返回容器网络信息;/nVNI分配模块与容器加入退出网络模块、网络信息处理模块、网络主机列表更新模块、中心数据库相连;VNI分配模块给容器网络分配VNI;VNI分配模块存贮有一个已分配VNI集合,作为中心数据库中保存的已分配VNI集合的缓存;VNI分配模块从容器加入退出网络模块、网络主机列表更新模块接收获取VNI命令,根据命令中提供的网络名,令此网络名为netABC,从中心数据库查询netABC对应的VNI分配记录,即查询键为VNI/netABC的键值对的值。如果值存在,说明该VNI值已经分配给了容器网络netABC,向容器加入退出模块返回该VNI值;如果该值不存在,则为容器网络netABC分配VNI值,新VNI取值为已分配VNI集合中不存在的值,生成网络名对应的VNI分配记录,即键为VNI/netABC,值为新VNI值的键值对,将该VNI分配记录保存到中心数据库,然后将新VNI值添加到已分配VNI集合,将更新后的已分配VNI集合保存到中心数据库,并向容器加入退出模块返回该新VNI值;VNI分配模块从网络信息管理模块接收回收VNI命令,收回分配给某个容器网络的VNI值,即在中心数据库中删除该网络名对应的VNI分配记录,在已分配VNI集合中删除该VNI值,并将更新后的已分配VNI集合保存到中心数据库;/n网络主机列表更新模块与容器加入退出网络模块、VNI分配模块、中心数据库、虚拟网桥组件相连,网络主机列表更新模块包含各容器网络相关联的网络主机列表,网络主机列表包含网络名、不同容器运行节点的ip地址序列2个域,作为中心数据库中保存的容器网络主机列表的缓存;其中网络名为容器网络名称,不同容器运行节点的ip地址序列为不同容器运行节点的ip地址,与同一表项中的网络名对应的容器网络关联;对于某个容器网络netC,其相关联的网络主机列表为符合以下要求的容器运行节点所组成的列表:容器运行节点中运行的容器里面存在至少一个容器属于容器网络netC;网络主机列表中记录的内容为容器运行节点的IP地址;网络主机列表更新模块负责记录、更新各容器网络相关联的网络主机列表,并负责将这些网络主机列表保存到中心数据库;网络主机列表更新模块从容器加入退出网络模块接收查询、更新网络主机列表命令,根据命令参数中的容器网络名查询关联的网络主机列表,向容器加入退出网络模块返回网络主机列表,或根据命令参数中的网络主机列表,在网络主机列表中添加或删除主机;向中心数据库发送保存、查询网络主机列表命令,从中心数据库中接收网络主机列表;向中心数据库发送监听网络主机列表命令,当中心数据库中被监听的网络主机列表发生变化时,从中心数据库接收网络主机列表更新消息,更新模块内的网络主机列表,并向虚拟网桥组件发送创建、删除、配置、查询虚拟网桥、vxlan虚拟设备、端口命令,调整虚拟设备的连接;/n第三步,对外接口接收用户输入的组网命令;组网命令包括创建网络、删除网络、容器加入网络、容器退出网络;多个容器运行节点并行工作,均按以下流程进行组网处理,称接收到组网命令的容器运行节点为当前主机:/n3.1对外接口从键盘或文件接收用户输入的组网命令,若组网命令是创建网络命令,转3.2;若组网命令是删除网络命令,转3.3;若组网命令是容器加入网络命令,转3.4;若组网命令是容器退出网络命令,转3.5;/n3.2此时对外接口接收到创建网络命令,创建网络命令的格式为:创建网络–n网络名–ips使用的IP网段,按以下步骤创建网络:/n3.2.1对外接口根据创建网络命令构建添加容器网络信息命令,添加容器网络信息命令中包括网络名、使用的IP网段,网络名等于创建网络命令中的网络名、使用的IP网段等于创建网络命令中使用的IP网段;向网络信息处理模块发送添加容器网络信息命令;/n3.2.2网络信息处理模块利用添加容器网络信息命令中的网络名、网络使用的IP网段生成容器网络信息记录,并添加到网络信息处理模块内的容器网络信息中;/n3.2.3网络信息处理模块将容器网络信息保存到中心数据库;转3.1;/n3.3此时对外接口接收到删除网络命令,删除网络命令的格式为:删除网络–n网络名,令网络名为netD,按以下步骤删除网络:/n3.3.1对外接口向网络信息处理模块发送删除容器网络信息命令,命令中包括网络名netD;/n3.3.2网络信息处理模块检查网络netD中是否有容器在运行,如果netD中有容器在运行,转3.3.3;如果netD中没有容器运行,转3.3.4;/n3.3.3网络信息处理模块向对外接口返回错误码,对外接口将错误码输出,告知用户netD不能删除,转3.1;/n3.3.4网络信息处理模块向VNI分配模块发送回收VNI命令,命令参数为网络名netD;/n3.3.5网络信息处理模块在网络信息处理模块内的容器网络信息中删除netD的容器网络信息记录,并将中心数据库中netD的容器网络信息记录删除,转3.1;/n3.4此时组网命令是容器加入网络命令,容器加入网络命令的格式为:加入网络-n网络名-c容器名,令容器名为conA,容器要加入的网络名为netX,执行步骤如下:/n3.4.1对外接口将容器名conA、要加入的网络名netX转发给容器加入退出网络模块;/n3.4.2容器加入退出网络模块向VNI分配模块发送获取VNI命令,命令参数为netX;/n3.4.3VNI分配模块在中心数据库中查询netX对应的VNI值,假设为k1,将k1与字符串BR拼接,得到容器网络netX在当前容器运行节点中对应的虚拟网桥名BRk1,将VNI值k1和虚拟网桥名BRk1返回给容器加入退出网络模块;/n3.4.4容器加入退出网络模块向虚拟网桥组件发送查询虚拟网桥命令,查询网桥BRk1是否存在;/n3.4.5如果容器加入退出网络模块从虚拟网桥组件接收到“TRUE”,说明网桥BRk1存在,转3.4.7;否则容器加入退出网络模块执行添加虚拟网桥BRk1的处理,并将虚拟网桥BRk1与容器网络netX中其他虚拟网桥相连;/n3.4.6将当前主机IP添加到容器网络netX关联的网络主机列表中,包括以下步骤:/n3.4.6.1容器加入退出网络模块向网络主机列表更新模块发送更新网络主机列表命令,命令参数包括:网络名netX、当前容器运行节点的IP地址hostIPc;/n3.4.6.2网络主机列表更新模块在netX关联的网络主机列表中添加hostIPc;/n3.4.6.3网络主机列表更新模块将netX关联的网络主机列表保存到中心数据库中,开始监听中心数据库中该数据的更新,若监听结果是中心数据库中该数据未更新,转3.4.7;若监听到中心数据库中容器netX关联的网络主机列表被更新,转第四步;/n3.4.7容器加入退出网络模块向网络信息处理模块发送更新容器网络信息命令,命令参数包括:网络名netX、网络VNI值k1、容器名conA;/n3.4.8网络信息处理模块接收更新容器网络信息命令,更新网络信息处理模块内netX的容器网络信息:将VNI值更新为k1,在网络信息处理模块内部的容器网络信息记录的netX中运行的容器中添加容器conA;/n3.4.9网络信息处理模块将netX的容器网络信息保存到中心数据库;/n3.4.10容器加入退出网络模块为容器创建veth pair设备对,并向虚拟网桥组件发送添加端口命令:“添加端口BRk veth-desd–配置端口veth-desd容器名=conA”,在网桥BRk中创建端口并连接veth pair设备对的一端;veth pair设备的另一端连接容器,从而将容器连上虚拟网桥;转3.1;/n3.5此时组网命令是容器退出网络命令,容器退出网络命令的格式为:退出网络-n网络名-c容器名。令容器名为conB,容器要退出的网络名为netY,执行步骤如下:/n3.5.1对外接口将容器名conB、要退出的网络名netY转发到容器加入退出网络模块;/n3.5.2容器加入退出网络模块向VNI分配模块发送获取VNI命令,命令参数为netY;得到容器netY的VNI值,假设为k2,以及容器网络netY在当前主机中对应的虚拟网桥名BRk2;/n3.5.3容器加入退出网络模块向虚拟网桥组件发送删除端口的命令:“删除端口BRk2veth-dsdk”,虚拟网桥组件执行命令,在虚拟网桥BRk2中删除连接容器的端口以及该端口上的veth pair设备;/n3.5.4容器加入退出网络模块检查容器conB是否为容器网络netY在当前容器运行节点中的最后一个容器;/n3.5.5若容器conB不是网络netY在当前容器运行节点中的最后一个容器,转3.1,容器退出网络的处理完成;否则,容器加入退出网络模块向虚拟网桥组件发送删除命令:“删除端口BRk2 vxlanBRk-xsdd”和“删除网桥BRk2”,虚拟网桥组件执行命令,将虚拟网桥BRk2及其中的vxlan虚拟设备从当前主机中删除,转3.5.6;/n3.5.6容器加入退出网络模块向主机列表更新模块发送更新网络主机列表命令,命令参数包括网络名netY和当前容器运行节点;/n3.5.7网络主机列表更新模块在主机列表更新模块内netY关联的网络主机列表中删除当前容器运行节点的IP地址,将新的容器网络主机列表信息保存到中心数据库,且网络主机列表更新模块停止监听中心数据库中netY关联的网络主机列表;转3.1;/n第四步,主机列表更新模块从中心数据库接收网络主机列表更新消息,更新模块内部的网络主机列表,并更新虚拟设备的连接,具体执行步骤如下:/n4.1主机列表更新模块从中心数据库接收网络主机列表更新消息,消息内容为:容器网络名、容器网络相关联的主机列表,令容器网络名为netZ;/n4.2主机列表更新模块向VNI分配模块发送获取VNI命令,命令参数为netZ,得到容器网络netZ的VNI值,假设为k3,以及容器网络netZ在当前主机中对应的虚拟网桥名BRk3;/n4.3主机列表更新模块对比模块内的网络主机列表和网络主机列表更新消息中的网络主机列表即新网络主机列表,得到新网络主机列表中删除的主机和新增的主机,这些主机都是容器运行节点;/n4.4网络主机列表更新模块向虚拟网桥组件发送删除vxlan虚拟设备命令:“删除端口BRk3 vxlanBRk-xsdd”,其中BRk3为待删除vxlan虚拟设备所连接的虚拟网桥,vxlanBRk-xsdd为待删除vxlan虚拟设备名;虚拟网桥组件执行命令,在BRk3中删除与该容器运行节点中虚拟网桥连接的vxlan设备;/n4.5网络主机列表更新模块向虚拟网桥组件发送添加命令:“添加端口BRk3 vxlanBRk-xdfs–配置端口vxlanBRk-xdfs类型=vxlan key=k3远程IP=hostIP”,其中BRk3为待添加vxlan虚拟设备所连接的虚拟网桥,vxlanBRk-xsdd为待添加vxlan虚拟设备名,k3用于识别所属容器网络,hostIP为vxlan虚拟设备连接的远程容器运行节点即新增的容器运行节点的IP地址;虚拟网桥组件执行命令,在虚拟网桥BRk3中添加与该容器运行节点中虚拟网桥连接的vxlan设备,设置vxlan虚拟设备的远程端IP为新增的容器运行节点的IP地址。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201910853433.4/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top