新虛擬網(wǎng)絡架構——Cable介紹
本文主要介紹為了統(tǒng)一管理不同編排系統(tǒng)的網(wǎng)絡模塊,簡化虛擬網(wǎng)絡功能的開發(fā)流程,虛擬網(wǎng)絡工作組實現(xiàn)的新虛擬網(wǎng)絡架構--Cable。
前言
OpenStack架構中,Neutron作為虛擬網(wǎng)絡模塊,管理虛機的網(wǎng)絡。隨著容器技術的發(fā)展,越來越多的應用部署到Kubernetes等容器編排系統(tǒng)中,而Kubernetes也有自帶的網(wǎng)絡管理模塊,如Flannel,Calico等。分別維護OpenStack、Kubernetes網(wǎng)絡模塊,不僅增加管理成本,且無法滿足虛機和容器網(wǎng)絡互通等需求。為了統(tǒng)一管理不同編排系統(tǒng)的網(wǎng)絡模塊,簡化虛擬網(wǎng)絡功能的開發(fā)流程,虛擬網(wǎng)絡工作組實現(xiàn)了新的虛擬網(wǎng)絡架構Cable。
背景簡介
目前公司的虛擬網(wǎng)絡架構有如下不足:
1、物理機、虛機和容器網(wǎng)絡分開管理,無法達到直接互聯(lián)互通;
2、Neutronagent里的DHCP、metadata采用集中式服務,健壯性不足;
3、vxlan實現(xiàn)時需要外部路由器的支持,較為復雜。
新的網(wǎng)絡架構需要滿足統(tǒng)一管理物理機、虛機和容器網(wǎng)絡,實現(xiàn)直接互聯(lián)互通;簡化Neutronagent,分布式架構實現(xiàn)DHCP、metadata等功能;在虛擬網(wǎng)絡層面實現(xiàn)vxlan;提供流量鏡像等新功能。
方案實現(xiàn)
Cable整體框架圖
為了滿足上訴需求,Cable架構實現(xiàn)了如下兩個關鍵點
1.虛擬數(shù)據(jù)平面
虛擬數(shù)據(jù)平面不再基于OVS,而是采用功能更為豐富的虛擬路由器vrouter.ko。vrouter.ko是Juniper的虛擬網(wǎng)絡架構OpenContrail中的開源數(shù)據(jù)模塊。相比于OVS的簡單數(shù)據(jù)包轉(zhuǎn)發(fā),vrouter.ko支持虛擬網(wǎng)絡路由、vxlan、流表配置安全組、流表配置nat/snat、流量鏡像等功能。豐富的數(shù)據(jù)平面功能,簡化了網(wǎng)絡功能模塊的開發(fā)難度。
2.自研管理平面
重新自研開發(fā)管理平面。管理平面統(tǒng)一管理OpenStack和Kubernetes網(wǎng)絡模塊;采用Kubernetes里的watch方式,主動監(jiān)控平臺資源變化情況,并執(zhí)行相關操作;分布式實現(xiàn)DHCP;用vrouter.ko中的flow功能實現(xiàn)nat、安全組等。
3.Cable工作流程
當用戶請求到達NeutronServer后,ContrailNeutronPlugin將請求轉(zhuǎn)發(fā)至Cable的控制節(jié)點(ControlNode)??刂乒?jié)點的proxy轉(zhuǎn)換請求發(fā)送至API,API將接收到的請求發(fā)送至相應模塊,其中controller負責具體的計算和分配工作,IPAM模塊負責網(wǎng)絡地址的管理。每臺計算節(jié)點部署了Cableagent,通過RestAPI監(jiān)聽ControlNode的資源,如監(jiān)聽到資源變化,則調(diào)用vrouter.ko執(zhí)行相應請求(添加/刪除/修改網(wǎng)絡信息)。
與Openstack兼容
Cable需要考慮如何與現(xiàn)有的虛擬網(wǎng)絡結構兼容,使得Neutron能夠平滑過渡到新的架構上。所以在保持Neutron原有接口不變的基礎上,將Neutron的db替換為etcd,并將DHCP-agent,metadata-agent,l3-agent替換為統(tǒng)一的cable-agent。將Neutron用Cable替代后,OpenStack的相關命令行和RestfulAPI都沒有變化,實現(xiàn)無縫切換,方便運維管理。
Cable代替Neutron后架構圖
總結
新的虛擬網(wǎng)絡架構,兼容了不同網(wǎng)絡平面,簡化了網(wǎng)絡功能模塊,使得網(wǎng)絡更為健壯。目前Cable的整體架構已經(jīng)基本開發(fā)完成,實現(xiàn)了DHCP、metadata和VLAN架構網(wǎng)絡,后續(xù)將實現(xiàn)安全組、VXLAN等更多功能,并實現(xiàn)自動化部署,完善監(jiān)控功能。
【本文是51CTO專欄機構360技術的原創(chuàng)文章,微信公眾號“360技術( id: qihoo_tech)”】