用于實現(xiàn)服務(wù)鏈的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,具體涉及基于SDN(Software Defined Networking,軟件定義網(wǎng)絡(luò))的服務(wù)鏈(service chaining),更具體涉及一種用于實現(xiàn)服務(wù)鏈的方法和裝置。
【背景技術(shù)】
[0002]近年來,隨著云計算的日益普及,云安全特別是網(wǎng)絡(luò)安全成為一個十分突出的問題。人們付出越來越多的努力利用新興技術(shù)來提供云網(wǎng)絡(luò)中的動態(tài)和靈活的安全功能。一個典型的例子是使用基于SDN的服務(wù)鏈動態(tài)地提供虛擬網(wǎng)絡(luò)安全服務(wù)。
[0003]SDN是一種新興的計算機網(wǎng)絡(luò)技術(shù),其將做出關(guān)于將通信流發(fā)送到哪兒的決策的系統(tǒng)(稱為控制面)與將通信流轉(zhuǎn)發(fā)到選定目標的底層系統(tǒng)(稱為數(shù)據(jù)面)解耦。控制面通常包括SDN控制器,而數(shù)據(jù)面通常包括一組互連的交換機。控制面使用例如OpenFlow等通信機制與數(shù)據(jù)面進行通信。
[0004]服務(wù)鏈是指一組服務(wù)構(gòu)成的鏈,即一組服務(wù)的有序集合。這些服務(wù)可稱為中間盒(middlebox),其可執(zhí)行對通信流的轉(zhuǎn)換、檢查、過濾等各種操作,從而可提供例如防火墻等網(wǎng)絡(luò)安全功能。中間盒通常通過一組交換機相互物理連接。服務(wù)鏈提供了受限制的點到點的轉(zhuǎn)發(fā)服務(wù),其中從特定源到特定目標的通信流必須以給定順序經(jīng)過由一組給定中間盒構(gòu)成的第二層(L2)路徑。
[0005]基于SDN的服務(wù)鏈技術(shù)面臨如下幾個挑戰(zhàn):中間盒可以位于網(wǎng)絡(luò)中的任何位置,甚至可以動態(tài)遷移;中間盒難以被尋址,因為很多中間盒表現(xiàn)得像黑洞,對于任何偵聽、探測都不會進行響應(yīng);傳統(tǒng)的第二層(以太網(wǎng))轉(zhuǎn)發(fā)是無狀態(tài)的,其轉(zhuǎn)發(fā)僅根據(jù)目標MAC地址,因此,例如在中間盒A和B都沒有MAC地址的情況下,很難知道應(yīng)當(dāng)在訪問A之后訪問B0
[0006]目前存在著基于SDN的服務(wù)鏈的實現(xiàn)方案,例如使用CiscovPath封裝的CiscoNexuslOOOv等。但這些方案存在幾個缺點,包括:中間盒接收的數(shù)據(jù)包并非原始的數(shù)據(jù)包,因此需要特殊的中間盒硬件或軟件;無法解決不支持MAC地址的中間盒的處理問題;一個交換機上掛載多個中間盒時可能出現(xiàn)的重入問題;使用私有協(xié)議;性能不足;最大傳輸單元(MTU)過大等。
[0007]因此,本領(lǐng)域中需要一種改進的基于SDN的服務(wù)鏈的實現(xiàn)方案。
【發(fā)明內(nèi)容】
[0008]在本發(fā)明的一個方面,提供了一種用于實現(xiàn)服務(wù)鏈的方法,包括:修改步驟,響應(yīng)于接收到屬于服務(wù)鏈的包并且要將該包發(fā)送到該服務(wù)鏈中下一跳的交換機,將該包的原始目標MAC地址修改為該服務(wù)鏈中下一跳的中間盒的指定MAC地址,并將該包的原始源MAC地址修改為編碼有該包的狀態(tài)信息的編碼數(shù)據(jù);以及恢復(fù)步驟,響應(yīng)于要將該包發(fā)送到該服務(wù)鏈中當(dāng)前跳的中間盒,將該包的修改后的目標MAC地址恢復(fù)為該包的原始目標MAC地址,并將該包的修改后的源MAC地址恢復(fù)為該包的原始源MAC地址。
[0009]在本發(fā)明的另一個方面,提供了一種用于實現(xiàn)服務(wù)鏈的方法,包括:響應(yīng)于在交換機處接收到包,根據(jù)該包的源MAC地址、目標MAC地址和接收端口在轉(zhuǎn)發(fā)表中查找匹配的規(guī)貝U,其中,轉(zhuǎn)發(fā)表中的規(guī)則指定了包的源MAC地址、目標MAC地址和接收端口與將對包的源MAC地址和目標MAC地址執(zhí)行的修改或恢復(fù)操作和包的轉(zhuǎn)發(fā)端口之間的映射;響應(yīng)于在轉(zhuǎn)發(fā)表中找到匹配的規(guī)則,對該包的源MAC地址和目標MAC地址執(zhí)行匹配的規(guī)則中指定的修改或恢復(fù)操作,并通過匹配的規(guī)則中指定的轉(zhuǎn)發(fā)端口轉(zhuǎn)發(fā)該包,其中,所述修改操作包括:將該包的原始目標MAC地址修改為該服務(wù)鏈中下一跳的中間盒的指定MAC地址,并將該包的原始源MAC地址修改為編碼有該包的狀態(tài)信息的編碼數(shù)據(jù);并且其中,所述恢復(fù)操作包括:將該包的修改后的目標MAC地址恢復(fù)為該包的原始目標MAC地址,并將該包的修改后的源MAC地址恢復(fù)為該包的原始源MAC地址。
[0010]在本發(fā)明的又一個方面,提供了一種用于實現(xiàn)服務(wù)鏈的裝置,包括:修改裝置,被配置為響應(yīng)于接收到屬于服務(wù)鏈的包并且要將該包發(fā)送到該服務(wù)鏈中下一跳的交換機,將該包的原始目標MAC地址修改為該服務(wù)鏈中下一跳的中間盒的指定MAC地址,并將該包的原始源MAC地址修改為編碼有該包的狀態(tài)信息的編碼數(shù)據(jù);以及恢復(fù)裝置,被配置為響應(yīng)于要將該包發(fā)送到該服務(wù)鏈中當(dāng)前跳的中間盒,將該包的修改后的目標MAC地址恢復(fù)為該包的原始目標MAC地址,并將該包的修改后的源MAC地址恢復(fù)為該包的原始源MAC地址。
[0011]在本發(fā)明的再一個方面,提供了一種用于實現(xiàn)服務(wù)鏈的裝置,包括:被配置為響應(yīng)于在交換機處接收到包,根據(jù)該包的源MAC地址、目標MAC地址和接收端口在轉(zhuǎn)發(fā)表中查找匹配的規(guī)則的裝置,其中,轉(zhuǎn)發(fā)表中的規(guī)則指定了包的源MAC地址、目標MAC地址和接收端口與將對包的源MAC地址和目標MAC地址執(zhí)行的修改或恢復(fù)操作和包的轉(zhuǎn)發(fā)端口之間的映射;被配置為響應(yīng)于在轉(zhuǎn)發(fā)表中找到匹配的規(guī)則,對該包的源MAC地址和目標MAC地址執(zhí)行匹配的規(guī)則中指定的修改或恢復(fù)操作,并通過匹配的規(guī)則中指定的轉(zhuǎn)發(fā)端口轉(zhuǎn)發(fā)該包的裝置,其中,所述修改操作包括:將該包的原始目標MAC地址修改為該服務(wù)鏈中下一跳的中間盒的指定MAC地址,并將該包的原始源MAC地址修改為編碼有該包的狀態(tài)信息的編碼數(shù)據(jù);并且其中,所述恢復(fù)操作包括:將該包的修改后的目標MAC地址恢復(fù)為該包的原始目標MAC地址,并將該包的修改后的源MAC地址恢復(fù)為該包的原始源MAC地址。
[0012]在本發(fā)明的還一個方面,提供了一種SDN控制器,包括:中間盒管理器,被配置為管理中間盒及其偽MAC地址;服務(wù)鏈管理器,被配置為通過維護服務(wù)鏈表管理服務(wù)鏈,所述服務(wù)鏈表包含服務(wù)鏈標識與服務(wù)鏈的中間盒列表之間的映射;會話管理器,被配置為通過維護會話表管理會話,所述會話表包含會話標識、服務(wù)鏈標識、包的原始目標MAC地址、原始源目標MAC地址之間的映射;包處理模塊,被配置為:響應(yīng)于從交換機接收到包,根據(jù)該包的源MAC地址和目標MAC地址以及所述會話表和服務(wù)鏈表確定包所屬的服務(wù)鏈和會話以及包當(dāng)前在服務(wù)鏈中的位置,從而確定將對包的源MAC地址和目標MAC地址執(zhí)行的修改或恢復(fù)操作以及包的轉(zhuǎn)發(fā)端口,并形成包含包的源MAC地址、目標MAC地址、接收端口與將對包的源MAC地址和目標MAC地址執(zhí)行的修改或恢復(fù)操作和轉(zhuǎn)發(fā)端口之間的映射的規(guī)則;對包的源MAC地址和目標MAC地址執(zhí)行所確定的修改或恢復(fù)操作,并通過所確定的轉(zhuǎn)發(fā)端口轉(zhuǎn)發(fā)該包;將所形成的規(guī)則發(fā)送到交換機,以便由交換機存儲到轉(zhuǎn)發(fā)表中,以用于對后續(xù)包的處理和轉(zhuǎn)發(fā),其中,所述修改操作包括:將該包的原始目標MAC地址修改為該服務(wù)鏈中下一跳的中間盒的指定MAC地址,并將該包的原始源地址修改為編碼有該包的狀態(tài)信息的編碼數(shù)據(jù);以及其中,所述恢復(fù)操作包括:將該包的修改后的目標MAC地址恢復(fù)為該包的原始目標MAC地址,并將該包的修改后的源MAC地址恢復(fù)為該包的原始源MAC地址。
[0013]根據(jù)本發(fā)明的各實施例的技術(shù)方案的優(yōu)點包括以下一項或多項:由主機和中間盒看到的通信流將保持原來格式,而沒有變化,這樣服務(wù)提供對于租戶和中間盒來說都是透明的,因此不影響現(xiàn)有的網(wǎng)絡(luò)轉(zhuǎn)發(fā);交換機上的轉(zhuǎn)發(fā)規(guī)則將由SDN控制器產(chǎn)生,不需要對交換機硬件做出任何改變,因此服務(wù)鏈的部署將是容易和靈巧的;SDN交換機可以很好地集成到現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,甚至可以和非SDN交換機一起工作;此外,轉(zhuǎn)發(fā)規(guī)則可由SDN控制器動態(tài)更新,服務(wù)鏈容易管理,這提供了靈活的性能和安全支持。
【附圖說明】
[0014]通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。
[0015]圖1示出了第二層包的結(jié)構(gòu);
[0016]圖2示出了根據(jù)本發(fā)明的實施例修改后的包的結(jié)構(gòu);
[0017]圖3示出了根據(jù)本發(fā)明的實施例的通過修改源MAC地址獲得的編碼字的示例結(jié)構(gòu);
[0018]圖4示出了根據(jù)本發(fā)明的實施例的用于實現(xiàn)服務(wù)鏈的方法針對一示例性SDN網(wǎng)絡(luò)拓撲和示例性服務(wù)鏈的示例性操作過程;
[0019]圖5示出了根據(jù)本發(fā)明的實施例的針對圖4所示的示例性SDN網(wǎng)絡(luò)拓撲和示例性服務(wù)鏈的包的轉(zhuǎn)發(fā)過程;
[0020]圖6示出了根據(jù)本發(fā)明的實施例的用于實現(xiàn)服務(wù)鏈的方法的示例性流程圖;
[0021]圖7示出了根據(jù)本發(fā)明的實施例的SDN控制器的結(jié)構(gòu)框圖及運行所在的SDN網(wǎng)絡(luò)的體系結(jié)構(gòu)圖;以及
[0022]圖8示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機系統(tǒng)/服務(wù)器12的框圖。
【具體實施方式】
[0023]下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。
[0024]本發(fā)明基于以下要求或假設(shè):
[0025]1.中間盒被當(dāng)作第二層設(shè)備,其表現(xiàn)為黑洞(即,從不對任何請求/偵聽/掃描做出響應(yīng)),其包括防火墻、入侵防止/檢測系統(tǒng)、數(shù)據(jù)泄露防止系統(tǒng)等;
[0026]2.中間盒被“置于”特定通信流的線內(nèi)(inline):相關(guān)通信流在到達目標之前以預(yù)定順序通過各中間盒;
[0027]3.每個中間盒本身是第二層透明的,表現(xiàn)得類似于導(dǎo)線(開關(guān)),即它具有兩個接口,并將通信流從一個接口 “移動”(清除)到另一個接口 ;
[0028]4.不同的服務(wù)鏈可共享中間盒;
[0029]5.中間盒可被置于第二層網(wǎng)絡(luò)中的任何位置;
[0030]6.一個雙向鏈可被實現(xiàn)為兩個單向鏈,因此這里只考慮單向鏈。
[0031]本發(fā)明的基本思想可概括為在服務(wù)鏈的跳(hop)之間傳輸包時對包的目標MAC地址和源MAC地址進行編碼,而在每一跳處進行解碼。這里,跳可被理解為服務(wù)鏈中的中間盒及其所連接的交換機。
[0032]具體地,在向服務(wù)鏈的下一跳傳輸包時,包的目標MAC地址將被修改為下一跳的中間盒的MAC地址。與IP轉(zhuǎn)發(fā)機制類似,每個中間盒將被分配一個偽MAC地址;偽MAC地址與真MAC地址的作用類似,即用于尋址中間盒。
[0033]此外,包的源MAC地址將被修改為載有包在服務(wù)鏈中的狀態(tài)的編碼字。由于包的源MAC地址很少用于轉(zhuǎn)發(fā)目的,因此修改源MAC地址對(無論是SDN網(wǎng)絡(luò)還是傳統(tǒng)網(wǎng)絡(luò)的)轉(zhuǎn)發(fā)機制影響很小。適當(dāng)修改包的源MAC地址還可以避免“誤導(dǎo)”源學(xué)習(xí)機制:當(dāng)包含源MAC地址的包通過“使用定義鏈”(use-defined chain)中的路徑時,拓撲學(xué)習(xí)機制可能會得到錯誤的鄰接矩陣(adjacent matrix)。修改后的編碼字可包括包所屬的會話的ID(其用于在跳之間取回原來的MAC地址),以及包在服務(wù)鏈中的狀態(tài)信息(例如,包當(dāng)前在鏈中的位置)。此外,該編碼字還可以包括一編碼字指示器,其位于編碼字前部,用來指示該字段并非普通的MAC地址,而是根據(jù)本發(fā)明的編碼字。所述編碼字指示器可屬于保留的MAC地址范圍,以便與普通的MAC地址相區(qū)別。
[0034]在每一跳的交換機處,在將包傳送到中間盒之前,應(yīng)確保將包頭恢復(fù)為原來的包頭(包括原始