IaaS就是為用戶提供隔離的操作系統資源,對外可以以虛機、容器、VPC等外在形式表現出來。操作系統資源主要由計算、存儲、網絡三大資源組成,所以Neutron的職責應該是為用戶提供隔離的網絡服務,也即NaaS(Network as a Service)。
對于網絡來說:
二三層一般叫網絡拓撲,四到七層叫網絡服務(即網絡應用,如防火墻,負載均衡,入侵檢測系統,入侵防護,深度包檢測,數據緩存,廣域網加速等)。(網絡維護公司)
網絡拓撲可以由兩種技術實現,一是Overlay技術,一是新興的OpenFlow流技術。實現上二者在控制平面/轉發平面所做的事情的思想是一樣的。我們以Overlay舉例來控制平面與轉發平面的實現思想。
轉發平面,NaaS是為每一個用戶提供用戶隔離的網絡服務,一般使用標簽來隔離,如傳統的vlan,但它需要修改物理交換機,部署麻煩。于是,后來一般使用overlay技術,如gre, vxlan,nvgre, Geneve, stt,mpls over udp/gre等,同樣使用標簽segmention id來隔離用戶網絡流量,即通過自定義二層幀,通過UDP或QUIC或TCP Fast Open或IP或者別的什么上層協議傳送到遠端,再由遠端解析這個自定義幀。這個幀是自定義的,所以格式就五花八門,于是,市場上就出現了眾多的SDN產品,但其技術本質都是差不多的。于是,有人就想統一這個幀的格式,于是就有了Geneve。overlay的本質有兩個頭,一個是外部管理網段的頭,一個是內部租戶網段的頭,這樣天然為IPv4實現了NAT之類的網絡地址轉換。
Overlay網絡可以分為兩層,一是物理網絡,一是構建在物理層上的虛擬overlay網絡。(it外包)
物理網絡不需要和用戶信息關聯,它只是負責提供一個IP矩陣實現所有物理設備之間的單播IP可達性,并提供segmention id功能實現租戶隔離。而虛擬overlay網絡則會包含租戶的信息,即類似于VPN為每一個租戶都生成自己的路由信息,也叫轉發路由實例(VRF),例如在MPLS主干網上的流量在IP地址前都會添加一個全局唯一的路由標志符(Route Distinguisher, RD)形成唯一的VPN-IPv4地址來識別不同租戶的流量。PE路由器不應該交換全網所有租戶的路由,所以通過手工設定路由目標(Route Targe, RT)來設置從CE路由器向PE路由器導入導出哪些路由。只有所帶RT標記與VRF表中任意一個Import RT相符的路由才會被導入到VRF表中。RT使得PE路由器只包含和其直接相連的VPN的路由,而不是全網所有VPN的路由,從而節省了PE路由器的資源,提高了網絡拓展性。
控制平面,那么導入導出哪些路由完全可以由上層控制平面通過規則來設定,這種通過路由方式將虛機流量導流到底層IP隧道矩陣的做法天然將廣播隔離在了一個節點上,可以省略像Neutron DRV ARP responser特性。也可以天然地讓計算節點也具備三層功能隨意設置局域隔離的網關(fan, opencontrail都是這么干的)。這層還要做地址學習功能。
對于openflow來說,控制平面應該集中全局的VM, PORT, CONTROL, SWITCH的映射拓撲關系,這樣便可以計算給不同CONTROL上的不同SWITCH上的不同的PORT上的VM下發合適的流表(dragonflow就是這么干的)。還可以在邊緣出口路由器處運行Quagga等動態路由協議通過BGP或iBGP收集到動態路由結合ARP路由通過一些規則轉換成流表,如下列是RouteFlow的轉換規則:
Route =IP + MASK [Rede]+IP[Gateway]+Interface
ARP= IP[Host]+MAC[Host]+Interface
路由表轉換成流表:
Match: DST_MAC + DST_IP + SUBNET_MASK
Actions:
Re-Write [SRC_MAC (Interface)], Re-Write [DST_MAC (Nexthop)]
Forward [Port-out(Interface)]
在數據轉發平面方面的性能方面,可以采用用戶態協議棧,通過DPDK在用戶態直接操作硬件網卡,并且構建用戶態socket供上層調用。還可以引入Linux 4.x switchdev避免二層交換時引發CPU中斷從而為SR-IOV網卡提供交換加速功能。
所有SDN產品的大致思想都脫離不了上面的點。現在對照它,我們可以發現Neutron有很多不足之處:
先說nova-network, 它的multi-host功能可以讓每一個計算節點同時具備網絡三層功能,我們知道,一個子網是不能出現相同IP的網關的,而多個計算節點是可能出現相同子網的虛機的。所以對于multi-host而言對于同一個子網每一個計算節點上網關的IP都是不一樣的,這樣簡化了設計,但是問題是浪費了IP地址。
Neutron的DVR可以干同樣的事情,每一個計算節點上相同子網的網關都是相同的,但是通過流表來確保這個網關局部隔離。缺點是這種設計實現復雜度較高。
kubernetes則是事先假設每一個計算節點使用不重復的子網,這樣也就避免了計算節點上出現相同子網網關的問題,簡化了設計。
Neutron為二層提供了ML2插件來支持不同廠商的二層設備,在三層沒有提供插件只提供了一個L3-agent來支持三層設備,在四到七層提供了高級服務框架來支持不同的網絡服務。其缺點有:
北向API層做得太爛,如ACL,如QoS,如VPN等高級服務的API始終做不好或者因為有待商榷的代碼評審機制而發展滯后。
分得層數太多,尤其是將二層和三層分開了,這樣不利于讓所有節點同時具備三層功能。特別對于一些不分層的新興網絡技術如SDN是不適合的。二層和三層插件應該合并適應于SDN技術。
三層沒有插件,只有一個l3-agent。應該有插件結構,支持不同廠商的三層設備,特別是一些支持ACL的三層設備,支持跨廣域網的三層支持如MPLS VPN等.(北京it外包)
四到七層的服務鏈功能做得不好,同時,它的API只適合傳統的基本iptables服務鏈插入模型,不適合SDN基于流表的服務模型。
SDN的本質是數據轉發平面與集中控制平面相分離,數據轉發這塊主要是基于新興的openflow流以及基于overlay隧道技術,但其技術本質也是一樣的。overlay會對二層數據幀進行自定義,我們可以隨心所欲地改寫,添加兩個包頭,一個是內部包頭對應虛機網段,一個是外部包頭對應管理網段,天然進行內外網的網絡地址轉換。overlay層只負責通過隧道進行數據轉發,另外,其隧道最好是支持segmention id的有利于租戶間的隔離。控制平面首先要是集中的,它會記錄網絡和租戶間的對應關系,通過提供一些規則容易通過上面控制底層的流量轉發,如虛機出來的流量如何進入隧道,如果是經過路由那可以通過路由將廣播只限制在一臺物理機上,也可以像VPN一樣針對每個用戶建立路由轉發實例,也可以像DVR一樣直接響應需機的ARP請求和地址學習等。
艾銻無限是中國領先IT外包服務商,專業為企業提供IT運維外包、電腦維護、網絡維護、網絡布線、辦公設備維護、服務器維護、數據備份恢復、門禁監控、網站建設等多項IT服務外包,服務熱線:400-650-7820 聯系電話:010-62684652 咨詢QQ1548853602 地址:北京市海淀區北京科技會展2號樓16D,用心服務每一天,為企業的發展提升更高的效率,創造更大的價值。
更多的IT外包信息盡在艾銻無限http://www.richjn.cn
相關文章