本公開涉及通信網(wǎng)絡,更加具體地涉及域間服務功能鏈接(chaining)。
背景技術:
網(wǎng)絡服務在許多網(wǎng)絡中被廣泛部署并且是重要的。服務提供一系列功能,例如安全性、廣域網(wǎng)加速、防火墻、服務器負載平衡、深度數(shù)據(jù)包檢測、入侵檢測服務、以及網(wǎng)絡地址轉換(nat)??梢栽诰W(wǎng)絡基礎設施中的不同的點(包括例如廣域網(wǎng)、數(shù)據(jù)中心、校園等等)處采用網(wǎng)絡服務。服務可以作為服務鏈的一部分被采用。
附圖說明
圖1示出可以實現(xiàn)本文描述的實施例的網(wǎng)絡的示例;
圖2描繪了可用于實現(xiàn)本文描述的實施例的網(wǎng)絡設備的示例;
圖3是示出根據(jù)一個實施例的用于域間服務功能鏈接的過程的概述的流程圖;
圖4是示出根據(jù)一個實施例的圖1的網(wǎng)絡中的域間服務功能鏈接的示例的圖示;
圖5是示出根據(jù)一個實施例的在另一網(wǎng)絡拓撲中的域間服務功能鏈接的示例的圖示。
在附圖的幾個視圖中,相應的參考標號表示相應的部分。
具體實施方式
概述
在一個實施例中,方法通常包括:在位于第一管理域的邊界處的網(wǎng)絡設備處接收服務功能鏈中的數(shù)據(jù)包,該數(shù)據(jù)包包括服務功能路徑標識符和服務索引;在網(wǎng)絡設備處處理數(shù)據(jù)包,其中處理包括基于服務功能路徑標識符和服務索引來修改數(shù)據(jù)包以將該數(shù)據(jù)包引導到第二管理域;以及從該網(wǎng)絡設備轉發(fā)數(shù)據(jù)包到第二管理域以用于在服務功能鏈中進行處理。服務功能鏈在第一管理域和第二管理域上延伸。
在另一實施例中,裝置通常包括處理器,該處理器用于在第一管理域的邊界處處理在服務功能鏈中接收到的數(shù)據(jù)包,該數(shù)據(jù)包包括服務功能路徑標識符和服務索引,基于服務功能路徑標識符和服務索引修改數(shù)據(jù)包,以及將數(shù)據(jù)包轉發(fā)到第二管理域。該裝置還包括用于存儲用于基于服務功能路徑標識符和服務索引來修改數(shù)據(jù)包的指令的存儲器。服務功能鏈在第一管理域和第二管理域上延伸。
示例性實施例
以下說明被呈現(xiàn)以使得本領域普通技術人員能夠做出和使用這些實施例。對具體實施例和應用的描述僅僅作為示例被提供,并且對于本領域技術人員來說各種修改將是顯而易見的。在不脫離這些實施例的范圍的情況下,本文描述的一般原理可以被用于其他應用。因此,實施例不限于所示出的那些實施例,而是符合與本文所描述的原理和特征相一致的最寬范圍。出于清楚的目的,與和實施例相關的技術領域中已知的技術材料相關的細節(jié)沒有被詳細描述。
服務鏈是這樣的數(shù)據(jù)結構,其定義了托管各種服務功能以及這些服務功能應該被用于所選流量的數(shù)據(jù)的順序的服務節(jié)點的集合。服務鏈接涉及對流量的攔截和通過一系列服務節(jié)點(即,物理設備或虛擬設備)對流量進行指引,其中每個服務節(jié)點支持一個或多個服務功能。經(jīng)過各種服務功能被從入口/分類器實例化至出口的路徑被稱為服務功能路徑(sfp)。
網(wǎng)絡服務報頭(nsh)是可以被添加到用于服務鏈的幀/數(shù)據(jù)包的數(shù)據(jù)平面報頭。該報頭包含用于服務鏈接的信息,以及由網(wǎng)絡節(jié)點和服務元件所添加和消耗的元數(shù)據(jù)。nsh可以跨一系列設備(物理設備和虛擬設備兩者)使用。在一個示例中,可以如由p.quinn等于2014年7月3日發(fā)表的ietf草案“networkserviceheader”(draft-quinn-sfc-nsh-03.txt)中描述的實現(xiàn)nsh。
用于服務鏈接的常規(guī)技術通常被構建用于在單個控制平面實體的控制下的單個管理域(路由域、自治系統(tǒng))。隨著近期基于云的服務的增長,可能會將服務功能分布在各種管理域中,在這種情況下,存在使服務鏈跨越多個管理域的需求。例如,基于服務功能及其位置,數(shù)據(jù)包可能需要遍歷兩個或更多個管理域。
本文描述的實施例允許服務功能鏈跨越多個管理域,而不受針對服務功能位置或處理順序的限制。在某些實施例中,報頭重寫可以被用作邊界節(jié)點上的服務功能以將流量引導到不同的管理域。如下所述,服務功能路徑可以以在向下一個域發(fā)送數(shù)據(jù)包之前發(fā)生邊界節(jié)點重寫的方式來被實例化。例如,在某些實施例中,sfp可以用服務索引(si)來被實例化,其中si指向具有與下一個域相關聯(lián)的sfp/si細節(jié)的重寫報頭。服務路徑標識符(id)和服務索引的組合可以用于以正確的順序來應用正確的服務功能而無論服務功能的位置如何。實施例允許服務功能鏈以任何順序跨越任意數(shù)量的管理域,而無需在域之間進行地址泄露。
現(xiàn)在參考附圖,并且首先參考圖1,其示出了可以實現(xiàn)本文所描述的實施例的網(wǎng)絡。出于簡化的目的,僅僅示出了少量節(jié)點。這些實施例在包括多個網(wǎng)絡設備的數(shù)據(jù)通信網(wǎng)絡的上下文中進行操作。網(wǎng)絡可以包括經(jīng)由任意數(shù)量的節(jié)點(例如,路由器、交換機、控制器、網(wǎng)關、或其他網(wǎng)絡設備)進行通信的任意數(shù)量的網(wǎng)絡設備,所述節(jié)點輔助在網(wǎng)絡內的數(shù)據(jù)的傳送。
圖1的示例中所示的網(wǎng)絡包括位于兩個管理域13(自治系統(tǒng)1(as1)、自治系統(tǒng)2(as2))中的多個網(wǎng)絡設備10、12、14、16(例如,路由器)。每個自治系統(tǒng)as1、as2可以被分配有標識該as的唯一的號碼(自治系統(tǒng)號碼(asn))。網(wǎng)絡可以包括任意數(shù)量的管理域(自治系統(tǒng)、路由域)13,各自由單獨的技術管理實體控制并且共享公共路由政策。管理域13被用來將網(wǎng)絡劃分為應用本地路由策略的各個路由域。管理域13可以各自包括任意數(shù)量的網(wǎng)絡18,并且每個網(wǎng)絡可以包括任意數(shù)量的邊緣設備10、12、14、16或中間(核心)節(jié)點(例如,路由器、交換器、接入層設備、聚合層設備、網(wǎng)關、或其他網(wǎng)絡設備)。
在圖1中示出的示例中,每個as13包括兩個自治系統(tǒng)通過其進行通信的邊界節(jié)點14(邊界1、邊界2)。邊界節(jié)點14可以是路由器或其他合適的網(wǎng)絡設備。可以在邊界節(jié)點14之間插入任意數(shù)量的網(wǎng)絡設備。
圖1示出的網(wǎng)絡18各自包括多個服務節(jié)點10、分類器/入口路由器12或出口路由器16、以及邊界路由器14。如本文所使用的術語“路由器”可以指的是被配置用來執(zhí)行路由功能的任何網(wǎng)絡設備(例如,路由器、交換機/路由器)。在圖1示出的示例中,as1包括與as2中的邊界路由器(邊界2)通信的分類器12和邊界路由器(邊界1)14。as2還包括出口路由器16。分類器(頭-端節(jié)點)12位于服務鏈的起始處,并且出口節(jié)點16位于服務鏈的結束處。分類器12可以執(zhí)行分類,施加網(wǎng)絡服務報頭,以及創(chuàng)建服務路徑。在圖1所示的示例中,由于節(jié)點12是服務鏈中的第一個節(jié)點(如下所述),所以節(jié)點12被稱為分類器或入口節(jié)點,并且節(jié)點18作為服務鏈中的出口節(jié)點操作。應當理解,節(jié)點12、16可以作為不同服務鏈中的入口節(jié)點/分類器或出口節(jié)點而操作。
服務節(jié)點10各自托管或支持應用于通過相應的服務節(jié)點的流量的有效載荷的一個或多個服務功能15。在服務功能鏈接架構中,節(jié)點10基于該節(jié)點執(zhí)行的功能可以被稱為“服務功能轉發(fā)器”。服務節(jié)點10是托管一個或多個服務功能并且具有用于可達性和服務遞送的與其相關聯(lián)的一個或多個網(wǎng)絡定位器的物理或虛擬元件。在圖1所示的示例中,as1在服務節(jié)點sn1和sn3處分別托管服務功能sf1和sf3。as2在服務節(jié)點sn2和sn4處分別托管服務功能sf2和sf4。服務功能15負責對接收到的數(shù)據(jù)包的特定處理,并且可以在網(wǎng)絡層或其他osi(開放系統(tǒng)互連)層操作。服務功能15可以是虛擬實例或被嵌入物理網(wǎng)絡元件中。例如,服務節(jié)點10可以是托管一個或多個服務功能的物理設備。服務節(jié)點10可以是能夠托管任何服務功能的任何網(wǎng)絡設備(例如,商用硬件)。多個服務功能可以被嵌入在同一網(wǎng)絡元件中。服務功能15可以在與服務節(jié)點10通信中的另一節(jié)點處執(zhí)行,如圖1所示,或者在服務節(jié)點10處實現(xiàn)。邊界節(jié)點19也可以具有附接到其的服務功能。
節(jié)點10、12、14、16中的一個或多個可以與控制器17(例如,odl(opendaylight)控制器、sdn(軟件定義網(wǎng)絡)控制器、或其他集中式服務器)進行通信。例如,每個管理域13可以包括與針對該域的分類器節(jié)點12、服務節(jié)點10、和邊界節(jié)點14進行通信的控制器17??刂破?7可以是物理設備或虛擬元件,并且可以位于一個網(wǎng)絡設備處,或者例如遍及網(wǎng)絡被分布在彼此進行通信的或與中央控制器進行通信的不同網(wǎng)絡設備處。控制器17(或另一網(wǎng)絡設備)可以包括定義一個或多個服務鏈的服務鏈接邏輯。如下所述,控制器17還可以被用于在重寫模塊19處用重寫指令對邊界路由器14進行編程。
服務節(jié)點10可以用于實現(xiàn)一個或多個服務功能鏈(服務鏈)。服務功能鏈定義了要被應用于選擇作為分類的結果的數(shù)據(jù)包(幀)的服務功能的有序集合。服務功能路徑是網(wǎng)絡中服務功能鏈的實例化。
在某些實施例中,用于服務鏈接的數(shù)據(jù)平面被定義在網(wǎng)絡服務報頭(nsh)中。nsh是被添加到幀/數(shù)據(jù)包的數(shù)據(jù)平面報頭,并且包含服務鏈接所需的信息,以及由網(wǎng)絡節(jié)點(例如,服務節(jié)點10)和服務元件(例如,服務功能15)所添加和消耗的元數(shù)據(jù)。入口節(jié)點12可以例如為nsh施加服務功能路徑標識符(sfpid)和服務索引(si),其將沿著服務路徑并應用一組服務。服務節(jié)點10使用nsh中的服務索引來標識服務功能并且轉發(fā)用于處理的數(shù)據(jù)包。應當理解,本文描述的服務報頭、服務功能路徑標識符、和服務索引僅僅是示例,并且在不脫離實施例的范圍的情況下可以使用其他類型的報頭或標識符。例如,服務功能路徑標識符可以是被用于指示由參與的節(jié)點使用的用于路徑選擇的服務路徑的任何類型的標識符。本文所使用的術語“服務索引”可以指的是提供在服務路徑中的位置的任何類型的網(wǎng)絡定位器。在某些實施例中,服務報頭包括服務路徑標識符和服務索引。
如在以下示例中所描述的,數(shù)據(jù)包沿著服務功能路徑從分類器12經(jīng)過必需的服務功能15。管理域as1的擁有者可以例如希望包括{sf1,sf2,sf3,sf4}的服務,但是在本地域as1內只可獲得所期望的服務功能的子集。因此,服務鏈的構建需要跨越管理域as1和as2兩者??刂破?7可以使用一個或多個本地服務功能和一個或多個遠程服務功能來建立域間服務鏈。例如,在圖1所示的網(wǎng)絡中服務鏈可以被定義為sfp=(sf1,sf2,sf3,sf4}。由于服務功能的本質及其位置,數(shù)據(jù)包可能需要在兩個管理域13之間來回移動。
在某些實施例中,邊界路由器14可以接收服務鏈中的數(shù)據(jù)包,基于數(shù)據(jù)包中標識的服務功能路徑和服務索引來修改報頭(例如,nsh),以及將經(jīng)修改的數(shù)據(jù)包轉發(fā)到服務鏈中的另一管理域以提供域間服務功能鏈接。如下面詳細描述的,實施例可以將邊界節(jié)點14處的報頭重寫19用作服務功能以修改數(shù)據(jù)包。sfp可以例如在邊界節(jié)點14上用服務索引來實例化,該服務索引指向用下一個域和相關聯(lián)的sfp/服務索引細節(jié)來重寫報頭。當需要時邊界節(jié)點14可以根據(jù)sfp重寫報頭,以及將數(shù)據(jù)包轉發(fā)到下一個域用于處理。sfpid和服務索引可以用來以正確的順序應用正確的服務功能而不考慮服務功能的位置,從而提供域間服務功能鏈接。
應當理解,圖1所示的網(wǎng)絡僅僅是示例,并且在不脫離實施例的范圍的情況下,本文描述的實施例可以被實現(xiàn)在在包括不同網(wǎng)絡拓撲或網(wǎng)絡設備的網(wǎng)絡或者使用不同的網(wǎng)絡協(xié)議的網(wǎng)絡中。例如,可以具有任意數(shù)量或類型的管理域13、網(wǎng)絡18、服務節(jié)點10、或控制器17。這些實施例可以通過vxlan(虛擬可擴展lan)、傳輸控制協(xié)議(tcp)、udp(用戶數(shù)據(jù)報協(xié)議)、或任何其他合適的運輸操作。
圖2示出了可以用于實現(xiàn)本文描述的實施例的網(wǎng)絡設備20(例如,圖1中的邊界路由器14)的示例。在一個實施例中,網(wǎng)絡設備20是可以在硬件、軟件、或其任何組合中實現(xiàn)的可編程機器。網(wǎng)絡設備20包括一個或多個處理器22、存儲器24、網(wǎng)絡接口26、和重寫模塊19。
存儲器24可以是存儲供處理器22執(zhí)行和使用的各種應用、操作系統(tǒng)、模塊、和數(shù)據(jù)的易失性存儲器或非易失性存儲器。例如,重寫模塊19的組件(例如,代碼、邏輯、軟件、固件等等)可以被存儲在存儲器24中。
邏輯可以被編碼在一個或多個有形介質中用于由處理器22執(zhí)行。例如,處理器22可以執(zhí)行存儲在諸如存儲器24的計算機可讀介質中的代碼。計算機可讀介質可以是例如電子介質(例如,ram(隨機存取存儲器)、rom(只讀存儲器)、eprom(可擦除可編程只讀存儲器))、磁介質、光學介質(例如,cd,dvd)、電磁介質、半導體技術、或任何其他合適的介質。在某些實施例中,邏輯可以被編碼在非暫態(tài)計算機可讀介質中。
網(wǎng)絡接口26可以包括用于接收數(shù)據(jù)或向其他設備發(fā)送數(shù)據(jù)的任意數(shù)量的接口(線路卡、端口)。如圖1所示,邊界路由器19各自包括用于在服務鏈上發(fā)送數(shù)據(jù)包的接口。網(wǎng)絡接口26可以包括,例如用于連接到計算機或網(wǎng)絡的以太網(wǎng)接口。
應當理解,圖2中示出的和上文描述的網(wǎng)絡設備20僅僅是示例,并且可以使用網(wǎng)絡設備的不同配置。例如,網(wǎng)絡設備20還可以包括可操作來促進本文描述的功能的硬件、軟件、算法、處理器、設備、組件或元件的任何適合的組合。
圖3是示出根據(jù)一個實施例的用于域間服務功能鏈接的過程的概述的流程圖。在步驟30處,位于第一管理域(例如,as1)中的網(wǎng)絡設備(例如,圖1中的邊界路由器14)接收在至少兩個不同管理域上延伸的服務功能鏈中的數(shù)據(jù)包。該數(shù)據(jù)包包括服務功能路徑標識符和服務索引。邊界路由器14基于服務功能路徑標識符和服務索引來修改數(shù)據(jù)包(步驟32)。邊界路由器14可以例如根據(jù)服務功能路徑重寫數(shù)據(jù)包報頭(例如,nsh)。然后,邊界路由器14將數(shù)據(jù)包轉發(fā)到在經(jīng)修改的數(shù)據(jù)包中指定的第二管理域(例如,as2),用于在第二管理域的服務功能鏈中處理數(shù)據(jù)包(步驟34)。
應當理解,圖3所示的和以上描述的流程圖僅僅是示例,并且步驟可以在不脫離實施例的范圍的情況下被添加、組合、或修改。
以下示例根據(jù)一個實施例描述了圖1的網(wǎng)絡中的域間服務功能鏈接的實現(xiàn)方式。服務路徑被定義為sfp={sf1,sf2,sf3,sf4}。由于服務功能的本質及其位置,數(shù)據(jù)包需要在兩個管理域(as1、as2)之間來回移動。當sfp被實例化時,邊界節(jié)點14被命令基于服務索引重寫域id和服務路徑id。例如,托管sf1的服務節(jié)點sn1被命令在將數(shù)據(jù)包處理為sfp的一部分之后在服務鏈上發(fā)送該數(shù)據(jù)包到邊界1。邊界1可以如下被編程:
邊界1:
when{sfp-id=100}{
when{service_index=2}{
rewritenshheader;
setsfp-id=200;
setservice_index=3;
forwardtoborder2;
}
when{service_index=6){
setservice_index=7;
forwardtosn3;
}
when{service_index=8}{
rewritenshheader;
setsfp-id=200;
setservice_index=9;
forwardtoborder2;
}
邊界2可以如下被編程:
when{sfp-id=200}{
when{service_index=3}{
setservice_index=4;
fowardtosn2;
}
when{service_index=5}{
rewritenshheader;
setsfp-id=100;
setservice_index=6;
forwardtoborder1;
}
when{service_index=9}{
setservice_index=10;
forwardtosn4;
}
圖4示出了基于上述服務鏈和編程的數(shù)據(jù)包的處理。一旦在分類器12處接收到數(shù)據(jù)包,該分類器就對數(shù)據(jù)包進行分類并且將sfpid標識為100以待應用(圖4中的步驟1)。分類器12將數(shù)據(jù)包轉發(fā)到服務節(jié)點sn1。服務節(jié)點sn1接收具有sfpid=100和服務索引(si)=1的數(shù)據(jù)包(步驟2)。在由服務功能sf1處理后,服務節(jié)點sn1將si增加(incrsi++)到2并且將數(shù)據(jù)包轉發(fā)到邊界1。邊界1用sfpid=200重寫nsh,將si增加到3,并且將數(shù)據(jù)包轉發(fā)到邊界2(步驟3)。一旦接收到數(shù)據(jù)包,邊界2就將si增加到4,并且將數(shù)據(jù)包轉發(fā)到服務節(jié)點sn2(步驟4)。服務節(jié)點sn2接收具有sfpid=200和服務索引=4的數(shù)據(jù)包(步驟5)。在由服務功能sf2處理后,服務節(jié)點sn2將si增加到5,并且將數(shù)據(jù)包轉發(fā)到邊界2。然后,邊界2用sfpid=100重寫nsh報頭,將si增加到6并且將數(shù)據(jù)包轉發(fā)到邊界1(步驟6)。一旦接收到數(shù)據(jù)包,邊界1就將si增加到7,并且將數(shù)據(jù)包轉發(fā)到服務節(jié)點sn3(步驟7)。服務節(jié)點sn3接收具有sfpid=100和服務索引=7的數(shù)據(jù)包(步驟8)。在由服務功能sf3處理后,服務節(jié)點sn3將si增加到8,并且將數(shù)據(jù)包轉發(fā)到邊界1。邊界1用sfpid=200重寫nsh報頭,將si增加到9并且將數(shù)據(jù)包轉發(fā)到邊界2(步驟9)。之后,邊界2然后將si增加到10,并且將數(shù)據(jù)包轉發(fā)到服務節(jié)點sn4(步驟10)。服務節(jié)點sn4接收具有sfpid=200和服務索引=10的數(shù)據(jù)包(步驟11)。在由服務功能sf4處理之后,服務節(jié)點sn4解封裝該數(shù)據(jù)包(例如,移除nsh),并且將數(shù)據(jù)包轉發(fā)到出口節(jié)點16。
如上文所述,本文描述的實施例可以在包括兩個以上管理域的網(wǎng)絡中實現(xiàn)。圖5示出了涉及三個自治系統(tǒng)(as1、as2、as3)的示例。在該示例中,每個as包括一個服務節(jié)點和一個服務功能。
一旦接收到數(shù)據(jù)包,分類器12就將數(shù)據(jù)包分類,并且將sfpid標識為100以待應用(圖5中的步驟1)。分類器12將數(shù)據(jù)包轉發(fā)到sn1。服務節(jié)點sn1接收具有sfpid=100和服務索引(si)=1的數(shù)據(jù)包(步驟2)。在由服務功能sf1處理后,服務節(jié)點sn1將si增加到2并且將數(shù)據(jù)包轉發(fā)到邊界1。邊界1用sfpid=200重寫nsh,將si增加到3并且將數(shù)據(jù)包轉發(fā)到邊界2(步驟3)。一旦接收到數(shù)據(jù)包,邊界2就將si增加到4,并且將數(shù)據(jù)包發(fā)送到sn2(步驟4)。服務節(jié)點sn2接收具有sfpid=200和服務index=4的數(shù)據(jù)包(步驟5)。在由服務功能sf2處理后,服務節(jié)點sn2將si增加到5,并且將數(shù)據(jù)包發(fā)送到邊界3。然后,邊界3用sfpid=300重寫nsh報頭,將si增加到6并且將數(shù)據(jù)包轉發(fā)到邊界4(步驟6)。一旦接收到數(shù)據(jù)包,邊界4就將si增加到7并且將數(shù)據(jù)包轉發(fā)到服務節(jié)點sn3(步驟7)。服務節(jié)點sn3接收具有sfpid=300和服務索引=7的數(shù)據(jù)包(步驟8)。在由服務功能sf3處理之后,服務節(jié)點對數(shù)據(jù)包進行解封裝(例如,移除nsh),并且將數(shù)據(jù)包轉發(fā)到出口節(jié)點16。
如從上述內容可以看出,本文描述的實施例提供了許多優(yōu)點。一個或多個實施例允許服務鏈在任意數(shù)量的管理域上延伸,并且以任何順序傳遞到這些管理域中的任何部分而無需在域之間進行地址泄露,因而在域之間保留了隱私。此外,由于數(shù)據(jù)包在離開第一域時被修改,所以無需對第二域的入口節(jié)點進行分類。
盡管已經(jīng)根據(jù)示出的實施例描述了方法和裝置,但本領域普通技術人員將很容易認識到,在不脫離本發(fā)明的范圍的情況下可以對實施例做出改變。因此,意在以上描述中所包含的和在附圖中示出的所有內容應被理解為是說明性的而不是限制性的。