文/石鴻偉 黃鳳芝
(1.網(wǎng)絡通信與安全紫金山試驗室未來網(wǎng)絡研究中心 江蘇省南京市 211111)
(2.河南工業(yè)大學電氣工程學院 河南省鄭州市 450001)
(3.南京鐵道職業(yè)技術(shù)學院機車車輛學院 江蘇省南京市 210031)
近幾年來,隨著全球一體化的經(jīng)濟發(fā)展,AR/VR、4K/8K等新興業(yè)務不斷涌現(xiàn),對底層網(wǎng)絡基礎設施資源的承載能力要求越來越高,其快速部署、按需定制、靈活編排、高可靠性以及高利用率成為主要需求。而云計算的出現(xiàn),充分利用計算虛擬化,網(wǎng)絡虛擬化,存儲虛擬化等相關技術(shù),可以為租戶提供便捷的、靈活的、穩(wěn)定的、按需的資源能力[1]。租戶可以基于其業(yè)務負載情況,快速發(fā)放和回收虛擬資源,同時租戶申請的虛擬資源可以靈活在運行狀態(tài)下從一臺服務器遷移到另外一臺服務器。
軟件定義網(wǎng)絡(Software Defined Network,SDN)是近幾年來興起并熱門的技術(shù),主要的技術(shù)理念是控制面和轉(zhuǎn)發(fā)面分離,將原先傳統(tǒng)網(wǎng)絡的分布式控制,抽象出來作為控制平面,并使用SDN控制器集中控制全網(wǎng)設備,降低網(wǎng)絡的復雜程度,網(wǎng)絡設備只負責單純的數(shù)據(jù)轉(zhuǎn)發(fā),實現(xiàn)了網(wǎng)絡流量的靈活控制,實現(xiàn)對網(wǎng)絡資源靈活的按需調(diào)配[2]。
隨著云計算的規(guī)模不斷擴大,企業(yè)租戶日益增多,租戶申請的虛擬機也隨著業(yè)務的擴展不斷增加,差異化的業(yè)務種類也隨之上升,底層網(wǎng)絡上各種特征的數(shù)據(jù)流量不斷復雜多樣化。通過云計算技術(shù)和SDN技術(shù)的相結(jié)合,可以很好的解決底層網(wǎng)絡拓撲變化頻率高,業(yè)務種類多流量變化大,全局敏捷感應等問題,滿足企業(yè)用戶多樣化、定制化的需求[3]。
但同時也帶來了另外的問題。
(1)在基于SDN/NFV技術(shù)的虛擬網(wǎng)絡中,虛擬網(wǎng)絡功能(Virtual Network Function,VNF)設備,雖然具有靈活性、敏捷性的優(yōu)勢,加快新業(yè)務部署的速度,同時也可以為企業(yè)用戶降低CAPEX(Capital Expenditures)支出[4]。但是無論從轉(zhuǎn)發(fā)性能還是穩(wěn)定性方面,都跟專用硬件設備有很大差距[5]。
(2)在傳統(tǒng)網(wǎng)絡中,已有的專用硬件設備,不支持虛擬化技術(shù),不支持SDN技術(shù),且無法納管到云計算虛擬網(wǎng)絡中,無法實現(xiàn)虛擬網(wǎng)絡和專用硬件設備統(tǒng)一編排管理,也就無法滿足專用硬件設備的按需調(diào)度,按需編排的業(yè)務需求。
如何將這些高性能、高可靠性的專用硬件設備接入到不斷擴大的云計算虛擬網(wǎng)絡中,成為當前亟需解決的難題。
本文在此方面進行了深入研究,依托擴展通信協(xié)議的研究方法,提出一種新型的服務鏈識別機制。通常在Openstack&SDN的網(wǎng)絡環(huán)境下,會采用VXLAN協(xié)議作為虛擬化網(wǎng)絡Overlay技術(shù)[6]。因此,本文通過研究擴展VXLAN網(wǎng)絡通信協(xié)議,實現(xiàn)虛擬網(wǎng)絡和專用硬件設備間的融合通信。具有支持多租戶的業(yè)務編排能力,為租戶提供靈活和可靠的安全防護能力。
圖1:NSH封裝格式
為了滿足業(yè)務的定制化需求,提供安全、穩(wěn)定、敏捷的網(wǎng)絡服務,業(yè)務數(shù)據(jù)報文在網(wǎng)絡中進行轉(zhuǎn)發(fā),通常會依據(jù)業(yè)務需求經(jīng)過多種多樣的業(yè)務節(jié)點(Service Node)。這些業(yè)務節(jié)點包括防火墻(FireWall,F(xiàn)W)、負載均衡(Load Balance,LB)、入侵檢測系統(tǒng)(Intrusion Detection System,IDS)、入侵防御系統(tǒng)(Intrusion Prevention System,IPS)等。通常情況下,網(wǎng)絡數(shù)據(jù)流量需要按照業(yè)務邏輯要求的既定順序,依次流經(jīng)這些業(yè)務節(jié)點,才能實現(xiàn)所需要的安全服務能力,從而形成 SDN定義的Overlay虛擬網(wǎng)絡中的服務鏈(Service Function Chaining,SFC)[7][8]。
基于SDN Overlay技術(shù)的服務鏈,每條服務鏈都具有唯一的標識,業(yè)務數(shù)據(jù)報文在轉(zhuǎn)發(fā)過程中,需要攜帶這些特征,需要對應的字段來記錄這些特征。包括業(yè)務數(shù)據(jù)報文屬于哪條服務鏈,當前業(yè)務數(shù)據(jù)報文在服務鏈中的跳數(shù)等。
網(wǎng)絡服務頭(Network Service Header,NSH)是專門為服務鏈設計的封裝格式[9],并且在開源SDN控制器OpenDaylight的SFC項目中采用。其封裝格式如圖1所示。
NSH報文頭包含三部分信息:
(1)NSH基本頭信息(32bits);
(2)服務路徑信息(32bits);
其中,
Service Path Identifier(SPI):表示一個服務鏈標識符(32bits)。
Service Index (SI):表示一個服務鏈上Service Function的位置(8 bits)。
(3)Metadata信息(可選的)。
由于NSH是對以太報文進行了字段擴展,可以攜帶更多的業(yè)務信息,完成更加復雜的業(yè)務處理。并且其帶有Protocol Type字段,因此可以承載于VXLAN、GRE等多種Overlay封裝中。
但是,由于NSH方案是對標準以太封裝進行字段擴展,所以需要硬件網(wǎng)絡設備的芯片支持這種擴展,而新型芯片推出和擴展并非易事,需要推動芯片相關的整個產(chǎn)業(yè)鏈的認同和真正的實際需求,才有可能大規(guī)模的生產(chǎn),從而降低芯片乃至整個網(wǎng)絡架構(gòu)的成本。短期看,支持NSH的芯片尚無法大規(guī)模投產(chǎn)應用。
鑒于目前硬件轉(zhuǎn)發(fā)設備(交換機、路由器等)普遍都采用支持VXLAN協(xié)議的芯片,本文設計一種新型的服務鏈識別機制,借鑒數(shù)據(jù)結(jié)構(gòu)中的聯(lián)合體思想,在Overlay網(wǎng)絡中,復用VXLAN協(xié)議中的VNI字段,而不是單純的字段擴展方式,擴展VXLAN網(wǎng)絡通信協(xié)議。借助物理SDN交換機作為接入設備,將專用硬件設備(防火墻、負載均衡等)接入虛擬網(wǎng)絡。
圖2:網(wǎng)絡組網(wǎng)示意圖
圖3:擴展的VXLAN協(xié)議報文圖
圖4:VXLAN報文和VLAN報文映射關系圖
本方案可以支持識別不同的服務鏈,在服務鏈的每一跳之間轉(zhuǎn)發(fā)業(yè)務數(shù)據(jù)報文時,對數(shù)據(jù)報文外層的VXLAN報文頭進行重新編解碼,實現(xiàn)對業(yè)務數(shù)據(jù)報文的識別以及指導轉(zhuǎn)發(fā),從而實現(xiàn)虛擬網(wǎng)絡和硬件專用設備協(xié)同控制以及編排管理。
為了能夠?qū)S糜布O備(防火墻、IPS)接入虛擬網(wǎng)絡,本文采用通過物理SDN交換機作為接入設備,進行組網(wǎng)接入,如圖2所示。
構(gòu)造一個服務鏈編排試驗場景,由虛擬機1向虛擬機2及虛擬機3的發(fā)送數(shù)據(jù)流。按照服務鏈業(yè)務需求,數(shù)據(jù)報文將依次經(jīng)過已定義的防火墻,IPS設備。在計算節(jié)點A OVS、計算節(jié)點B OVS和物理SDN交換機之間是由SDN控制器構(gòu)建的VXLAN隧道,提供跨物理節(jié)點的二、三層通信及租戶隔離等虛擬網(wǎng)絡能力。
3.2.1 SDN交換機之間鏈路
計算節(jié)點A OVS交換機,計算節(jié)點B OVS交換機以及物理SDN交換機通過SDN控制器兩兩之間通過VXLAN隧道構(gòu)建Overlay網(wǎng)絡。
圖5:業(yè)務邏輯處理流程圖
圖6:軟件系統(tǒng)架構(gòu)圖
本文通過擴展VXLAN協(xié)議中VNI字段進行服務鏈的標識。VNI總長度24位,擴展方式如下:
設置高6位作為 SFC TTL,服務鏈的跳數(shù),當一個服務鏈多次進入一個主機下的不同服務點時,可以通過匹配 SFC TTL確定是第幾次進入該服務節(jié)點。最大可以支持64跳。
設置低18位作為 SFC Segment ID,記錄服務鏈編號,用于唯一確定一個服務鏈。最大可以支持262144條業(yè)務服務鏈。如圖3所示。
3.2.2 物理SDN交換機與專用硬件設備之間鏈路
由于物理SDN交換機與所接入的防火墻和IPS之間不構(gòu)建VXLAN隧道,兩者之間是通過原始數(shù)據(jù)報文進行傳遞,數(shù)據(jù)報文經(jīng)過物理SDN交換機處理后,剝掉VXLAN報文頭,VNI信息丟失,轉(zhuǎn)發(fā)給專用硬件設備處理,當專用硬件設備處理完成后,將數(shù)據(jù)包送回給物理SDN交換機時,在物理SDN交換機上,如何識別該數(shù)據(jù)包屬于哪條服務鏈,如何重新填充VNI信息,封裝VXLAN報文頭,是一個重要問題。
本文中,采用VNI和VLAN ID做Mapping映射的機制進行解決。在物理SDN交換機剝掉VXLAN報文頭,根據(jù)VNI的信息重新為數(shù)據(jù)報文打上VLAN ID,送到專用硬件設備進行處理,處理完成后,攜帶相同的VLAN ID送回給物理SDN交換機,物理SDN交換機根據(jù)VLAN ID信息還原VNI信息,SFC TTL減1,SFC Segment ID保持不變,重新封裝VXLAN報文頭,在服務鏈中繼續(xù)轉(zhuǎn)發(fā)。如圖4所示。
完整的業(yè)務邏輯處理流程如圖5所示。
在步驟01、步驟02,SDN控制器接收創(chuàng)建服務鏈請求,計算并下發(fā)服務鏈轉(zhuǎn)發(fā)表項至各SDN交換機。
在步驟03、步驟04,計算節(jié)點A OVS接受來自虛擬機1的請求數(shù)據(jù)流,根據(jù)匹配流表項判斷數(shù)據(jù)包是否屬于服務鏈并處于該服務鏈的第一跳,若數(shù)據(jù)包不屬于服務鏈,則執(zhí)行步驟06,按照正常轉(zhuǎn)發(fā)流程進行數(shù)據(jù)轉(zhuǎn)發(fā),若數(shù)據(jù)包屬于服務鏈,則執(zhí)行步驟05,封裝該數(shù)據(jù)包至VXLAN隧道,并修改VNI為服務鏈專有VNI,發(fā)送至物理SDN交換機。
在步驟07,物理SDN交換機接收到轉(zhuǎn)發(fā)過來的數(shù)據(jù)包,并根據(jù)轉(zhuǎn)發(fā)表項識別數(shù)據(jù)包如步驟08、步驟10。若數(shù)據(jù)包來自VXLAN隧道,且VNI為當前服務鏈ID,則執(zhí)行步驟09,解封裝VXLAN數(shù)據(jù)包,并為之添加VLAN報文頭,修改VLAN ID為防火墻使用VLAN,并轉(zhuǎn)發(fā)至防火墻。若數(shù)據(jù)包來自防火墻過濾之后的VLAN數(shù)據(jù),則執(zhí)行步驟13,根據(jù)端口和VLAN識別該數(shù)據(jù)包所屬服務鏈,若下一跳需轉(zhuǎn)發(fā)至IPS設備,修改VLAN為IPS設備使用VLAN,轉(zhuǎn)發(fā)至IPS設備。若數(shù)據(jù)包來自IPS設備過濾后的VLAN數(shù)據(jù),則執(zhí)行步驟11,根據(jù)端口和VLAN識別該數(shù)據(jù)包所屬服務鏈,若為當前服務鏈最后一跳,則封裝至VXLAN隧道,修改VNI為目的虛擬機2、虛擬機3所屬租戶網(wǎng)絡VNI,并發(fā)送至虛擬機2、虛擬機3所在計算節(jié)點B OVS上。
在步驟14,物理SDN交換機接收數(shù)據(jù)包,按照正常轉(zhuǎn)發(fā)流程處理數(shù)據(jù)包。
按照以上設計原理及方案進行了軟件系統(tǒng)實現(xiàn),完成試驗仿真平臺。軟件系統(tǒng)架構(gòu)如圖6所示。
前端采用Vue框架以及后端采用SprintBoot框架設計實現(xiàn),提供友好的人機交互界面。
數(shù)據(jù)采集:通過對虛擬機和物理機的安全、服務、狀態(tài)、資源等信息進行監(jiān)控,采集虛擬機的相關數(shù)據(jù)。
數(shù)據(jù)分析:對采集到的數(shù)據(jù)進行智能分析處理,將分析結(jié)果采用可視化的圖形界面進行展示。
流量統(tǒng)計:負責對虛擬機和SDN交換機進行流量統(tǒng)計。
流量清洗:對數(shù)據(jù)流量進行實時監(jiān)控,及時發(fā)現(xiàn)包括攻擊在內(nèi)的異常流量。在不影響正常業(yè)務的前提下,清洗掉異常流量。
故障檢測:監(jiān)控虛擬機的健康狀態(tài),當監(jiān)控到主節(jié)點不可用時,及時將流量切換到備節(jié)點。
負載分擔:監(jiān)控虛擬機的性能,當系統(tǒng)超負荷時,動態(tài)生成新實例,實現(xiàn)負荷分擔。
VPN功能:支持通過VPN讓外網(wǎng)用戶接入虛擬網(wǎng)絡。
QoS功能:通過QoS限速和優(yōu)先級功能,保證網(wǎng)絡的高效運行。
云平臺管理采用基于開源軟件Openstack設計實現(xiàn),提供計算資源、存儲資源的虛擬化能力。
SDN控制器采用基于開源軟件OpenDaylight設計實現(xiàn),提供網(wǎng)絡資源的虛擬化能力以及業(yè)務編排能力。
編排配置:負責管理網(wǎng)絡編排服務的相關配置,包括VNF配置、PNF配置、VNFFG配置和NS配置。
圖7:試驗流量示意圖
編排管理:分為基礎網(wǎng)絡編排和網(wǎng)絡服務編排,通過給用戶提供可視化的界面,完成網(wǎng)絡拓撲的構(gòu)建和網(wǎng)絡業(yè)務鏈的自定義編排。
生命周期管理:負責VNF和終端的生命周期管理。
業(yè)務策略管理:通過對虛擬機的監(jiān)控,實現(xiàn)VNF主備和動態(tài)伸縮的業(yè)務策略。
用戶管理:對管理員和普通用戶不同角色的權(quán)限管理。
系統(tǒng)管理:包括配額管理、規(guī)格管理和鏡像管理,屬于網(wǎng)絡編排服務的基礎配置。
云平臺管理:通過對云平臺的管理,完成虛擬機的創(chuàng)建,為網(wǎng)絡編排業(yè)務提供基礎設施。
ODL控制器管理:通過ODL控制器下發(fā)流表,實現(xiàn)面向業(yè)務流的自動化編排。
SDN交換機管理:通過SDN交換機,實現(xiàn)與網(wǎng)絡中間設備的交互。
網(wǎng)絡中間設備管理:通過添加網(wǎng)絡中間設備,實現(xiàn)網(wǎng)絡編排服務的虛實結(jié)合功能。
服務器采用通用X86服務器。物理SDN交換機采用盛科V580交換機。防火墻、IPS分別采用X86服務器結(jié)合pfSense以及Snort模擬實現(xiàn)。
應用試驗仿真平臺,構(gòu)建2臺虛擬機以及1臺物理防火墻試驗場景,進行服務鏈編排功能驗證。
試驗目標為,試驗用戶按照需求構(gòu)建網(wǎng)絡拓撲,創(chuàng)建服務鏈,并下發(fā)到轉(zhuǎn)發(fā)設備上,在經(jīng)過服務鏈編排后,同一子網(wǎng)內(nèi)的虛擬機vm1到vm2的流量經(jīng)過硬件防火墻進行清洗過濾,實現(xiàn)防火墻對流量的策略控制。如圖7所示。
首先,試驗用戶通過光纖將硬件防火墻接入到物理SDN交換機上,并在試驗仿真平臺上,拖拽網(wǎng)絡元素,包括子網(wǎng)、虛擬機以及防火墻網(wǎng)元,構(gòu)建網(wǎng)絡拓撲。按照試驗需求,指定服務鏈,進行業(yè)務編排,創(chuàng)建試驗。如圖8所示。
然后,進行試驗驗證。
當防火墻規(guī)則設置為允許時,通過平臺系統(tǒng)登錄vm1,執(zhí)行 ping vm2操作,會看到vm1可以ping通vm2。如圖9所示。
當防火墻規(guī)則設置為禁止時,通過平臺系統(tǒng)登錄vm1,執(zhí)行 ping vm2操作,會看到vm1不可以ping通vm2。如圖10所示。
試驗證明,在將硬件防火墻接入到虛擬網(wǎng)絡后,通過業(yè)務編排,指定服務鏈,利用新型服務鏈識別機制,業(yè)務數(shù)據(jù)報文是可以按照指定的服務鏈需求,經(jīng)過了硬件防火墻,執(zhí)行對應的防火墻策略控制,滿足試驗的需求。
本文借助擴展通信協(xié)議的研究方法,基于主流的VXLAN網(wǎng)絡協(xié)議進行擴展,提出了一種新型的服務鏈識別機制,并設計研發(fā)試驗仿真平臺,對底層的虛擬網(wǎng)絡和硬件防火墻進行試驗驗證。通過在仿真平臺上構(gòu)建自定義拓撲、按需指定服務鏈、以及防火墻策略控制。可以很直觀的看到轉(zhuǎn)發(fā)面業(yè)務流量完全按照指定服務鏈的要求進行轉(zhuǎn)發(fā),硬件防火墻的安全策略也同時生效。最終實現(xiàn)了虛擬網(wǎng)絡和專用硬件設備之間的融合通信??梢詾樽鈶艟W(wǎng)絡提供靈活可靠的安全防護能力,滿足新興的業(yè)務需求。
圖8:試驗詳情頁面
圖9:VM1可以ping通界面
圖10:VM1禁止ping通界面