您好,登錄后才能下訂單哦!
這篇文章主要介紹了OpenStack SFC的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
SFC簡介
計算虛擬化之后,對網絡也提出了虛擬化的要求,虛擬網卡,虛機交換機,虛擬路由器,overlay網絡拓撲自定義,虛擬機到處漂移,傳統網絡添加網絡高級服務的方法已經無法應對這多復雜多變的局面了。
SFC全稱Service Function Chain,RFC 7665 Service Function Chaining (SFC) Architecture對SFC的體系做了很詳細的介紹。end to end流量中間要有序經過FW,NAT,IDS等網絡功能單元,對這些網絡功能的定義和管理,以及引導流量如何有序經過這些網絡功能單元就是SFC。為什么現在需要SFC,是因為以前FW,NAT,IDS等網絡功能單元是實體物理設備,它的部署位置是和網絡拓撲強相關的,所有流量共享這些設備,而且流量經過這些設備的序列是固定死的,總結是不夠靈活,而SFC可以自定義網絡功能單元,自定義流量路徑,很好給SDN網絡提供了支撐。
SFC首先由classifier識別出要經過這條chain的流量,然后再不斷地經過這條chain上的service function,從classifier到第一個service function和從上一下service function到下一個service function,報文都要做封裝,目前主推的是RFC 8300 Network Service Header (NSH),封裝頭一般包含chain id和chain上的位置,就是這個報文走的是哪個chain,現在在chain上走了幾步了,這樣靠這個頭就可以保證報文走正確的chain,而且在chain上依次一個一個地走service function,不會重復走service function,也不會跳過一些service function。NSH頭可以包含更多字段,攜帶數據以便service function之間共享信息。
從上一個service function到下一個service function由sf forwarder來轉發,service function又分為service function aware和service function unaware,service function aware可以正確解析報文攜帶的NSH頭,反之service function unaware就不能識別NSH等這樣的頭,需要proxy把NSH等這頭去掉,再發往service function中。
2
network-sfc
networking-sfc是openstack中實現sfc功能的一個項目,openstack neutron中port是一個很重要概念,所以networking-sfc就把port連在一起形成一條chain,就是service function chain,在opnestack中叫做port chain,RFC中并沒有說SFF和SF怎么傳遞報文,port chain明確指出用port,而且分為ingress port和egress port。networking-sfc實現了neutron extension,對外提供api,service plugin負責真正干活,plugin又包含各種各樣的driver,其中就有ovs driver,ovs driver和計算節點上opensvswitch agent 中的sfc extension用rpc通信。
networking-sfc中有如下幾個重要概念:
port pair
port pair就是一個service function節點上一對口,一個port是ingress進service function,另一個port是egress出service function,ingress和egress可以是同一個port,這個port能進能出,是否需要proxy由參數創建port pair時的參數--service-function-parameters correlation=xxxx來指定。
port pair group
port pair group包含一個或者多個port pair,主要是為了做流量負載均衡,假如一條chain中有兩個firewall service function,流量可以走任意一個firewall就可以,port pair group就是干這事的,指導流量在這兩個firewall上負載均衡,創建port pair group時指定參數,例如--port-pair-group-parameters lb_fields=ip_src&ip_dst。
port chain
port chain把一些port pair group按順序指定好,再加一個classifier識別出流量上第一個service function就形成了一個port chain。流量怎么裝由參數--chain-parameters correlation=<correlation-type>,symmetric=<boolean>]來指定。
service graph
service graph把幾條chain組合在一起形成一個復雜的流量多路徑,流量經過一條chain后分叉,兩個分支分別走不同的chain,理論上這個graph不能形成環路。
3
networking-sfc模式
chain
流量只有一條路徑,從src依次經過service function節點到dst,service function有一個ingress port和一個egress port,ingress和egress port可以是同一個port。
tap
這種模式適用于IDS等流量只進不出的模式,流量復制一份到IDS,繼續流向下一個節點。
LB
流量在兩個service function節點之間做負載均衡,具體由openflow的group表來實現,根據報文的信息(eth_src,eth_dst,ip_src,ip_dst,tcp_src,tcp_dst,udp_src,udp_dst)來hash。
service graph
4
應用
這是一個networking-sfc service graph的例子,分為四條port chain,每個service function是一條單獨的chain,service graph實現了分叉再合并。流量從src出來到sf1,分叉到sf2和sf3,sf4合并sf2和sf3出來的流量,最后送給dst。用的是networking-sfc的ovs driver,src,sf1,sf2,sf3,sf4,dst都是虛擬機,分布在兩個不同的物理上,物理機之間用vxlan tunnel通信。由于ovs實現的NSH的bug,導致流量轉發不通,這里用MPLS做SFC封裝。
流表最大的特點就是分叉點或者合并點引進了reg0,原來的流表match in_port=xxx和 flowclassifier,然后就到group table。現在變成in_port前一個port chain的最后一個service function的egress port,把label暫存在reg0中,resubmit(,0),然后match reg0和flowclassifier送去group table,把原來的一條流表變成了多條。group table相同就合并,group table不同就分叉了。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“OpenStack SFC的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。