[發明專利]一種多虛擬設備容器組網方法有效
| 申請號: | 201910853433.4 | 申請日: | 2019-09-10 |
| 公開(公告)號: | CN110601949B | 公開(公告)日: | 2021-05-04 |
| 發明(設計)人: | 鄧文平;王承松;唐竹;汪泉;酈蘇丹;荀鵬;彭偉;王宏;陳紅艷 | 申請(專利權)人: | 中國人民解放軍國防科技大學 |
| 主分類號: | H04L12/46 | 分類號: | H04L12/46;H04L12/24;G06F9/455 |
| 代理公司: | 長沙中科啟明知識產權代理事務所(普通合伙) 43226 | 代理人: | 任合明 |
| 地址: | 410003 湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 虛擬 設備 容器 組網 方法 | ||
1.一種多虛擬設備容器組網方法,其特征在于包括以下步驟:
第一步,搭建容器網絡底層環境:容器網絡底層環境由多個主機節點構成,這些主機節點通過三層網絡連在一起實現IP層互通;主機節點根據功能不同分為兩種:控制節點和容器運行節點,控制節點共M個,容器運行節點共N個;控制節點用于安裝中心數據庫;容器運行節點用于運行容器;M和N均為正整數;所述三層網絡指TCP/IP網絡的第三層網絡,又稱IP網絡,通過IP地址進行尋址;
第二步,在容器網絡底層環境中搭建組網系統,即在容器運行節點安裝虛擬網橋組件、組網組件,在控制節點安裝中心數據庫,方法是:
在M個控制節點采用分布式存貯的方式部署中心數據庫,中心數據庫中保存各容器網絡的全局信息,供組網組件進行信息查詢,并在數據發生變化時通知組網組件;中心數據庫保存的全局信息包括:容器網絡信息、容器網絡主機列表、容器網絡VNI即虛擬網絡標識分配記錄、已分配VNI集合總共四類;這些全局信息通過鍵值對的方式保存在數據庫,其中鍵為一個字符串,用于索引及區分不同的數據記錄,值為具體的數據信息;
容器網絡信息包含K條容器數據記錄,一條容器數據記錄對應一個容器網絡;這些數據記錄的鍵為“netInfo/”和容器網絡名組成的字符串,值中包含容器網絡名、網絡VNI、網絡中運行的容器,容器網絡名是字符串,表示容器網絡的名稱;網絡VNI是整數,表示容器網絡的VNI;網絡中運行的容器是由逗號分開的R個字符串,表示R個容器名稱,R為正整數;
容器網絡主機列表包含K條主機數據記錄,這些主機數據記錄的鍵為“netlist/”和容器網絡名組成的字符串,值為主機列表中與容器網絡名所指容器網絡相關聯的容器運行節點的IP地址;
容器網絡VNI分配記錄包含K條VNI數據記錄,這些VNI數據記錄的鍵為“VNI/”和容器網絡名組成的字符串,值為分配給容器網絡的VNI值;
已分配VNI集合在中心數據庫中為一條數據記錄,鍵為字符串“VNISet”,值為所有已分配VNI的集合,表示已分配VNI的集合中的VNI值已經分配給了已經存在的容器網絡;
在N個容器運行節點部署組網組件和虛擬網橋組件,方法是:
虛擬網橋組件與組網組件、容器相連;虛擬網橋組件負責在容器運行節點創建虛擬網橋設備、vxlan虛擬設備,并通過內部配置,將虛擬網橋設備、vxlan虛擬設備、容器連接起來;虛擬網橋組件從組網組件接收創建、刪除、配置、查詢虛擬網橋、vxlan虛擬設備、端口命令,根據命令創建、配置、刪除、查詢虛擬網橋、vxlan虛擬設備、端口并將容器連接到虛擬網絡設備以完成組網,并向組網組件發送命令執行結果;所述虛擬網絡設備包括虛擬網橋、vxlan虛擬設備、端口;
組網組件部署在容器運行節點內,與所屬容器運行節點的虛擬網橋組件相連,并與控制節點的中心數據庫通過主機節點間的三層網絡通信;組網組件通過命令行或鍵盤接收用戶發送的組網命令,根據組網命令生成容器網絡信息;將容器網絡信息保存到中心數據庫;向虛擬網橋組件發送創建、刪除、配置、查詢虛擬網橋、vxlan虛擬設備、端口命令;
組網組件包括:對外接口、容器加入退出網絡模塊、網絡信息處理模塊、VNI分配模塊、網絡主機列表更新模塊五個子模塊;
對外接口與容器加入退出網絡模塊、網絡信息處理模塊相連,負責從鍵盤或文件接收用戶的組網命令;若接收到容器加入、退出網絡命令,將容器名、要加入或退出的網絡名發送給容器加入退出網絡模塊;若接收到創建網絡、刪除網絡命令,從命令中解析要添加及刪除的容器網絡,然后向網絡信息處理模塊發送添加、刪除網絡信息命令,并從容器網絡信息處理模塊接收返回的錯誤碼;
容器加入退出網絡模塊與對外接口、網絡信息處理模塊、VNI分配模塊、網絡主機列表更新模塊、虛擬網橋組件相連;容器加入退出網絡模塊負責處理容器加入、退出網絡;容器加入退出網絡模塊從對外接口接收容器名、要加入或退出的網絡名;向網絡信息處理模塊發送查詢容器網絡信息命令,從網絡信息處理模塊接收容器網絡信息;向VNI分配模塊發送獲取VNI命令,從VNI分配模塊接收返回的VNI值、虛擬網橋名;向網絡主機列表管理模塊發送查詢主機列表命令,從網絡主機列表管理模塊接收網絡主機列表;根據容器名、容器網絡信息和VNI值、虛擬網橋名、網絡主機列表,計算容器加入退出時需要進行的虛擬網絡設備配置、連接,以及需要變更的容器網絡信息;向虛擬網橋組件發送創建、刪除、配置、查詢虛擬網橋、vxlan虛擬設備、端口命令;向網絡信息處理模塊發送更新容器網絡信息命令;向網絡主機列表管理模塊發送更新網絡主機列表命令;
網絡信息處理模塊與對外接口、容器加入退出網絡模塊、VNI分配模塊、中心數據庫相連;負責記錄、保存容器網絡信息,供容器加入退出網絡模塊、對外接口查詢;網絡信息處理模塊存貯各容器網絡的容器網絡信息,作為中心數據庫中保存的容器網絡信息的緩存,在啟動時從中心數據庫載入數據,在數據發生變化時保存到中心數據庫;網絡信息處理模塊從對外接口接收添加、刪除容器網絡信息命令,向VNI分配模塊發送回收VNI命令,向對外接口返回錯誤碼;從容器加入退出網絡模塊接收查詢、更新容器網絡信息命令,向容器加入退出網絡模塊返回容器網絡信息;
VNI分配模塊與容器加入退出網絡模塊、網絡信息處理模塊、網絡主機列表更新模塊、中心數據庫相連;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集合保存到中心數據庫;
網絡主機列表更新模塊與容器加入退出網絡模塊、VNI分配模塊、中心數據庫、虛擬網橋組件相連,網絡主機列表更新模塊包含各容器網絡相關聯的網絡主機列表,網絡主機列表包含網絡名、不同容器運行節點的ip地址序列2個域,作為中心數據庫中保存的容器網絡主機列表的緩存;其中網絡名為容器網絡名稱,不同容器運行節點的ip地址序列為不同容器運行節點的ip地址,與同一表項中的網絡名對應的容器網絡關聯;對于某個容器網絡netC,其相關聯的網絡主機列表為符合以下要求的容器運行節點所組成的列表:容器運行節點中運行的容器里面存在至少一個容器屬于容器網絡netC;網絡主機列表中記錄的內容為容器運行節點的IP地址;網絡主機列表更新模塊負責記錄、更新各容器網絡相關聯的網絡主機列表,并負責將這些網絡主機列表保存到中心數據庫;網絡主機列表更新模塊從容器加入退出網絡模塊接收查詢、更新網絡主機列表命令,根據命令參數中的容器網絡名查詢關聯的網絡主機列表,向容器加入退出網絡模塊返回網絡主機列表,或根據命令參數中的網絡主機列表,在網絡主機列表中添加或刪除主機;向中心數據庫發送保存、查詢網絡主機列表命令,從中心數據庫中接收網絡主機列表;向中心數據庫發送監聽網絡主機列表命令,當中心數據庫中被監聽的網絡主機列表發生變化時,從中心數據庫接收網絡主機列表更新消息,更新模塊內的網絡主機列表,并向虛擬網橋組件發送創建、刪除、配置、查詢虛擬網橋、vxlan虛擬設備、端口命令,調整虛擬設備的連接;
第三步,對外接口接收用戶輸入的組網命令;組網命令包括創建網絡、刪除網絡、容器加入網絡、容器退出網絡;多個容器運行節點并行工作,均按以下流程進行組網處理,稱接收到組網命令的容器運行節點為當前主機:
3.1對外接口從鍵盤或文件接收用戶輸入的組網命令,若組網命令是創建網絡命令,轉3.2;若組網命令是刪除網絡命令,轉3.3;若組網命令是容器加入網絡命令,轉3.4;若組網命令是容器退出網絡命令,轉3.5;
3.2此時對外接口接收到創建網絡命令,創建網絡命令的格式為:創建網絡–n網絡名–ips使用的IP網段,按以下步驟創建網絡:
3.2.1對外接口根據創建網絡命令構建添加容器網絡信息命令,添加容器網絡信息命令中包括網絡名、使用的IP網段,網絡名等于創建網絡命令中的網絡名、使用的IP網段等于創建網絡命令中使用的IP網段;向網絡信息處理模塊發送添加容器網絡信息命令;
3.2.2網絡信息處理模塊利用添加容器網絡信息命令中的網絡名、網絡使用的IP網段生成容器網絡信息記錄,并添加到網絡信息處理模塊內的容器網絡信息中;
3.2.3網絡信息處理模塊將容器網絡信息保存到中心數據庫;轉3.1;
3.3此時對外接口接收到刪除網絡命令,刪除網絡命令的格式為:刪除網絡–n網絡名,令網絡名為netD,按以下步驟刪除網絡:
3.3.1對外接口向網絡信息處理模塊發送刪除容器網絡信息命令,命令中包括網絡名netD;
3.3.2網絡信息處理模塊檢查網絡netD中是否有容器在運行,如果netD中有容器在運行,轉3.3.3;如果netD中沒有容器運行,轉3.3.4;
3.3.3網絡信息處理模塊向對外接口返回錯誤碼,對外接口將錯誤碼輸出,告知用戶netD不能刪除,轉3.1;
3.3.4網絡信息處理模塊向VNI分配模塊發送回收VNI命令,命令參數為網絡名netD;
3.3.5網絡信息處理模塊在網絡信息處理模塊內的容器網絡信息中刪除netD的容器網絡信息記錄,并將中心數據庫中netD的容器網絡信息記錄刪除,轉3.1;
3.4此時組網命令是容器加入網絡命令,容器加入網絡命令的格式為:加入網絡-n網絡名-c容器名,令容器名為conA,容器要加入的網絡名為netX,執行步驟如下:
3.4.1對外接口將容器名conA、要加入的網絡名netX轉發給容器加入退出網絡模塊;
3.4.2容器加入退出網絡模塊向VNI分配模塊發送獲取VNI命令,命令參數為netX;
3.4.3VNI分配模塊在中心數據庫中查詢netX對應的VNI值,假設為k1,將k1與字符串BR拼接,得到容器網絡netX在當前容器運行節點中對應的虛擬網橋名BRk1,將VNI值k1和虛擬網橋名BRk1返回給容器加入退出網絡模塊;
3.4.4容器加入退出網絡模塊向虛擬網橋組件發送查詢虛擬網橋命令,查詢網橋BRk1是否存在;
3.4.5如果容器加入退出網絡模塊從虛擬網橋組件接收到“TRUE”,說明網橋BRk1存在,轉3.4.7;否則容器加入退出網絡模塊執行添加虛擬網橋BRk1的處理,并將虛擬網橋BRk1與容器網絡netX中其他虛擬網橋相連;
3.4.6將當前主機IP添加到容器網絡netX關聯的網絡主機列表中,包括以下步驟:
3.4.6.1容器加入退出網絡模塊向網絡主機列表更新模塊發送更新網絡主機列表命令,命令參數包括:網絡名netX、當前容器運行節點的IP地址hostIPc;
3.4.6.2網絡主機列表更新模塊在netX關聯的網絡主機列表中添加hostIPc;
3.4.6.3網絡主機列表更新模塊將netX關聯的網絡主機列表保存到中心數據庫中,開始監聽中心數據庫中該數據的更新,若監聽結果是中心數據庫中該數據未更新,轉3.4.7;若監聽到中心數據庫中容器netX關聯的網絡主機列表被更新,轉第四步;
3.4.7容器加入退出網絡模塊向網絡信息處理模塊發送更新容器網絡信息命令,命令參數包括:網絡名netX、網絡VNI值k1、容器名conA;
3.4.8網絡信息處理模塊接收更新容器網絡信息命令,更新網絡信息處理模塊內netX的容器網絡信息:將VNI值更新為k1,在網絡信息處理模塊內部的容器網絡信息記錄的netX中運行的容器中添加容器conA;
3.4.9網絡信息處理模塊將netX的容器網絡信息保存到中心數據庫;
3.4.10容器加入退出網絡模塊為容器創建veth pair設備對,并向虛擬網橋組件發送添加端口命令:“添加端口BRk veth-desd–配置端口veth-desd容器名=conA”,在網橋BRk中創建端口并連接veth pair設備對的一端;veth pair設備的另一端連接容器,從而將容器連上虛擬網橋;轉3.1;
3.5此時組網命令是容器退出網絡命令,容器退出網絡命令的格式為:退出網絡-n網絡名-c容器名;令容器名為conB,容器要退出的網絡名為netY,執行步驟如下:
3.5.1對外接口將容器名conB、要退出的網絡名netY轉發到容器加入退出網絡模塊;
3.5.2容器加入退出網絡模塊向VNI分配模塊發送獲取VNI命令,命令參數為netY;得到容器netY的VNI值,假設為k2,以及容器網絡netY在當前主機中對應的虛擬網橋名BRk2;
3.5.3容器加入退出網絡模塊向虛擬網橋組件發送刪除端口的命令:“刪除端口BRk2veth-dsdk”,虛擬網橋組件執行命令,在虛擬網橋BRk2中刪除連接容器的端口以及該端口上的veth pair設備;
3.5.4容器加入退出網絡模塊檢查容器conB是否為容器網絡netY在當前容器運行節點中的最后一個容器;
3.5.5若容器conB不是網絡netY在當前容器運行節點中的最后一個容器,轉3.1,容器退出網絡的處理完成;否則,容器加入退出網絡模塊向虛擬網橋組件發送刪除命令:“刪除端口BRk2 vxlanBRk-xsdd”和“刪除網橋BRk2”,虛擬網橋組件執行命令,將虛擬網橋BRk2及其中的vxlan虛擬設備從當前主機中刪除,轉3.5.6;
3.5.6容器加入退出網絡模塊向主機列表更新模塊發送更新網絡主機列表命令,命令參數包括網絡名netY和當前容器運行節點;
3.5.7網絡主機列表更新模塊在主機列表更新模塊內netY關聯的網絡主機列表中刪除當前容器運行節點的IP地址,將新的容器網絡主機列表信息保存到中心數據庫,且網絡主機列表更新模塊停止監聽中心數據庫中netY關聯的網絡主機列表;轉3.1;
第四步,主機列表更新模塊從中心數據庫接收網絡主機列表更新消息,更新模塊內部的網絡主機列表,并更新虛擬設備的連接,具體執行步驟如下:
4.1主機列表更新模塊從中心數據庫接收網絡主機列表更新消息,消息內容為:容器網絡名、容器網絡相關聯的主機列表,令容器網絡名為netZ;
4.2主機列表更新模塊向VNI分配模塊發送獲取VNI命令,命令參數為netZ,得到容器網絡netZ的VNI值,假設為k3,以及容器網絡netZ在當前主機中對應的虛擬網橋名BRk3;
4.3主機列表更新模塊對比模塊內的網絡主機列表和網絡主機列表更新消息中的網絡主機列表即新網絡主機列表,得到新網絡主機列表中刪除的主機和新增的主機,這些主機都是容器運行節點;
4.4網絡主機列表更新模塊向虛擬網橋組件發送刪除vxlan虛擬設備命令:“刪除端口BRk3 vxlanBRk-xsdd”,其中BRk3為待刪除vxlan虛擬設備所連接的虛擬網橋,vxlanBRk-xsdd為待刪除vxlan虛擬設備名;虛擬網橋組件執行命令,在BRk3中刪除與該容器運行節點中虛擬網橋連接的vxlan設備;
4.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地址。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科技大學,未經中國人民解放軍國防科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910853433.4/1.html,轉載請聲明來源鉆瓜專利網。





