利用事務(wù)來計(jì)算和傳播網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)的制作方法
【專利摘要】說明了一種用于管理網(wǎng)絡(luò)的控制器的配置托管轉(zhuǎn)發(fā)元件的方法,所述網(wǎng)絡(luò)包含在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)的多個(gè)托管轉(zhuǎn)發(fā)元件,所述方法包括根據(jù)在所述多個(gè)托管轉(zhuǎn)發(fā)元件中實(shí)現(xiàn)的邏輯網(wǎng)絡(luò)的當(dāng)前網(wǎng)絡(luò)策略,產(chǎn)生用于定義托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的第一組流表項(xiàng)。所述方法把第一組流表項(xiàng)發(fā)送給托管轉(zhuǎn)發(fā)元件,以便使托管轉(zhuǎn)發(fā)元件可以根據(jù)當(dāng)前網(wǎng)絡(luò)策略,轉(zhuǎn)發(fā)該托管轉(zhuǎn)發(fā)元件直接從終端機(jī)器接收的數(shù)據(jù)。所述方法根據(jù)邏輯網(wǎng)絡(luò)的新的網(wǎng)絡(luò)策略,產(chǎn)生用于修改托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的第二組流表項(xiàng)。所述方法把第二組流表項(xiàng)發(fā)送給托管轉(zhuǎn)發(fā)元件,以便使該托管轉(zhuǎn)發(fā)元件可以根據(jù)新的網(wǎng)絡(luò)策略,轉(zhuǎn)發(fā)數(shù)據(jù)。
【專利說明】利用事務(wù)來計(jì)算和傳播網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)
【背景技術(shù)】
[0001]在網(wǎng)絡(luò)內(nèi),是網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)把分組從分組的網(wǎng)絡(luò)入口點(diǎn)運(yùn)送到它們的出口點(diǎn)。逐跳地,轉(zhuǎn)發(fā)狀態(tài)使網(wǎng)絡(luò)元件把分組轉(zhuǎn)發(fā)給更靠近分組的目的地一步的元件。顯然,計(jì)算與配置的網(wǎng)絡(luò)策略一致的轉(zhuǎn)發(fā)狀態(tài)對網(wǎng)絡(luò)的運(yùn)行至關(guān)緊要。這是因?yàn)槿绻麤]有適當(dāng)?shù)霓D(zhuǎn)發(fā)狀態(tài),那么網(wǎng)絡(luò)將不會(huì)把分組遞送給其目的地,也不會(huì)按照配置的策略進(jìn)行轉(zhuǎn)發(fā)。
【發(fā)明內(nèi)容】
[0002]本發(fā)明的一些實(shí)施例提供一種更新轉(zhuǎn)發(fā)狀態(tài),以指定新的網(wǎng)絡(luò)策略的控制器群集。所述控制器群集按照轉(zhuǎn)發(fā)元件始終如一地把新的網(wǎng)絡(luò)策略應(yīng)用于分組,而不應(yīng)用新舊策略的混合的方式,把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給一組轉(zhuǎn)發(fā)元件。
[0003]在一些實(shí)施例中,控制器群集配置在分組的路徑的起點(diǎn)的第一跳托管轉(zhuǎn)發(fā)元件,以作出轉(zhuǎn)發(fā)分組的所有邏輯轉(zhuǎn)發(fā)決策(例如,找出邏輯出口端口,并識(shí)別邏輯出口端口的物理出口端口)。在分組的路徑中的其它托管和非托管轉(zhuǎn)發(fā)元件不作出關(guān)于所述分組的邏輯轉(zhuǎn)發(fā)決策,從而不需要接收轉(zhuǎn)發(fā)狀態(tài)。這些其它轉(zhuǎn)發(fā)元件僅僅用作根據(jù)分組的源信息和目的地信息,把分組發(fā)送給目的地的架構(gòu)。分組不需要攜帶任何版本信息,以指示該分組應(yīng)利用更新的轉(zhuǎn)發(fā)狀態(tài)來轉(zhuǎn)發(fā)。這是因?yàn)殛P(guān)于該分組的所有轉(zhuǎn)發(fā)決策都由第一跳的托管轉(zhuǎn)發(fā)元件進(jìn)行,非第一跳的轉(zhuǎn)發(fā)元件不接收更新的轉(zhuǎn)發(fā)狀態(tài)。當(dāng)分組由根據(jù)新策略作出所有邏輯轉(zhuǎn)發(fā)決策的第一跳的托管轉(zhuǎn)發(fā)元件轉(zhuǎn)發(fā)時(shí),所述分組僅僅依據(jù)新策略被轉(zhuǎn)發(fā)。
[0004]在一些實(shí)施例中,控制器群集按照邏輯轉(zhuǎn)發(fā)決策被分散在第一跳轉(zhuǎn)發(fā)元件以及非第一跳轉(zhuǎn)發(fā)元件內(nèi),并且由第一跳轉(zhuǎn)發(fā)元件以及非第一跳轉(zhuǎn)發(fā)元件進(jìn)行的方式,配置托管轉(zhuǎn)發(fā)元件。在這些實(shí)施例中,控制器群集首先把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給在分組的路徑中的非第一跳轉(zhuǎn)發(fā)元件。只有在控制器群集把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給非第一跳轉(zhuǎn)發(fā)元件之后,控制器群集才把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給分組的第一跳轉(zhuǎn)發(fā)元件。控制器群集隨后指令第一跳轉(zhuǎn)發(fā)元件利用更新的轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)該分組。在一些實(shí)施例中,由第一跳轉(zhuǎn)發(fā)元件轉(zhuǎn)發(fā)的分組攜帶指示應(yīng)利用更新的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)該分組的版本信息。按照這種方式,確保將按照新的網(wǎng)絡(luò)策略,轉(zhuǎn)發(fā)由第一跳轉(zhuǎn)發(fā)元件轉(zhuǎn)發(fā)給非第一跳轉(zhuǎn)發(fā)元件的分組。
[0005]本發(fā)明的一些實(shí)施例還提供一種托管轉(zhuǎn)發(fā)元件,所述托管轉(zhuǎn)發(fā)元件被配置成跨該托管轉(zhuǎn)發(fā)元件與網(wǎng)絡(luò)控制器群集中的幾個(gè)網(wǎng)絡(luò)控制器建立的一組通道,實(shí)現(xiàn)事務(wù)。特別地,在通過特定通道收到分界線之前,一些實(shí)施例的托管轉(zhuǎn)發(fā)元件不提交通過各個(gè)通道接收的轉(zhuǎn)發(fā)狀態(tài)。托管轉(zhuǎn)發(fā)元件通過其它通道收到的分界線不會(huì)使托管轉(zhuǎn)發(fā)元件提交收到的轉(zhuǎn)發(fā)狀態(tài)。即,只有在從特定通道收到分界線之后,托管轉(zhuǎn)發(fā)元件才提交轉(zhuǎn)發(fā)狀態(tài)。這樣,托管轉(zhuǎn)發(fā)批處理通過其它通道到來的事務(wù)輸入和通過所述特定通道到來的事務(wù)輸入。
[0006]上面的
【發(fā)明內(nèi)容】
用來簡要介紹本發(fā)明的一些實(shí)施例。并不意圖介紹或概述在本文中公開的所有發(fā)明主題。下面的【具體實(shí)施方式】和在【具體實(shí)施方式】中參照的附圖將進(jìn)一步說明在
【發(fā)明內(nèi)容】
中說明的各個(gè)實(shí)施例,以及其它實(shí)施例。因而,為了理解本文描述的所有實(shí)施例,需要完整地回顧
【發(fā)明內(nèi)容】
、【具體實(shí)施方式】和附圖。此外,要求保護(hù)的主題不受
【發(fā)明內(nèi)容】
、【具體實(shí)施方式】和附圖中的例證細(xì)節(jié)限定制,而是由附加的權(quán)利要求限定,因?yàn)橐蟊Wo(hù)的主題可用其它具體形式體現(xiàn),而不脫離所述主題的范圍。
【專利附圖】
【附圖說明】
[0007]附加權(quán)利要求中記載了本發(fā)明的新穎特征。然而,為了便于說明,在以下附圖中例示了本發(fā)明的幾個(gè)實(shí)施例。
[0008]圖1描述網(wǎng)絡(luò)控制器的例證分層結(jié)構(gòu)。
[0009]圖2圖解說明一些實(shí)施例的網(wǎng)絡(luò)控制器的體系結(jié)構(gòu)。
[0010]圖3圖解說明跨一組托管轉(zhuǎn)發(fā)元件實(shí)現(xiàn)的多個(gè)邏輯交換元件的例子。
[0011]圖4圖解說明在物理基礎(chǔ)結(jié)構(gòu)中實(shí)現(xiàn)的幾個(gè)邏輯轉(zhuǎn)發(fā)元件。
[0012]圖5圖解說明把更新的轉(zhuǎn)發(fā)狀態(tài)信息發(fā)送給一組托管轉(zhuǎn)發(fā)元件。
[0013]圖6概念地圖解說明一些實(shí)施例進(jìn)行的向一組托管轉(zhuǎn)發(fā)元件發(fā)送更新的轉(zhuǎn)發(fā)狀態(tài)信息的過程。
[0014]圖7概念地圖解說明一些實(shí)施例進(jìn)行的在托管轉(zhuǎn)發(fā)元件,接收更新的轉(zhuǎn)發(fā)狀態(tài)的過程。
[0015]圖8圖解說明向一組托管轉(zhuǎn)發(fā)元件發(fā)送更新的轉(zhuǎn)發(fā)狀態(tài)信息。
[0016]圖9概念地圖解說明一些實(shí)施例進(jìn)行的向一組托管轉(zhuǎn)發(fā)元件發(fā)送更新的轉(zhuǎn)發(fā)狀態(tài)信息的過程。
[0017]圖10概念地圖解說明一些實(shí)施例進(jìn)行的在托管轉(zhuǎn)發(fā)元件,接收更新的轉(zhuǎn)發(fā)狀態(tài)的過程。
[0018]圖11概念地圖解說明一些實(shí)施例進(jìn)行的事務(wù)性地計(jì)算并把轉(zhuǎn)發(fā)狀態(tài)發(fā)送給一組托管轉(zhuǎn)發(fā)元件的過程。
[0019]圖12圖解說明控制器群集的幾個(gè)控制器建立了到其的幾個(gè)通信通道,以便向其發(fā)送更新的托管轉(zhuǎn)發(fā)元件。
[0020]圖13概念地圖解說明一些實(shí)施例進(jìn)行的把通過一組輔通道接收的事務(wù)批量集中(batching)到通過主通道接收的事務(wù)中的過程。
[0021]圖14概述地圖解說明實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的電子系統(tǒng)。
【具體實(shí)施方式】
[0022]在本發(fā)明的以下詳細(xì)說明中,記載和說明了本發(fā)明的眾多細(xì)節(jié)、例子和實(shí)施例。然而,對本領(lǐng)域的技術(shù)人員來說,本發(fā)明顯然并不局限于記載的實(shí)施例,在沒有所討論的一些具體細(xì)節(jié)和例子的情況下,也可以實(shí)踐本發(fā)明。
[0023]一些實(shí)施例提供其中網(wǎng)絡(luò)控制器計(jì)算轉(zhuǎn)發(fā)狀態(tài)信息,以推送給一組托管轉(zhuǎn)發(fā)元件,以便定義所述一組托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的網(wǎng)絡(luò)控制系統(tǒng)。控制器還更新轉(zhuǎn)發(fā)狀態(tài)信息,以修改托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為。當(dāng)網(wǎng)絡(luò)控制器更新轉(zhuǎn)發(fā)狀態(tài)信息時(shí),控制器把更新的轉(zhuǎn)發(fā)狀態(tài)信息向下推送給托管轉(zhuǎn)發(fā)元件,以致托管轉(zhuǎn)發(fā)元件按照更新的轉(zhuǎn)發(fā)狀態(tài)信息,在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)(例如,呈數(shù)據(jù)分組的形式)。
[0024]在一些實(shí)施例中,控制器按照在分組的路徑中的所有托管轉(zhuǎn)發(fā)元件都應(yīng)用更新的轉(zhuǎn)發(fā)狀態(tài)信息的方式,把更新的轉(zhuǎn)發(fā)狀態(tài)信息推送給托管轉(zhuǎn)發(fā)元件。例如,在一些實(shí)施例中,控制器把在分組的路徑中的第一跳轉(zhuǎn)發(fā)元件配置成進(jìn)行所有的邏輯轉(zhuǎn)發(fā)決策,以致所述路徑中的其它轉(zhuǎn)發(fā)元件僅僅起把分組轉(zhuǎn)發(fā)到目的地的架構(gòu)的作用。在這些實(shí)施例中,控制器只把更新的轉(zhuǎn)發(fā)狀態(tài)信息發(fā)送給第一跳轉(zhuǎn)發(fā)元件。從而消除了對分組中的指示非第一跳轉(zhuǎn)發(fā)元件應(yīng)利用更新的轉(zhuǎn)發(fā)信息向目的地轉(zhuǎn)發(fā)所述分組的任何版本信息的需要。
[0025]在一些實(shí)施例中,控制器配置轉(zhuǎn)發(fā)元件,以致邏輯轉(zhuǎn)發(fā)決策由分組的路徑中的第一跳轉(zhuǎn)發(fā)元件以及非第一跳轉(zhuǎn)發(fā)元件作出。在這些實(shí)施例中的一些實(shí)施例中,控制器首先把更新的轉(zhuǎn)發(fā)狀態(tài)信息發(fā)送給在分組的路徑(即,在分組的入口點(diǎn)和出口點(diǎn)之間的路徑)中的所有托管轉(zhuǎn)發(fā)元件,作為該分組的第一跳轉(zhuǎn)發(fā)元件的一個(gè)托管轉(zhuǎn)發(fā)元件除外。分組的第一跳轉(zhuǎn)發(fā)元件直接從源頭機(jī)器接收所述分組。即,分組的第一跳轉(zhuǎn)發(fā)元件在所述路徑的起點(diǎn)。
[0026]控制器隨后向第一跳托管轉(zhuǎn)發(fā)元件發(fā)送更新的轉(zhuǎn)發(fā)狀態(tài)信息。在一些實(shí)施例中,當(dāng)?shù)谝惶泄苻D(zhuǎn)發(fā)元件把分組轉(zhuǎn)發(fā)給下一跳轉(zhuǎn)發(fā)元件時(shí),第一跳托管轉(zhuǎn)發(fā)元件把版本信息包含在分組中。所述版本信息指示應(yīng)根據(jù)更新的轉(zhuǎn)發(fā)狀態(tài)信息,而不是舊的轉(zhuǎn)發(fā)狀態(tài)信息,轉(zhuǎn)發(fā)所述分組。這樣,由利用更新的轉(zhuǎn)發(fā)狀態(tài)信息的第一跳托管轉(zhuǎn)發(fā)元件接收和轉(zhuǎn)發(fā)的分組被在所述分組的路徑中的、已準(zhǔn)備好利用更新的轉(zhuǎn)發(fā)狀態(tài)信息的非第一跳托管轉(zhuǎn)發(fā)元件進(jìn)一步轉(zhuǎn)發(fā)。
[0027]在以下各節(jié)中,說明了更詳細(xì)的實(shí)施例。具體地,節(jié)I首先說明用于控制邏輯網(wǎng)絡(luò)和物理網(wǎng)絡(luò)的一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)。之后,節(jié)II說明按照本發(fā)明的一些實(shí)施例的生成、更新和推送轉(zhuǎn)發(fā)狀態(tài)信息的網(wǎng)絡(luò)控制器。節(jié)III接下來說明利用幾個(gè)通信通道,從控制器接收轉(zhuǎn)發(fā)狀態(tài)信息的托管轉(zhuǎn)發(fā)元件。最后,節(jié)IV說明實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的電子系統(tǒng)。
[0028]1.網(wǎng)絡(luò)控制系統(tǒng)
[0029]圖1圖解說明其中網(wǎng)絡(luò)控制器計(jì)算轉(zhuǎn)發(fā)狀態(tài)信息,以推送給一組托管轉(zhuǎn)發(fā)元件,以便定義所述一組托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的網(wǎng)絡(luò)控制系統(tǒng)100。網(wǎng)絡(luò)控制系統(tǒng)100包括控制器群集105和3個(gè)托管轉(zhuǎn)發(fā)元件125-135。網(wǎng)絡(luò)控制器群集105包括3個(gè)網(wǎng)絡(luò)控制器-邏輯控制器110和2個(gè)物理控制器115及120。網(wǎng)絡(luò)控制系統(tǒng)100表示具有向下向3個(gè)托管轉(zhuǎn)發(fā)元件推送狀態(tài)的一個(gè)控制器群集105的簡化例子。在許多情況下,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)會(huì)包括眾多的控制器群集,和成百上千個(gè)托管轉(zhuǎn)發(fā)元件,每個(gè)控制器群集包括眾多的控制器。
[0030]在一些實(shí)施例中,網(wǎng)絡(luò)控制器群集105進(jìn)行轉(zhuǎn)發(fā)狀態(tài)的計(jì)算,并以流表項(xiàng)的形式,把所述狀態(tài)向下推送給托管轉(zhuǎn)發(fā)元件。一些實(shí)施例的網(wǎng)絡(luò)控制器群集接收定義邏輯網(wǎng)絡(luò)的邏輯控制平面(LCP)數(shù)據(jù),并把該LCP數(shù)據(jù)轉(zhuǎn)換成物理控制平面(PCP)數(shù)據(jù),以發(fā)送給托管轉(zhuǎn)發(fā)元件125-135。在一些實(shí)施例中,邏輯網(wǎng)絡(luò)的邏輯控制平面定義連接邏輯拓?fù)渲械慕K端機(jī)器(例如,虛擬機(jī))的一個(gè)或多個(gè)邏輯轉(zhuǎn)發(fā)元件(例如,邏輯交換機(jī)、邏輯路由器)。邏輯轉(zhuǎn)發(fā)元件定義來自源機(jī)器的分組在邏輯空間中,應(yīng)被如何轉(zhuǎn)發(fā)給目的地機(jī)器(例如,相對于邏輯端口的虛擬機(jī)MAC地址的綁定)。另外,在一些實(shí)施例中,LCP定義由邏輯轉(zhuǎn)發(fā)元件實(shí)現(xiàn)的邏輯策略(例如,訪問控制列表)。LCP及其結(jié)構(gòu)對通過其實(shí)現(xiàn)的物理網(wǎng)絡(luò)來說是不可知的。
[0031]一些實(shí)施例的網(wǎng)絡(luò)控制器群集進(jìn)行LCP數(shù)據(jù)的幾種不同變換,以獲得被向下推送到托管轉(zhuǎn)發(fā)元件的PCP數(shù)據(jù)。在一些實(shí)施例中,控制器群集把LCP數(shù)據(jù)轉(zhuǎn)換成邏輯轉(zhuǎn)發(fā)平面(LFP)數(shù)據(jù),隨后把LFP數(shù)據(jù)轉(zhuǎn)換成PCO數(shù)據(jù)。LFP數(shù)據(jù)定義在邏輯空間中,轉(zhuǎn)發(fā)分組的轉(zhuǎn)發(fā)表項(xiàng)。即,除簡單地把地址綁定到邏輯端口以外,LFP數(shù)據(jù)還包括規(guī)定如果地址匹配,那么把分組轉(zhuǎn)發(fā)給邏輯端口的表項(xiàng)。
[0032]LFP數(shù)據(jù)到PCP數(shù)據(jù)的變換把邏輯轉(zhuǎn)發(fā)表項(xiàng)結(jié)合到物理網(wǎng)絡(luò)中。PCP表項(xiàng)包含在物理網(wǎng)絡(luò)內(nèi)的邏輯地址空間中進(jìn)行轉(zhuǎn)發(fā)的信息(例如,把邏輯端口映射到物理端口等)。
[0033]在一些實(shí)施例中,推送到托管轉(zhuǎn)發(fā)元件的PCP的計(jì)算分布在控制器群集的不同層的控制器之間。例如,在一些實(shí)施例中,邏輯控制器110管理至少一個(gè)邏輯轉(zhuǎn)發(fā)元件。邏輯控制器110進(jìn)行LCP-LFP變換和隨后的LFP-通用PCP (UPCP)變換,如該圖的右半部分所示。UPCP數(shù)據(jù)包括未被定制成包括特定于任何托管轉(zhuǎn)發(fā)元件的數(shù)據(jù),而是只包括特定于特定物理實(shí)現(xiàn)的這種數(shù)據(jù)的抽象(例如,端口號(hào)、隧道標(biāo)識(shí)符等)的流表項(xiàng)。
[0034]在一些實(shí)施例中,管理特定邏輯轉(zhuǎn)發(fā)元件的邏輯控制器把UPCP數(shù)據(jù)發(fā)送給任意數(shù)目的物理控制器。例如,邏輯控制器I1把UPCP數(shù)據(jù)發(fā)送給所述2個(gè)物理控制器115和120。每個(gè)托管轉(zhuǎn)發(fā)元件由主物理控制器管理。從而,用于跨幾個(gè)托管轉(zhuǎn)發(fā)元件實(shí)現(xiàn)的邏輯轉(zhuǎn)發(fā)元件的UPCP數(shù)據(jù)可被發(fā)送給管理這些轉(zhuǎn)發(fā)元件的幾個(gè)不同的主物理控制器。如圖所示,物理控制器115是管理2個(gè)托管轉(zhuǎn)發(fā)元件125和130的主控制器。物理控制器120是管理托管轉(zhuǎn)發(fā)元件135的主控制器。
[0035]在物理控制器或者與托管轉(zhuǎn)發(fā)元件在相同物理機(jī)中的機(jī)架控制器(本圖中未示出),UPCP數(shù)據(jù)被轉(zhuǎn)換成定制的PCP (CPCP)數(shù)據(jù)。CPCP數(shù)據(jù)是填充有為特定的托管轉(zhuǎn)發(fā)元件特有的定制數(shù)據(jù)的物理控制平面數(shù)據(jù)。如上所述,在一些實(shí)施例中,物理控制器利用從托管轉(zhuǎn)發(fā)元件接收的信息,進(jìn)行這種變換。在其它實(shí)施例中,物理控制器起通道(pass-through)作用,以把UPCP數(shù)據(jù)發(fā)送給托管轉(zhuǎn)發(fā)元件所駐留于的主機(jī),在所述主機(jī),控制器邏輯(機(jī)架控制器)進(jìn)行UPCP-CPCP變換。
[0036]托管轉(zhuǎn)發(fā)元件125-135是由網(wǎng)絡(luò)控制器管理(例如,接收來自網(wǎng)絡(luò)控制器的轉(zhuǎn)發(fā)狀態(tài)信息)的軟件或硬件轉(zhuǎn)發(fā)元件。在一些實(shí)施例中,托管轉(zhuǎn)發(fā)元件是在主機(jī)上(例如,在主機(jī)的用戶空間和/或內(nèi)核內(nèi))工作的軟件轉(zhuǎn)發(fā)元件。這些托管轉(zhuǎn)發(fā)元件接收來自終端機(jī)器140-160的分組,對分組進(jìn)行邏輯處理,和跨過物理網(wǎng)絡(luò)把分組發(fā)送給其目的地(例如,在也連接到不同的托管轉(zhuǎn)發(fā)元件的另一個(gè)終端機(jī)器)。
[0037]終端機(jī)器140-160可以是物理機(jī)或虛擬機(jī)。在一些實(shí)施例中,作為虛擬機(jī)的終端機(jī)器在具有為所述終端機(jī)器轉(zhuǎn)發(fā)分組的托管轉(zhuǎn)發(fā)元件的相同主機(jī)中工作。由于屬于多個(gè)物理網(wǎng)絡(luò)的虛擬機(jī)可能位于單個(gè)主機(jī)中(例如,終端機(jī)器140和145可以位于托管轉(zhuǎn)發(fā)元件125所位于的相同主機(jī)內(nèi)),因此每個(gè)托管轉(zhuǎn)發(fā)元件可以實(shí)現(xiàn)多個(gè)不同的邏輯轉(zhuǎn)發(fā)元件。另夕卜,如上所述,通常跨眾多的托管轉(zhuǎn)發(fā)元件,實(shí)現(xiàn)單個(gè)邏輯轉(zhuǎn)發(fā)元件。
[0038]除了位于網(wǎng)絡(luò)邊緣的托管轉(zhuǎn)發(fā)元件以外,在具有虛擬機(jī)的主機(jī)上,一些實(shí)施例另外包括第二級的非邊緣托管轉(zhuǎn)發(fā)元件(在一些情況下,稱為池節(jié)點(diǎn)或服務(wù)節(jié)點(diǎn))。當(dāng)邊緣托管轉(zhuǎn)發(fā)元件不能進(jìn)行關(guān)于分組的所有處理時(shí)(例如,由于它不具有把目的地MAC地址綁定到邏輯端口的流表項(xiàng)),邊緣托管轉(zhuǎn)發(fā)元件把分組發(fā)送給池節(jié)點(diǎn),以便使池節(jié)點(diǎn)可以處理該分組,并把分組發(fā)送給其目的地。
[0039]圖2概念地圖解說明一些實(shí)施例的網(wǎng)絡(luò)控制器200的例證體系結(jié)構(gòu)。取決于網(wǎng)絡(luò)控制器200處理的數(shù)據(jù)的種類,網(wǎng)絡(luò)控制器200能夠起邏輯控制器、物理控制器或機(jī)架控制器的作用。
[0040]作為邏輯控制器,網(wǎng)絡(luò)控制器200把LCP數(shù)據(jù)作為輸入。在一些實(shí)施例中,網(wǎng)絡(luò)控制器200把LCP數(shù)據(jù)轉(zhuǎn)換成LFP數(shù)據(jù),隨后轉(zhuǎn)換成UPCP數(shù)據(jù)。網(wǎng)絡(luò)控制器200把UPCP數(shù)據(jù)推送給一組物理控制器,所述一組物理控制器是實(shí)現(xiàn)作為邏輯控制器的網(wǎng)絡(luò)控制器200所管理的邏輯轉(zhuǎn)發(fā)元件的托管轉(zhuǎn)發(fā)元件的控制者(mas ter)。
[0041]作為一些實(shí)施例的物理控制器,網(wǎng)絡(luò)控制器200把UPCP數(shù)據(jù)作為輸入,把UPCP數(shù)據(jù)轉(zhuǎn)換成CPCP數(shù)據(jù)。網(wǎng)絡(luò)控制器隨后把CPCP數(shù)據(jù)推送給網(wǎng)絡(luò)控制器200為其控制者的一組托管轉(zhuǎn)發(fā)元件。在其它實(shí)施例中,作為物理控制器的網(wǎng)絡(luò)控制器200把UPCP中繼給一組機(jī)架控制器,所述一組機(jī)架控制器在一組托管轉(zhuǎn)發(fā)元件在其中工作的主機(jī)中工作。在這些實(shí)施例中,網(wǎng)絡(luò)控制器200是該組托管轉(zhuǎn)發(fā)元件的控制者。
[0042]作為機(jī)架控制器,網(wǎng)絡(luò)控制器200把來自一組物理控制器的UPCP數(shù)據(jù)作為輸入。網(wǎng)絡(luò)控制器200為機(jī)架控制器管理的托管轉(zhuǎn)發(fā)元件,把UPCP數(shù)據(jù)轉(zhuǎn)換成CPCP數(shù)據(jù),隨后把CPCP數(shù)據(jù)發(fā)送給所述托管轉(zhuǎn)發(fā)元件。
[0043]如圖2中所示,網(wǎng)絡(luò)控制器200包括一組規(guī)則引擎輸入表210,一組函數(shù)和常數(shù)表215,導(dǎo)入器220,規(guī)則引擎225, —組規(guī)則引擎輸出表245,轉(zhuǎn)換器250,導(dǎo)出器255,持久性事務(wù)數(shù)據(jù)庫(PTD) 260,和編譯器235。編譯器235是控制器的與控制器的其它組件在不同的時(shí)刻工作的組件。當(dāng)開發(fā)人員需要為特定的網(wǎng)絡(luò)控制器和/或虛擬化環(huán)境指定規(guī)則引擎時(shí),編譯器工作,而當(dāng)控制器面接(interface)其它控制器或托管轉(zhuǎn)發(fā)元件時(shí),控制器的其余模塊在運(yùn)行時(shí)工作。
[0044]在一些實(shí)施例中,編譯器235獲得用聲明性語言指定的較小一組(例如,幾百行)聲明性指令240,并把這些指令轉(zhuǎn)換成規(guī)定規(guī)則引擎225的操作的較大一組(例如,數(shù)千行)代碼(即,目標(biāo)代碼),規(guī)則引擎225進(jìn)行控制器的表映射。因而,編譯器大大簡化網(wǎng)絡(luò)控制器開發(fā)人員的定義和更新網(wǎng)絡(luò)控制器的過程。這是因?yàn)榫幾g器允許開發(fā)人員利用允許簡明地定義網(wǎng)絡(luò)控制器的復(fù)雜映射操作的高級編程語言,隨后響應(yīng)于任意數(shù)目的變化(即,由網(wǎng)絡(luò)控制器支持的邏輯連網(wǎng)功能的變化,對網(wǎng)絡(luò)控制器的期望行為的變化等等),更新該映射操作。此外,當(dāng)開發(fā)人員定義映射操作時(shí),編譯器可以使開發(fā)人員免于考慮事件到達(dá)網(wǎng)絡(luò)控制器的順序。另外,開發(fā)人員用不同的規(guī)則集編程網(wǎng)絡(luò)控制器200,以使網(wǎng)絡(luò)控制器200起邏輯控制器、物理控制器或機(jī)架控制器的作用。
[0045]在一些實(shí)施例中,規(guī)則引擎(RE)輸入表210包括根據(jù)網(wǎng)絡(luò)控制器200用作的網(wǎng)絡(luò)控制器的類型,而具有不同種類的數(shù)據(jù)的表格。輸入表210包括需要映射到LFP數(shù)據(jù)的LCP數(shù)據(jù),并且當(dāng)網(wǎng)絡(luò)控制器200起邏輯控制器作用時(shí),包括需要映射到UPCP數(shù)據(jù)的LFP數(shù)據(jù)。當(dāng)網(wǎng)絡(luò)控制器200起物理控制器或機(jī)架控制器作用時(shí),輸入表210包括需要被映射到CPCP數(shù)據(jù)的UPCP數(shù)據(jù)。
[0046]除了 RE輸入表210以外,網(wǎng)絡(luò)控制器200還包括規(guī)則引擎225用于為其表映射操作收集輸入的其它各種表215。這些表215包括保存規(guī)則引擎225為進(jìn)行其表映射操作而需要的常數(shù)的規(guī)定值的常數(shù)表。例如,常數(shù)表215可包括被定義為值O的常數(shù)“0”,被定義為值4000的常數(shù)“dispatch_port_no”,和被定義為值OxFF:FF:FF:FF:FF:FF的常數(shù)“broadcast—MAC—addr”。
[0047]當(dāng)規(guī)則引擎225引用常數(shù)時(shí),實(shí)際上取回并使用關(guān)于所述常數(shù)定義的對應(yīng)值。另夕卜,可以修改和/或更新常數(shù)表215中關(guān)于各個(gè)常數(shù)定義的值。這樣,常數(shù)表215提供修改關(guān)于規(guī)則引擎225引用的常數(shù)定義的值,而不需要重寫或重新編譯指定規(guī)則引擎225的操作的代碼的能力。表215還包括函數(shù)表,函數(shù)表保存規(guī)則引擎225為了計(jì)算用于填充輸出表245的值而需要使用的函數(shù)。
[0048]規(guī)則引擎225進(jìn)行表映射操作,表映射操作指定把輸入數(shù)據(jù)轉(zhuǎn)換成輸出數(shù)據(jù)的一種方式。每當(dāng)規(guī)則引擎(RE)輸入表之一被修改時(shí),規(guī)則引擎進(jìn)行一組表映射操作,所述一組表映射操作可導(dǎo)致一個(gè)或多個(gè)RE輸出表中的一個(gè)或多數(shù)據(jù)元組的更改。在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)利用稱為nLog的datalog數(shù)據(jù)庫語言的變形來創(chuàng)建規(guī)則引擎225。類似于datalog,nLog提供允許開發(fā)人員指定當(dāng)發(fā)生不同事件時(shí),要進(jìn)行的不同操作的少許聲明規(guī)則和算符。在一些實(shí)施例中,nLog提供由datalog提供的算符的有限子集,以便提聞nLog的運(yùn)算速度。例如,在一些實(shí)施例中,在任意聲明規(guī)則中,nLog只允許使用AND算符。
[0049]如圖2中所示,規(guī)則引擎225包括事件處理器222、幾個(gè)查詢計(jì)劃227,和表處理器230。每個(gè)查詢計(jì)劃是規(guī)定當(dāng)發(fā)生對RE輸入表之一的更改時(shí),要進(jìn)行的一組連接操作的一組規(guī)則。下面把這樣的更改稱為輸入表事件。每個(gè)查詢計(jì)劃由編譯器235根據(jù)一組聲明240中的一個(gè)聲明規(guī)則產(chǎn)生。在一些實(shí)施例中,根據(jù)一個(gè)聲明規(guī)則,產(chǎn)生不止一個(gè)查詢計(jì)劃。例如,為由一個(gè)聲明規(guī)則連接的各個(gè)表創(chuàng)建查詢計(jì)劃。即,當(dāng)聲明規(guī)則指定連接4個(gè)表時(shí),根據(jù)所述一個(gè)聲明,將創(chuàng)建4個(gè)不同的查詢計(jì)劃。在一些實(shí)施例中,通過利用nLog聲明式語言,定義查詢計(jì)劃。
[0050]規(guī)則引擎225的事件處理器222檢測每個(gè)輸入表事件的發(fā)生。不同實(shí)施例的事件處理器不同地檢測輸入表事件的發(fā)生。在一些實(shí)施例中,事件處理器向RE輸入表登記回口4,以便通知對RE輸入表的記錄的改變。在這樣的實(shí)施例中,當(dāng)從RE輸入表收到其記錄之一已改變的通知時(shí),事件處理器222檢測輸入表事件。
[0051]響應(yīng)于檢測的輸入表事件,事件處理器222(1)為檢測的表事件,選擇適當(dāng)?shù)牟樵冇?jì)劃,和(2)指令表處理器230執(zhí)行該查詢計(jì)劃。在一些實(shí)施例中,為了執(zhí)行查詢計(jì)劃,表處理器230進(jìn)行由查詢計(jì)劃指定的連接操作,以根據(jù)一個(gè)或多個(gè)輸入以及各種表210和215,產(chǎn)生表示一組或多組數(shù)據(jù)值的一個(gè)或多個(gè)記錄。一些實(shí)施例的表處理器230隨后(I)進(jìn)行選擇操作,以從利用連接操作產(chǎn)生的記錄中選擇數(shù)據(jù)值的子集,和(2)把選擇的數(shù)據(jù)值的子集寫入一個(gè)或多個(gè)RE輸出表245中。
[0052]在一些實(shí)施例中,RE輸出表245保存邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性。表245被稱為RE輸出表,因?yàn)樗鼈儽4嬉?guī)則引擎225的表映射操作的輸出。在一些實(shí)施例中,RE輸出表可被分為幾種不同的類別。例如,在一些實(shí)施例中,這些表可以是RE輸入表和/或控制器輸出表。當(dāng)表中的變化致使規(guī)則引擎檢測到要求查詢計(jì)劃的執(zhí)行的輸入事件時(shí),表是RE輸入表。RE輸出表245也可是產(chǎn)生使規(guī)則引擎進(jìn)行另一個(gè)查詢計(jì)劃的事件的RE輸入表210。這種事件被稱為內(nèi)部輸入事件,與外部輸入事件形成對照,外部輸入事件是由導(dǎo)入器220產(chǎn)生的RE輸入表更改引起的事件。
[0053]當(dāng)表中的變化致使導(dǎo)出器255把變化導(dǎo)出到另外的控制器或者托管轉(zhuǎn)發(fā)元件時(shí),表是控制器輸出表。RE輸出表245中的表可以是RE輸入表、控制器輸出表,或者RE輸入表和控制器輸出表這兩者。在一些實(shí)施例中,RE輸入表和RE輸出表是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的表。這些表被保存為關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu),所述關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)是網(wǎng)絡(luò)控制器的主要數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。
[0054]導(dǎo)出器255檢測RE輸出表245的控制器輸出表的變化。不同實(shí)施例的導(dǎo)出器不同地檢測控制器輸出表事件的發(fā)生。在一些實(shí)施例中,導(dǎo)出器向控制器輸出表登記回叫,以便通知控制器輸出表的記錄的變化。在這樣的實(shí)施例中,當(dāng)它從控制器輸出表收到其記錄之一已變化的通知時(shí),導(dǎo)出器255檢測輸出表事件。
[0055]響應(yīng)于檢測的輸出表事件,導(dǎo)出器255獲得更改的控制器輸出表中的一些或者全部的更改數(shù)據(jù)元組,并把更改的數(shù)據(jù)元組傳送給其它控制器或托管轉(zhuǎn)發(fā)元件。具體地,當(dāng)網(wǎng)絡(luò)控制器200起邏輯控制器作用時(shí),導(dǎo)出器255通過與物理控制器建立的一組通信通道(例如,遠(yuǎn)程過程調(diào)用(RPC)通道),把UPCP數(shù)據(jù)傳送給一組物理控制器。當(dāng)網(wǎng)絡(luò)控制器200起物理控制器作用時(shí),一些實(shí)施例的導(dǎo)出器255通過與機(jī)架控制器建立的一組通信通道,把UPCP數(shù)據(jù)傳送給一組機(jī)架控制器。其它實(shí)施例的導(dǎo)出器255通過與各個(gè)托管轉(zhuǎn)發(fā)元件建立的一對通信通道(例如,OpenFlow通道和配置通道),把CPCP數(shù)據(jù)傳送給一組托管轉(zhuǎn)發(fā)元件。當(dāng)網(wǎng)絡(luò)控制器200起機(jī)架控制器作用時(shí),一些實(shí)施例的導(dǎo)出器255通過與各個(gè)托管轉(zhuǎn)發(fā)元件建立的一對通信通道(例如,OpenFlow通道和配置通道),把CPCP數(shù)據(jù)傳送給一組托管轉(zhuǎn)發(fā)元件。
[0056]在一些實(shí)施例中,網(wǎng)絡(luò)控制器不在輸出表245中保持該網(wǎng)絡(luò)控制器不負(fù)責(zé)管理的數(shù)據(jù)。然而,這樣的數(shù)據(jù)將由轉(zhuǎn)換器250轉(zhuǎn)換成可被保存在PTD中的格式,并被保存在PTD260中。PTD是網(wǎng)絡(luò)控制器的次要存儲(chǔ)結(jié)構(gòu)。網(wǎng)絡(luò)控制器200的PTD把該數(shù)據(jù)傳送給一個(gè)或多個(gè)其它的網(wǎng)絡(luò)控制器,以致負(fù)責(zé)管理該數(shù)據(jù)的其它網(wǎng)絡(luò)控制器中的一些網(wǎng)絡(luò)控制器能夠處理該數(shù)據(jù)。
[0057]在一些實(shí)施例中,考慮到數(shù)據(jù)的彈性,網(wǎng)絡(luò)控制器還把保存在輸出表245中的數(shù)據(jù)(即,網(wǎng)絡(luò)控制器負(fù)責(zé)管理的數(shù)據(jù))帶到PTD。這樣的數(shù)據(jù)也由轉(zhuǎn)換器250轉(zhuǎn)換,保存在PTD中,并被傳送給其它控制器實(shí)例的其它PTD。于是,在這些實(shí)施例中,控制器實(shí)例的PTD具有由網(wǎng)絡(luò)控制系統(tǒng)管理的所有數(shù)據(jù)的所有配置數(shù)據(jù)。即,在一些實(shí)施例中,每個(gè)PTD包含邏輯和物理網(wǎng)絡(luò)的結(jié)構(gòu)的全局視圖。
[0058]導(dǎo)入器220面接輸入數(shù)據(jù)的許多不同來源,并利用輸入數(shù)據(jù)更改或創(chuàng)建輸入表210。當(dāng)網(wǎng)絡(luò)控制器200起邏輯控制器作用時(shí),一些實(shí)施例的導(dǎo)入器220通過輸入轉(zhuǎn)換控制器(未示出),接收來自用戶(租戶)的輸入數(shù)據(jù),所述輸入轉(zhuǎn)換控制器把用戶輸入轉(zhuǎn)換成LCP數(shù)據(jù)。在一些實(shí)施例中,導(dǎo)入器220通過通信通道,接收LCP數(shù)據(jù)。導(dǎo)入器220還與PTD260面接,以致通過PTD從其它控制器實(shí)例接收的數(shù)據(jù)可被用作更改或創(chuàng)建輸入表210的輸入數(shù)據(jù)。此外,導(dǎo)入器220還檢測RE輸入表和RE輸出表245的控制器輸出表中的變化。產(chǎn)生并保存在輸出表245中的LFP數(shù)據(jù)由用于規(guī)則引擎225的導(dǎo)入器220,反饋給規(guī)則引擎225,以便產(chǎn)生UPCP數(shù)據(jù)。
[0059]當(dāng)網(wǎng)絡(luò)控制器200起物理控制器作用時(shí),導(dǎo)入器220通過與一組邏輯控制器建立的一組通信通道,從所述一組邏輯控制器獲得UPCP數(shù)據(jù)。當(dāng)網(wǎng)絡(luò)控制器200起機(jī)架控制器作用時(shí),導(dǎo)入器通過與一組物理控制器建立的一組通信通道,從所述一組物理控制器獲得UPCP數(shù)據(jù)。
[0060]圖3概念地圖解說明跨托管轉(zhuǎn)發(fā)元件310-330實(shí)現(xiàn)的邏輯轉(zhuǎn)發(fā)元件380和390。圖3的上半部分表示3個(gè)托管轉(zhuǎn)發(fā)元件310-330和終端機(jī)器340-365。如圖中所示,機(jī)器340、350和360屬于用戶A,機(jī)器345、355和365屬于用戶B。為了例示和說明的簡明起見,圖3表示邏輯轉(zhuǎn)發(fā)元件連接到幾個(gè)終端機(jī)器,并且是在幾個(gè)托管轉(zhuǎn)發(fā)元件中實(shí)現(xiàn)的。如上所述,邏輯轉(zhuǎn)發(fā)元件可連接到眾多的終端機(jī)器,并且實(shí)現(xiàn)在眾多的托管轉(zhuǎn)發(fā)元件中。
[0061]一些實(shí)施例的托管轉(zhuǎn)發(fā)元件310-330在網(wǎng)絡(luò)中的耦接到托管轉(zhuǎn)發(fā)元件310-330的網(wǎng)絡(luò)元件之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)(例如,分組、幀等)。如圖所示,托管轉(zhuǎn)發(fā)元件310在機(jī)器340和345與轉(zhuǎn)發(fā)元件320之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。類似地,轉(zhuǎn)發(fā)元件320在機(jī)器350與托管轉(zhuǎn)發(fā)元件310和330之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù),轉(zhuǎn)發(fā)元件330在機(jī)器355-365與轉(zhuǎn)發(fā)元件320之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。
[0062]此外,每個(gè)托管轉(zhuǎn)發(fā)元件310-330根據(jù)轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)邏輯(在一些實(shí)施例中,呈表格的形式),轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。在一些實(shí)施例中,轉(zhuǎn)發(fā)表按照轉(zhuǎn)發(fā)標(biāo)準(zhǔn),確定把網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)到哪里(例如,轉(zhuǎn)發(fā)元件上的端口)。例如,層2轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)表可以根據(jù)MAC地址(例如,源MAC地址和/或目的地MAC地址),確定把網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)到哪里。再例如,層3轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)表可以根據(jù)IP地址(例如,源IP地址和/或目的地IP地址),確定把網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)到哪里。許多其它種類的轉(zhuǎn)發(fā)標(biāo)準(zhǔn)也是可能的。
[0063]如圖所示,每個(gè)托管轉(zhuǎn)發(fā)元件310-330中的轉(zhuǎn)發(fā)表包括幾條記錄。在一些實(shí)施例中,每條記錄根據(jù)轉(zhuǎn)發(fā)標(biāo)準(zhǔn),指定轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)的操作。在一些實(shí)施例中,所述記錄可被稱為流表項(xiàng),因?yàn)樗鲇涗浛刂茢?shù)據(jù)通過托管轉(zhuǎn)發(fā)元件310-330的“流動(dòng)”。
[0064]圖3的下半部分圖解說明每個(gè)用戶的邏輯網(wǎng)絡(luò)的概念表示。如圖所示,用戶A的邏輯網(wǎng)絡(luò)380包括用戶A的機(jī)器340、350和360耦接到的邏輯轉(zhuǎn)發(fā)元件385。用戶B的邏輯網(wǎng)絡(luò)390包括用戶B的機(jī)器345、355和365耦接到的邏輯轉(zhuǎn)發(fā)元件395。因而,從用戶A的角度來看,用戶A具有只有用戶A的機(jī)器耦接到的轉(zhuǎn)發(fā)元件,從用戶B的角度來看,用戶B具有只有用戶B的機(jī)器耦接到的轉(zhuǎn)發(fā)元件。換句話說,對于每個(gè)用戶,該用戶具有自己的只包括該用戶的機(jī)器的網(wǎng)絡(luò)。
[0065]下面說明實(shí)現(xiàn)起源于機(jī)器340,并且前往機(jī)器350的網(wǎng)絡(luò)數(shù)據(jù),和起源于機(jī)器340,并且前往機(jī)器360的網(wǎng)絡(luò)數(shù)據(jù)的流動(dòng)的概念性流表項(xiàng)。首先,說明用于轉(zhuǎn)發(fā)起源于機(jī)器340,并且前往機(jī)器350的網(wǎng)絡(luò)數(shù)據(jù)的流表項(xiàng),之后說明用于轉(zhuǎn)發(fā)起源于機(jī)器340,并且前往機(jī)器360的網(wǎng)絡(luò)數(shù)據(jù)的流表項(xiàng)。
[0066]托管轉(zhuǎn)發(fā)元件310的轉(zhuǎn)發(fā)表中的流表項(xiàng)“A1-A2”指令托管轉(zhuǎn)發(fā)元件310把起源于機(jī)器310,并且前往機(jī)器350的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)給轉(zhuǎn)發(fā)元件320。托管轉(zhuǎn)發(fā)元件320的轉(zhuǎn)發(fā)表中的流表項(xiàng)“A1-A2”指令托管轉(zhuǎn)發(fā)元件320把起源于機(jī)器310,并且前往機(jī)器350的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)給機(jī)器350。
[0067]此外,托管轉(zhuǎn)發(fā)元件310的轉(zhuǎn)發(fā)表中的流表項(xiàng)“A1-A3”指令托管轉(zhuǎn)發(fā)元件310把起源于機(jī)器340,并且前往機(jī)器360的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)給轉(zhuǎn)發(fā)元件320。托管轉(zhuǎn)發(fā)元件320的轉(zhuǎn)發(fā)表中的流表項(xiàng)“A1-A3”指令托管轉(zhuǎn)發(fā)元件320把起源于機(jī)器340,并且前往機(jī)器360的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)給轉(zhuǎn)發(fā)元件330。托管轉(zhuǎn)發(fā)元件330的轉(zhuǎn)發(fā)表中的流表項(xiàng)“A1-A3”指令托管轉(zhuǎn)發(fā)元件330把起源于機(jī)器340,并且前往機(jī)器360的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)給機(jī)器360。
[0068]盡管上面說明了用于轉(zhuǎn)發(fā)起源于機(jī)器340,并且前往機(jī)器350的網(wǎng)絡(luò)數(shù)據(jù),和起源于機(jī)器340,并且前往機(jī)器360的網(wǎng)絡(luò)數(shù)據(jù)的概念性流表項(xiàng),不過在托管轉(zhuǎn)發(fā)元件310-330的轉(zhuǎn)發(fā)表中,會(huì)包含類似的流表項(xiàng),以便在用戶A的邏輯網(wǎng)絡(luò)380中的其它機(jī)器之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。此外,在托管轉(zhuǎn)發(fā)元件310-330的轉(zhuǎn)發(fā)表中,會(huì)包含類似的流表項(xiàng),以便在用戶B的邏輯網(wǎng)絡(luò)390中的機(jī)器之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。
[0069]圖3中表示的概念性流表項(xiàng)包括托管轉(zhuǎn)發(fā)元件的源信息和目的地信息,以推測把分組發(fā)送給的下一跳轉(zhuǎn)發(fā)元件。不過,源信息不必在流表項(xiàng)中,因?yàn)橐恍?shí)施例的托管轉(zhuǎn)發(fā)元件僅僅利用目的地信息(例如,目的地地址等),就能夠推測出下一跳轉(zhuǎn)發(fā)元件。
[0070]在一些實(shí)施例中,由隧道協(xié)議(例如,無線接入點(diǎn)控制與配置協(xié)議(CAPWAP)、通用轉(zhuǎn)發(fā)封裝(GRE)、GRE因特網(wǎng)協(xié)議安全(IPsec)等)提供的隧道可用于使跨托管轉(zhuǎn)發(fā)元件310-330的邏輯轉(zhuǎn)發(fā)元件385和395的實(shí)現(xiàn)更容易。借助隧穿,分組作為另一個(gè)分組的有效負(fù)載,被傳送通過轉(zhuǎn)發(fā)元件。即,隧穿的分組不必暴露其地址(例如,源MAC地址和目的地MAC地址),因?yàn)樵摲纸M是根據(jù)包含在封裝該隧穿分組的外部分組中的報(bào)頭中的地址轉(zhuǎn)發(fā)的。于是,隧穿允許邏輯地址空間與物理地址空間的分離,因?yàn)樗泶┑姆纸M可具有在邏輯地址空間中有意義的地址,而外部分組是根據(jù)物理地址空間中的地址轉(zhuǎn)發(fā)的。這樣,隧道可被看作連接網(wǎng)絡(luò)中的托管轉(zhuǎn)發(fā)元件,以便實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件385和395的“邏輯導(dǎo)線”。
[0071]用上述各種方式配置轉(zhuǎn)發(fā)元件,以跨一組轉(zhuǎn)發(fā)元件地實(shí)現(xiàn)多個(gè)邏輯轉(zhuǎn)發(fā)元件,允許多個(gè)用戶從每個(gè)用戶的角度來看,都具有獨(dú)立的網(wǎng)絡(luò)和/或轉(zhuǎn)發(fā)元件,盡管用戶事實(shí)上共享一些或者全部的相同一組轉(zhuǎn)發(fā)元件和/或所述一組轉(zhuǎn)發(fā)元件之間的連接(例如,隧道,物理導(dǎo)線)。
[0072]雖然圖3圖解說明了在一組托管轉(zhuǎn)發(fā)元件中的邏輯轉(zhuǎn)發(fā)元件的實(shí)現(xiàn),不過,通過配置托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)表,可以實(shí)現(xiàn)更復(fù)雜的邏輯網(wǎng)絡(luò)(例如,包括幾個(gè)L3轉(zhuǎn)發(fā)元件)。圖4概念地圖解說明更復(fù)雜的邏輯網(wǎng)絡(luò)的例子。圖4圖解說明一些實(shí)施例的網(wǎng)絡(luò)體系結(jié)構(gòu)400,它實(shí)現(xiàn)3個(gè)邏輯轉(zhuǎn)發(fā)元件-邏輯路由器425及邏輯交換機(jī)420和430。具體地,網(wǎng)絡(luò)體系結(jié)構(gòu)400表示實(shí)現(xiàn)其數(shù)據(jù)分組由邏輯路由器425及邏輯交換機(jī)420和430轉(zhuǎn)發(fā)的邏輯網(wǎng)絡(luò)的物理網(wǎng)絡(luò)。圖4在其上半部分中,圖解說明邏輯路由器425及邏輯交換機(jī)420和430。圖4在其下半部分中,圖解說明托管轉(zhuǎn)發(fā)元件455和460。圖4在其上部和下部中,都圖解說明了終端機(jī)器(例如,虛擬機(jī)(VM)) 1-4。
[0073]在本例中,邏輯交換元件420在邏輯路由器425、終端機(jī)器I和終端機(jī)器2之間轉(zhuǎn)發(fā)數(shù)據(jù)分組。邏輯交換元件430在邏輯路由器425、終端機(jī)器3和終端機(jī)器4之間轉(zhuǎn)發(fā)數(shù)據(jù)分組。如上所述,邏輯路由器425在邏輯交換機(jī)420和430與其它邏輯路由器和交換機(jī)(未示出)之間,路由數(shù)據(jù)分組。邏輯交換機(jī)420和430及邏輯路由器425通過邏輯端口(未示出)被邏輯耦接,并通過邏輯端口交換數(shù)據(jù)分組。這些邏輯端口被映射到或附接到托管轉(zhuǎn)發(fā)元件455和460的物理端口。
[0074]在一些實(shí)施例中,在托管網(wǎng)絡(luò)中的每個(gè)托管交換元件中,實(shí)現(xiàn)邏輯路由器。當(dāng)托管交換元件從耦接到該托管交換元件的機(jī)器收到分組時(shí),該托管交換元件進(jìn)行邏輯路由。換句話說,在這些實(shí)施例中,作為分組的第一跳交換元件的托管交換元件進(jìn)行邏輯路由。
[0075]在這個(gè)例子中,托管轉(zhuǎn)發(fā)元件455和460分別是在主機(jī)465和470中運(yùn)行的軟件交換機(jī)。托管轉(zhuǎn)發(fā)元件455和460具有流表項(xiàng),所述流表項(xiàng)實(shí)現(xiàn)轉(zhuǎn)發(fā)和路由托管轉(zhuǎn)發(fā)元件455和460從終端機(jī)器1-4接收的分組的邏輯交換機(jī)420和430。流表項(xiàng)還實(shí)現(xiàn)邏輯路由器425。利用這些流表項(xiàng),托管轉(zhuǎn)發(fā)元件455和460能夠在網(wǎng)絡(luò)中的,耦接到托管轉(zhuǎn)發(fā)元件455和460的網(wǎng)絡(luò)元件之間,轉(zhuǎn)發(fā)和路由分組。
[0076]如圖所示,托管轉(zhuǎn)發(fā)元件455和460都具有3個(gè)端口(例如,虛擬接口(VIF)),通過這3個(gè)端口,與耦接到托管轉(zhuǎn)發(fā)元件455和460的網(wǎng)絡(luò)元件交換數(shù)據(jù)分組。在一些情況下,這些實(shí)施例中的數(shù)據(jù)分組將通過在托管轉(zhuǎn)發(fā)元件455和460之間建立的隧道(例如,止于托管交換元件455的端口 3和托管交換元件460的端口 6的隧道)傳播。該隧道使得能夠分離邏輯空間中的地址和物理空間中的地址。
[0077]在本例中,如圖所示,每個(gè)主機(jī)465和470包括托管交換元件和幾個(gè)終端機(jī)器。終端機(jī)器1-4都被賦予一組網(wǎng)絡(luò)地址(例如,L2的MAC地址,網(wǎng)絡(luò)L3的IP地址等),并且能夠往來于其它網(wǎng)絡(luò)元件,發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù)。終端機(jī)器由在主機(jī)465和470上運(yùn)行的管理程序(未示出)管理。終端機(jī)器I和2分別與相同的邏輯交換機(jī)420的邏輯端口 I和2相關(guān)聯(lián)。不過,機(jī)器I與托管交換元件455的端口 4相關(guān)聯(lián),機(jī)器2與托管交換元件460的端口 7相關(guān)聯(lián)。邏輯端口 I和2于是被分別映射到端口 4和7,不過,這種映射不必暴露給網(wǎng)絡(luò)中的任意網(wǎng)絡(luò)元件(未示出)。這是因?yàn)閷⒏鶕?jù)攜帶具有映射信息的分組作為有效負(fù)載的外部分組的外部報(bào)頭,通過隧道在機(jī)器I和2之間交換該映射信息。
[0078]上面說明了物理基礎(chǔ)結(jié)構(gòu)中的網(wǎng)絡(luò)控制系統(tǒng),及邏輯網(wǎng)絡(luò)的實(shí)現(xiàn)。下面的節(jié)II說明更新的轉(zhuǎn)發(fā)狀態(tài)到托管轉(zhuǎn)發(fā)元件的事務(wù)傳播。
[0079]I1.利用事務(wù)性
[0080]在網(wǎng)絡(luò)配置被改變之后,更新轉(zhuǎn)發(fā)狀態(tài)(即,從先前計(jì)算的狀態(tài)遷移到新計(jì)算的狀態(tài))存在幾個(gè)挑戰(zhàn)。下面說明幾種解決方案。這些解決方案在兩個(gè)維度-正確性和效率,考慮該問題。S卩,這些解決方案考慮網(wǎng)絡(luò)中目前存在的狀態(tài)如何確保不僅在更新之前和之后,而且在更新期間,網(wǎng)絡(luò)策略都能夠被正確遵守。就效率來說,這些解決方案考慮如何能夠使可能較大的狀態(tài)更新的成本降至最小。
[0081]在下面的討論中,網(wǎng)絡(luò)控制系統(tǒng)包括計(jì)算轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài),以便管理網(wǎng)絡(luò)轉(zhuǎn)發(fā)元件的控制器的集中群集。另外,在下面的討論中,“網(wǎng)絡(luò)策略”包括任何配置方面:不僅包括安全策略,而且包括關(guān)于如何路由網(wǎng)絡(luò)流量,以及任何物理(或邏輯)網(wǎng)絡(luò)配置的策略。從而,在本討論中,“策略”用于與用戶配置的輸入有關(guān)的一切。
[0082]A.關(guān)于事務(wù)的要求
[0083]分組是轉(zhuǎn)發(fā)狀態(tài)的作用對象。必須按照單一的一致策略,而不是代表新舊策略的狀態(tài)的混合來轉(zhuǎn)發(fā)單個(gè)分組。隨后的分組可以利用該策略的不同版本來處理,只要按照避免用新舊策略的混合來處理的方式,從舊版本過渡到新版本即可。
[0084]自動(dòng)過渡到新策略的要求意味對轉(zhuǎn)發(fā)狀態(tài)的更新必須是事務(wù)的。然而,如上所述,并不意味整個(gè)網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)應(yīng)被同時(shí)自動(dòng)更新。特別地,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)在兩個(gè)方面放松了這種要求。首先,對于從源到一個(gè)或多個(gè)目的地的分組流,指定策略在什么時(shí)亥IJ,從舊策略變成新策略并不重要。唯一必要的是沒有分組按照新舊策略的混合被轉(zhuǎn)發(fā)。每個(gè)分組應(yīng)是按照舊策略或者按照新策略轉(zhuǎn)發(fā)的。其次,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)允許瞬時(shí)對在不同的位置,進(jìn)入網(wǎng)絡(luò)中的不同分組流應(yīng)用不同的策略。同樣,這些實(shí)施例只要求單個(gè)分組僅僅經(jīng)歷單一策略,而不是新舊策略的混合。
[0085]B.實(shí)現(xiàn)事務(wù)更新
[0086]已知這些要求和放松,下面將考慮這些事務(wù)更新的實(shí)現(xiàn)。在M Reitblatt等的“Cons istent Updates for Software-Defined Networks:Change You Can Believein ! ” (Proceedings of thelOth ACM Workshop on Hot Topics in Networks, p.1-6,Novemberl4-15, 2011, Cambridge, Massachusetts ( “Reitblatt 的論文”)中,提出了在網(wǎng)絡(luò)入口,用在該入口使用的轉(zhuǎn)發(fā)狀態(tài)的版本標(biāo)記分組。從而,當(dāng)分組在網(wǎng)絡(luò)內(nèi)前進(jìn)時(shí),任何后續(xù)網(wǎng)絡(luò)元件知道使用哪個(gè)版本。這為任何網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài),有效地實(shí)現(xiàn)事務(wù)性的全網(wǎng)絡(luò)更新。
[0087]然而,這種方法伴隨有幾個(gè)實(shí)際挑戰(zhàn)。首先,在不假定網(wǎng)絡(luò)的分片的情況下,對網(wǎng)絡(luò)的更新必須被串行化。即,整個(gè)網(wǎng)絡(luò)必須為特定版本作準(zhǔn)備,隨后入口被更新,以利用準(zhǔn)備的版本,只有在此之后,才能夠開始對下一個(gè)版本的準(zhǔn)備。
[0088]其次,分組需要具有明確的版本標(biāo)簽,從而分組報(bào)頭中某個(gè)地方的足夠比特需要被分配給所述標(biāo)簽。如果網(wǎng)絡(luò)具有利用傳統(tǒng)隧道協(xié)議工作的要求,那么在報(bào)頭中,找出用于所述標(biāo)簽的這種空閑比特可能有挑戰(zhàn)性。
[0089]從而,在Reitblatt的論文中描述的全網(wǎng)絡(luò)的事務(wù)更新盡管強(qiáng)大,但是伴隨理論上應(yīng)避免的實(shí)際挑戰(zhàn)。從而,代替在Reitblatt的論文中描述的這種方法,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)采用在網(wǎng)絡(luò)的邊緣的托管轉(zhuǎn)發(fā)元件的布置。如在上面的節(jié)I中所述,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)在第一跳作出邏輯轉(zhuǎn)發(fā)決策(即,哪個(gè)或哪些邏輯端口應(yīng)接收分組的決策)。任何后續(xù)步驟僅僅是根據(jù)所述轉(zhuǎn)發(fā)策略,向選擇的目的地轉(zhuǎn)發(fā)所述分組。
[0090]圖5概念地圖解說明在第一跳,作出邏輯轉(zhuǎn)發(fā)決策的網(wǎng)絡(luò)控制系統(tǒng)的網(wǎng)絡(luò)控制器群集505。具體地,圖5按4個(gè)不同的階段501-504,圖解說明網(wǎng)絡(luò)控制器群集505只把轉(zhuǎn)發(fā)狀態(tài)更新發(fā)送給第一跳托管轉(zhuǎn)發(fā)元件。網(wǎng)絡(luò)控制器群集505類似于上面參考圖1說明的網(wǎng)絡(luò)控制器群集105,因?yàn)榫W(wǎng)絡(luò)控制器群集505包括生成、更新并把轉(zhuǎn)發(fā)狀態(tài)傳播給托管轉(zhuǎn)發(fā)元件(MFE) 510的邏輯控制器和物理控制器(未示出)。托管轉(zhuǎn)發(fā)元件510是起源于終端機(jī)器540的數(shù)據(jù)的第一跳轉(zhuǎn)發(fā)元件。即,托管轉(zhuǎn)發(fā)元件510直接面接終端機(jī)器540,并把來自終端機(jī)器540的數(shù)據(jù)朝著該數(shù)據(jù)的目的地轉(zhuǎn)發(fā)。一組轉(zhuǎn)發(fā)元件515-535在一組終端機(jī)器540-550之間轉(zhuǎn)發(fā)數(shù)據(jù)。
[0091]在第一階段501,托管轉(zhuǎn)發(fā)元件510根據(jù)該托管轉(zhuǎn)發(fā)元件具有的當(dāng)前轉(zhuǎn)發(fā)狀態(tài)(舊狀態(tài)),轉(zhuǎn)發(fā)來自終端機(jī)器540的網(wǎng)絡(luò)數(shù)據(jù)(未示出)。具體地,對于從終端機(jī)器540發(fā)送給終端機(jī)器545的分組,由控制器群集定義的路徑跨越轉(zhuǎn)發(fā)元件(FE)510、515和520,如用實(shí)箭頭線所示。另外在階段501,控制器群集505從用戶(例如,通過圖中未描述的輸入轉(zhuǎn)換控制器),接收對轉(zhuǎn)發(fā)狀態(tài)的更新。所述更新代表新的網(wǎng)絡(luò)策略(例如,定義不同的可用帶寬的新的QoS策略,新開通的從VM到另一個(gè)VM的新路徑等)。
[0092]在第二階段502,控制器群集505計(jì)算轉(zhuǎn)發(fā)狀態(tài)更新(例如,通過把輸入的LCP數(shù)據(jù)轉(zhuǎn)換成UPCP或CPCP數(shù)據(jù))。在一些實(shí)施例中,控制器群集505識(shí)別實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件的所有托管轉(zhuǎn)發(fā)元件。特別地,對于將從第一物理端口轉(zhuǎn)發(fā)到第二物理端口(第一物理端口和第二物理端口被映射成邏輯轉(zhuǎn)發(fā)元件的邏輯入口端口和邏輯出口端口)的分組的路徑,控制器群集505識(shí)別具有所述第一物理端口的轉(zhuǎn)發(fā)元件(即,第一跳轉(zhuǎn)發(fā)元件)和具有第二物理端口的轉(zhuǎn)發(fā)元件(即,最后一跳轉(zhuǎn)發(fā)元件)。
[0093]在階段502,更新的轉(zhuǎn)發(fā)狀態(tài)具有起源于終端機(jī)器540,并且前往終端機(jī)器550的分組的新路徑,終端機(jī)器550是在計(jì)算舊的轉(zhuǎn)發(fā)狀態(tài),并將其傳播給網(wǎng)絡(luò)轉(zhuǎn)發(fā)元件之后,力口入網(wǎng)絡(luò)中的終端機(jī)器。就該新路徑來說,托管轉(zhuǎn)發(fā)元件510是第一跳托管轉(zhuǎn)發(fā)元件,而轉(zhuǎn)發(fā)元件520是最后一跳轉(zhuǎn)發(fā)元件。轉(zhuǎn)發(fā)元件515是向最后一跳托管轉(zhuǎn)發(fā)元件535轉(zhuǎn)發(fā)所述分組的“中間”托管和非托管轉(zhuǎn)發(fā)元件之一。
[0094]控制器群集505為受用戶更新影響的所有路徑,計(jì)算更新的轉(zhuǎn)發(fā)狀態(tài),并識(shí)別這些路徑中的每條路徑的第一跳托管轉(zhuǎn)發(fā)元件。在階段502,控制器群集505把各條路徑的第一跳托管轉(zhuǎn)發(fā)元件的更新的轉(zhuǎn)發(fā)狀態(tài),發(fā)送給托管轉(zhuǎn)發(fā)元件。為了舉例說明的簡明起見,階段502表示始于托管轉(zhuǎn)發(fā)元件510的那些路徑的新舊轉(zhuǎn)發(fā)狀態(tài)。托管轉(zhuǎn)發(fā)元件510具有這些路徑的新舊轉(zhuǎn)發(fā)狀態(tài)。托管轉(zhuǎn)發(fā)元件510尚未利用新的轉(zhuǎn)發(fā)狀態(tài),而是根據(jù)舊的轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)分組。
[0095]在一些實(shí)施例中,當(dāng)作為第一跳轉(zhuǎn)發(fā)元件的托管轉(zhuǎn)發(fā)元件收到新的轉(zhuǎn)發(fā)狀態(tài)時(shí),所述托管轉(zhuǎn)發(fā)元件開始利用新的轉(zhuǎn)發(fā)狀態(tài)。然而,在一些實(shí)施例中,控制器群集505向托管轉(zhuǎn)發(fā)元件發(fā)送命令,以作為第一跳轉(zhuǎn)發(fā)元件,開始利用更新的轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)分組。在第三階段503,控制器群集505把這樣的命令發(fā)送給托管轉(zhuǎn)發(fā)元件510。托管轉(zhuǎn)發(fā)元件510利用新的轉(zhuǎn)發(fā)狀態(tài),以起開始于該托管轉(zhuǎn)發(fā)元件510的路徑的第一跳轉(zhuǎn)發(fā)元件的作用。對于從終端機(jī)器540發(fā)送給終端機(jī)器550的分組的新路徑,托管轉(zhuǎn)發(fā)元件510現(xiàn)在能夠根據(jù)新的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)分組。由于非第一跳轉(zhuǎn)發(fā)元件不需要新的轉(zhuǎn)發(fā)狀態(tài),從而不獲得新的轉(zhuǎn)發(fā)狀態(tài),因此,這些實(shí)施例中的分組不需要攜帶指示非第一跳轉(zhuǎn)發(fā)元件應(yīng)利用新的轉(zhuǎn)發(fā)狀態(tài)的任何版本信息。
[0096]在第四階段504,托管轉(zhuǎn)發(fā)元件510-535除去舊的轉(zhuǎn)發(fā)狀態(tài)。在一些實(shí)施例中,控制器群集505把托管轉(zhuǎn)發(fā)元件配置成在收到新的轉(zhuǎn)發(fā)狀態(tài)之后,過去一段時(shí)間之后,除去舊的轉(zhuǎn)發(fā)狀態(tài)。在其它實(shí)施例中,控制器群集505向托管轉(zhuǎn)發(fā)元件發(fā)送命令,以除去舊的轉(zhuǎn)發(fā)狀態(tài)。
[0097]圖6概念地圖解說明一些實(shí)施例進(jìn)行的更新并向托管轉(zhuǎn)發(fā)元件發(fā)送轉(zhuǎn)發(fā)狀態(tài)的過程600。具體地,過程600是其中在第一跳托管轉(zhuǎn)發(fā)元件,作出轉(zhuǎn)發(fā)分組的所有邏輯轉(zhuǎn)發(fā)決策的那些實(shí)施例的過程。在一些實(shí)施例中,過程600由控制器群集(未示出),比如圖1和5的控制器群集105或505進(jìn)行。
[0098]通過(在605)接收輸入,開始過程600,所述輸入是對由群集控制器管理的托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài)的更新。由于至少3個(gè)原因,會(huì)出現(xiàn)對轉(zhuǎn)發(fā)狀態(tài)的這些更新。首先,當(dāng)邏輯策略因?yàn)橛蛇壿嫻芫€強(qiáng)制實(shí)施的網(wǎng)絡(luò)策略被用戶重新配置(例如,借助訪問控制列表的更新)而變化時(shí),轉(zhuǎn)發(fā)狀態(tài)變化。其次,工作負(fù)載操作變化導(dǎo)致轉(zhuǎn)發(fā)狀態(tài)的變化。例如,當(dāng)虛擬機(jī)從第一節(jié)點(diǎn)遷移到第二節(jié)點(diǎn)時(shí),邏輯視圖保持不變。然而,歸因于所述遷移,轉(zhuǎn)發(fā)狀態(tài)需要更新,因?yàn)閂M附接到的邏輯端口現(xiàn)在位于不同的物理位置。第三,物理重構(gòu)事件,比如托管轉(zhuǎn)發(fā)元件增加、去除、升級和重新配置,會(huì)導(dǎo)致轉(zhuǎn)發(fā)狀態(tài)的變化。
[0099]之后,過程600 (在610)根據(jù)接收的輸入,計(jì)算更新的轉(zhuǎn)發(fā)狀態(tài)。所述計(jì)算涉及LCP數(shù)據(jù)到LFP數(shù)據(jù)的變換,隨后從LFP數(shù)據(jù)到UPCP或CPCP數(shù)據(jù)的變換。更新的LCP數(shù)據(jù)可影響幾個(gè)邏輯轉(zhuǎn)發(fā)元件。即,邏輯路徑(即,受影響的邏輯轉(zhuǎn)發(fā)元件的許多對邏輯端口之間的許多邏輯路徑)被除去、增加或更改,于是,實(shí)現(xiàn)這些受影響的邏輯路徑的物理路徑也被除去、增加或更改。
[0100]在一些實(shí)施例中,這些受影響的邏輯轉(zhuǎn)發(fā)元件的邏輯轉(zhuǎn)發(fā)操作僅僅由第一路托管轉(zhuǎn)發(fā)元件進(jìn)行。例如,控制器群集把第一跳托管轉(zhuǎn)發(fā)元件配置成進(jìn)行第一邏輯交換機(jī)的邏輯L2轉(zhuǎn)發(fā)操作,邏輯路由器的邏輯L3路由,和獲得邏輯路由器路由的分組的第二邏輯交換機(jī)的邏輯L2轉(zhuǎn)發(fā)操作。從而,這些實(shí)施例的過程600計(jì)算的轉(zhuǎn)發(fā)狀態(tài)僅僅用于第一跳轉(zhuǎn)發(fā)元件。這些路徑的中間和最后一跳轉(zhuǎn)發(fā)元件用作把分組轉(zhuǎn)發(fā)給目的地機(jī)器的架構(gòu)。于是,轉(zhuǎn)發(fā)狀態(tài)不會(huì)使托管轉(zhuǎn)發(fā)元件向分組中添加版本信息。
[0101]之后,過程600 (在610)為起第一跳轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件,計(jì)算更新的轉(zhuǎn)發(fā)狀態(tài)。過程600隨后(在615)把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給托管轉(zhuǎn)發(fā)元件。托管轉(zhuǎn)發(fā)元件現(xiàn)在具有舊的轉(zhuǎn)發(fā)狀態(tài)和更新的轉(zhuǎn)發(fā)狀態(tài)。
[0102]過程600視情況(在625)向托管轉(zhuǎn)發(fā)元件發(fā)送從托管轉(zhuǎn)發(fā)元件中除去舊的轉(zhuǎn)發(fā)狀態(tài)的命令。在一些實(shí)施例中,代替發(fā)送切換到新的轉(zhuǎn)發(fā)狀態(tài)的明確命令,控制器群集把托管轉(zhuǎn)發(fā)元件配置成用新的轉(zhuǎn)發(fā)狀態(tài)代替舊的轉(zhuǎn)發(fā)狀態(tài),或者一旦托管轉(zhuǎn)發(fā)元件收到新的轉(zhuǎn)發(fā)狀態(tài),就除去舊的轉(zhuǎn)發(fā)狀態(tài)。另一方面或者結(jié)合地,控制器群集配置托管轉(zhuǎn)發(fā)元件,以在收到新的轉(zhuǎn)發(fā)狀態(tài)之后,過去一段時(shí)間之后,除去舊的轉(zhuǎn)發(fā)狀態(tài),而不是向托管轉(zhuǎn)發(fā)元件發(fā)送命令。該過程隨后結(jié)束。
[0103]盡管圖6圖解說明了一些實(shí)施例的由網(wǎng)絡(luò)控制器群集進(jìn)行的過程600,不過,圖7圖解說明一些實(shí)施例的由托管轉(zhuǎn)發(fā)元件進(jìn)行的過程。圖7概念地圖解說明一些實(shí)施例進(jìn)行的轉(zhuǎn)發(fā)數(shù)據(jù)的過程700。過程700由利用轉(zhuǎn)發(fā)狀態(tài),以便起第一跳轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件進(jìn)行。
[0104]通過在(705)利用當(dāng)前轉(zhuǎn)發(fā)狀態(tài)(舊的轉(zhuǎn)發(fā)狀態(tài)),轉(zhuǎn)發(fā)到來的分組,開始該過程。到來的分組來自于該托管轉(zhuǎn)發(fā)元件直接面接的終端機(jī)器。轉(zhuǎn)發(fā)狀態(tài)接收自控制器群集,或者通過把轉(zhuǎn)發(fā)狀態(tài)發(fā)送給托管轉(zhuǎn)發(fā)元件,管理該托管轉(zhuǎn)發(fā)元件的機(jī)架控制器。
[0105]之后,過程700 (在710)從控制器群集,接收更新的轉(zhuǎn)發(fā)狀態(tài)。該轉(zhuǎn)發(fā)狀態(tài)由控制器群集更新,并且包括從LCP數(shù)據(jù)轉(zhuǎn)換來的CPCP數(shù)據(jù)。在一些實(shí)施例中,在起非第一轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件收到更新的轉(zhuǎn)發(fā)狀態(tài)之后,控制器把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給第一托管轉(zhuǎn)發(fā)元件。該托管轉(zhuǎn)發(fā)元件現(xiàn)在具有舊的轉(zhuǎn)發(fā)狀態(tài)和更新的轉(zhuǎn)發(fā)狀態(tài)。
[0106]過程700隨后(在715)接收來自控制器群集的利用更新的轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)輸入數(shù)據(jù)的命令。當(dāng)收到該命令時(shí),一些實(shí)施例的第一跳托管轉(zhuǎn)發(fā)元件從舊的轉(zhuǎn)發(fā)狀態(tài),切換到更新的轉(zhuǎn)發(fā)狀態(tài)。在一些實(shí)施例中,該命令可以不是明示的。即,在沒有收到切換到新的轉(zhuǎn)發(fā)狀態(tài)的明確命令的情況下,一旦新的轉(zhuǎn)發(fā)狀態(tài)被安裝在第一跳托管轉(zhuǎn)發(fā)元件中,第一跳托管轉(zhuǎn)發(fā)元件就利用新的轉(zhuǎn)發(fā)狀態(tài)。
[0107]過程700隨后(在720)利用更新的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)到來的分組。從第一跳托管轉(zhuǎn)發(fā)元件獲得所述分組的非第一跳托管轉(zhuǎn)發(fā)元件將利用更新的轉(zhuǎn)發(fā)狀態(tài)來轉(zhuǎn)發(fā)這些分組。在一些實(shí)施例中,過程700向分組中添加版本信息,以致非第一跳托管轉(zhuǎn)發(fā)元件能夠選擇用于轉(zhuǎn)發(fā)來自第一跳托管轉(zhuǎn)發(fā)元件的分組的新的轉(zhuǎn)發(fā)狀態(tài)。
[0108]在725,過程700視情況從控制器群集接收除去舊的轉(zhuǎn)發(fā)狀態(tài)的命令。在一些實(shí)施例中,托管轉(zhuǎn)發(fā)元件不接收除去舊狀態(tài)的明確命令。托管轉(zhuǎn)發(fā)元件改為被控制器群集配置成在收到更新的轉(zhuǎn)發(fā)狀態(tài)之后,在過去一段時(shí)間之后,除去舊的轉(zhuǎn)發(fā)狀態(tài)。過程700隨后(在730)除去舊的轉(zhuǎn)發(fā)狀態(tài)。該過程隨后結(jié)束。
[0109]如在上面的節(jié)I中所述,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)在第一跳以及非第一跳,作出邏輯轉(zhuǎn)發(fā)決策(即,關(guān)于哪個(gè)或哪些邏輯端口應(yīng)接收分組的決策)。在這些實(shí)施例中的一些實(shí)施例中,跨越網(wǎng)絡(luò)的事務(wù)更新被分成兩部分:(I)對第一跳托管轉(zhuǎn)發(fā)元件的事務(wù)更新,和(2)對從第一跳托管轉(zhuǎn)發(fā)元件經(jīng)網(wǎng)絡(luò),到最后一跳托管轉(zhuǎn)發(fā)元件的路徑的事務(wù)更新。一旦能夠?qū)崿F(xiàn)這兩個(gè)部分,就能夠提供全局事務(wù)。即,通過在用新策略更新第一跳之前,準(zhǔn)備任何新的所需路徑,整個(gè)狀態(tài)更新變成原子的。在這兩個(gè)步驟之后,新的第一跳狀態(tài)配置不需要的任何網(wǎng)絡(luò)路徑可被除去。
[0110]圖8概念地圖解說明采用這種兩步法的網(wǎng)絡(luò)控制系統(tǒng)的網(wǎng)絡(luò)控制器群集805。具體地,圖8按4個(gè)不同的階段801-804,圖解說明網(wǎng)絡(luò)控制器群集805分兩部分地把轉(zhuǎn)發(fā)狀態(tài)更新發(fā)送給兩群托管轉(zhuǎn)發(fā)元件。網(wǎng)絡(luò)控制器群集805類似于上面參考圖1說明的網(wǎng)絡(luò)控制器群集105,因?yàn)榫W(wǎng)絡(luò)控制器群集805包括生成、更新并把轉(zhuǎn)發(fā)狀態(tài)傳播給一組托管轉(zhuǎn)發(fā)元件810-835的邏輯控制器和物理控制器(未示出)。托管轉(zhuǎn)發(fā)元件810-835根據(jù)從網(wǎng)絡(luò)控制器群集805接收的轉(zhuǎn)發(fā)狀態(tài),在一組終端機(jī)器840-850之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)(未示出)。
[0111]在第一階段801,托管轉(zhuǎn)發(fā)元件810-835根據(jù)托管轉(zhuǎn)發(fā)元件具有的當(dāng)前轉(zhuǎn)發(fā)狀態(tài)(舊狀態(tài)),轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)(未示出)。具體地,對于從終端機(jī)器840發(fā)送給終端機(jī)器845的分組,由控制器群集定義的路徑跨越托管轉(zhuǎn)發(fā)元件(MFE) 810、815和820,如用實(shí)箭頭線所示。另外在階段801,控制器群集805從用戶(例如,通過圖中未描述的輸入轉(zhuǎn)換控制器),接收對轉(zhuǎn)發(fā)狀態(tài)的更新。所述更新代表新的網(wǎng)絡(luò)策略(例如,定義不同的可用帶寬的新的QoS策略,新開通的從VM到另一個(gè)VM的新路徑等)。
[0112]在第二階段802,控制器群集805計(jì)算轉(zhuǎn)發(fā)狀態(tài)更新(例如,通過把輸入的LCP數(shù)據(jù)轉(zhuǎn)換成UPCP或CPCP數(shù)據(jù))。在一些實(shí)施例中,控制器群集805識(shí)別實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件的所有托管轉(zhuǎn)發(fā)元件。特別地,對于將從第一物理端口轉(zhuǎn)發(fā)到第二物理端口(第一物理端口和第二物理端口被映射成邏輯轉(zhuǎn)發(fā)元件的邏輯入口端口和邏輯出口端口)的分組的路徑,控制器群集805識(shí)別具有所述第一物理端口的托管轉(zhuǎn)發(fā)元件(即,第一跳托管轉(zhuǎn)發(fā)元件)和具有第二物理端口的托管轉(zhuǎn)發(fā)元件(即,最后一跳托管轉(zhuǎn)發(fā)元件)。對于該路徑,控制器群集805隨后把第一跳托管轉(zhuǎn)發(fā)元件歸類到一群中,把最后一跳托管轉(zhuǎn)發(fā)元件以及在該分組的路徑中的其它托管轉(zhuǎn)發(fā)元件歸類到另一群中。
[0113]例如,更新的轉(zhuǎn)發(fā)狀態(tài)具有起源于終端機(jī)器840,并且前往終端機(jī)器850的分組的新路徑,終端機(jī)器850是在計(jì)算舊的轉(zhuǎn)發(fā)狀態(tài),并將其傳播給網(wǎng)絡(luò)轉(zhuǎn)發(fā)元件之后,加入網(wǎng)絡(luò)中的終端機(jī)器。就該新路徑來說,托管轉(zhuǎn)發(fā)元件810是第一跳托管轉(zhuǎn)發(fā)元件,而轉(zhuǎn)發(fā)元件820是最后一跳托管轉(zhuǎn)發(fā)元件。托管轉(zhuǎn)發(fā)元件815是向最后一跳托管轉(zhuǎn)發(fā)元件835轉(zhuǎn)發(fā)所述分組的“中間”托管和非托管轉(zhuǎn)發(fā)元件之一。
[0114]控制器群集805為受用戶更新影響的所有路徑,計(jì)算更新的轉(zhuǎn)發(fā)狀態(tài),并識(shí)別這些路徑中的每條路徑的第一跳托管轉(zhuǎn)發(fā)元件和非第一跳托管轉(zhuǎn)發(fā)元件。在階段802,控制器群集805發(fā)送各條路徑的非第一跳托管轉(zhuǎn)發(fā)元件的更新的轉(zhuǎn)發(fā)狀態(tài)。為了舉例說明的簡明起見,階段802表示始于托管轉(zhuǎn)發(fā)元件810的那些路徑的新舊轉(zhuǎn)發(fā)狀態(tài)。從而,托管轉(zhuǎn)發(fā)元件810只具有舊的轉(zhuǎn)發(fā)狀態(tài),而其它的托管轉(zhuǎn)發(fā)元件具有這些路徑的新舊轉(zhuǎn)發(fā)狀態(tài)。對于用于從終端機(jī)器840發(fā)送給終端機(jī)器850的分組的新路徑,第一跳托管轉(zhuǎn)發(fā)元件還不能夠正確地轉(zhuǎn)發(fā)分組,因?yàn)橥泄苻D(zhuǎn)發(fā)元件820不具有向目的地機(jī)器850轉(zhuǎn)發(fā)分組的轉(zhuǎn)發(fā)狀態(tài)(即,在第一跳托管轉(zhuǎn)發(fā)元件810,缺少邏輯出口端口與托管轉(zhuǎn)發(fā)元件850的物理端口之間的映射)。
[0115]在第三階段803,控制器群集805發(fā)送計(jì)算的用于所有路徑的第一跳轉(zhuǎn)發(fā)元件的更新。托管轉(zhuǎn)發(fā)元件810現(xiàn)在具有新的轉(zhuǎn)發(fā)狀態(tài),以起從托管轉(zhuǎn)發(fā)元件810開始的路徑的第一跳轉(zhuǎn)發(fā)元件的作用。對于于從終端機(jī)器840發(fā)送給終端機(jī)器850的分組的新路徑,托管轉(zhuǎn)發(fā)元件810現(xiàn)在能夠根據(jù)新的轉(zhuǎn)發(fā)狀態(tài),正確地轉(zhuǎn)發(fā)分組。
[0116]在一些實(shí)施例中,當(dāng)托管轉(zhuǎn)發(fā)元件收到新的轉(zhuǎn)發(fā)狀態(tài)時(shí),作為第一跳轉(zhuǎn)發(fā)元件的托管轉(zhuǎn)發(fā)元件開始利用新的轉(zhuǎn)發(fā)狀態(tài)。不過,在一些實(shí)施例中,控制器群集805向托管轉(zhuǎn)發(fā)元件發(fā)送作為第一跳轉(zhuǎn)發(fā)元件,開始利用更新的轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)分組的命令。
[0117]在一些實(shí)施例中,起托管轉(zhuǎn)發(fā)元件直接從源頭機(jī)器接收的那些分組的第一跳轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件,把版本信息添加到分組中。在一些實(shí)施例中,托管轉(zhuǎn)發(fā)元件利用分組的特定二進(jìn)制位作為版本指示符,或者向每個(gè)分組再增加一位,以保存版本信息。在一些這樣的實(shí)施例中,每當(dāng)托管轉(zhuǎn)發(fā)元件切換到更新版本的轉(zhuǎn)發(fā)狀態(tài)更新時(shí),所述版本位就變更其值。非第一跳托管轉(zhuǎn)發(fā)元件隨后根據(jù)分組攜帶的版本信息,利用舊的或者新的轉(zhuǎn)發(fā)狀態(tài)。按照這種方式,根據(jù)舊的或者新的轉(zhuǎn)發(fā)狀態(tài),而不是根據(jù)新舊轉(zhuǎn)發(fā)狀態(tài)的混合,轉(zhuǎn)發(fā)特定分組。
[0118]在第四階段804,托管轉(zhuǎn)發(fā)元件件810-835除去舊的轉(zhuǎn)發(fā)狀態(tài)。在一些實(shí)施例中,控制器群集805把托管轉(zhuǎn)發(fā)元件配置成在收到新的轉(zhuǎn)發(fā)狀態(tài)之后,過去一段時(shí)間之后,除去舊的轉(zhuǎn)發(fā)狀態(tài)。在其它實(shí)施例中,控制器群集505向托管轉(zhuǎn)發(fā)元件發(fā)送命令,以除去舊的轉(zhuǎn)發(fā)狀態(tài)。
[0119]利用關(guān)于一條舊路徑和一條新路徑的更新,表示了圖8中的4個(gè)階段801-804。由于可能存在為實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件而定義的許多其它路徑,因此控制器群集805和托管轉(zhuǎn)發(fā)元件件810-835對受用戶更新影響的所有路徑,進(jìn)行按這4個(gè)階段801-804說明的兩步過程。下一個(gè)附圖(圖9)概念地圖解說明一些實(shí)施例對更新或創(chuàng)建的所有路徑,進(jìn)行的向托管轉(zhuǎn)發(fā)元件發(fā)送更新的過程900。在一些實(shí)施例中,過程900由控制器群集(未示出),比如圖1和8的控制器群集105或805進(jìn)行。
[0120]通過(在905)接收輸入,開始過程900,所述輸入是對由控制器群集管理的托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài)的更新。由于上面說明的3個(gè)原因,會(huì)出現(xiàn)對轉(zhuǎn)發(fā)狀態(tài)的這些更新。
[0121]之后,過程900 (在910)根據(jù)接收的輸入,計(jì)算更新的轉(zhuǎn)發(fā)狀態(tài)。所述計(jì)算涉及LCP數(shù)據(jù)到LFP數(shù)據(jù)的變換,以及隨后LFP數(shù)據(jù)到UPCP或CPCP數(shù)據(jù)的變換。更新的LCP數(shù)據(jù)會(huì)影響幾個(gè)邏輯轉(zhuǎn)發(fā)元件,包括邏輯L2交換機(jī)和邏輯L3路由器。即,邏輯路徑(即,受影響的邏輯轉(zhuǎn)發(fā)元件的許多對邏輯端口之間的許多邏輯路徑)被除去、增加或更改,于是,實(shí)現(xiàn)這些受影響的邏輯路徑的物理路徑也被除去、增加或更改。從而,更新的轉(zhuǎn)發(fā)狀態(tài)用于所有受影響的物理路徑的第一跳轉(zhuǎn)發(fā)元件和非第一跳托管轉(zhuǎn)發(fā)元件。
[0122]過程900隨后(在915)識(shí)別用于起非第一跳托管轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件的新的轉(zhuǎn)發(fā)狀態(tài)。該轉(zhuǎn)發(fā)狀態(tài)用于在受所述輸入影響的路徑中,但是不是路徑的第一跳托管轉(zhuǎn)發(fā)元件的那些托管轉(zhuǎn)發(fā)元件。
[0123]在一些實(shí)施例中,只有第一跳和最后一跳托管轉(zhuǎn)發(fā)元件需要轉(zhuǎn)發(fā)狀態(tài)更新。在這些實(shí)施例中的一些實(shí)施例中,受所述輸入影響的邏輯轉(zhuǎn)發(fā)元件僅僅由第一跳和最后一跳托管轉(zhuǎn)發(fā)元件實(shí)現(xiàn)。例如,控制器群集把第一跳托管轉(zhuǎn)發(fā)元件配置成進(jìn)行第一邏輯交換機(jī)的邏輯L2轉(zhuǎn)發(fā)操作(例如,根據(jù)分組的MAC地址,邏輯地轉(zhuǎn)發(fā)分組),和進(jìn)行邏輯路由器的邏輯L3路由操作(例如,根據(jù)分組的IP地址,邏輯地路由分組)??刂破魅杭炎詈笠惶泄苻D(zhuǎn)發(fā)元件配置成進(jìn)行獲得由邏輯路由器路由的分組的第二邏輯交換機(jī)的邏輯L2轉(zhuǎn)發(fā)操作。在這些實(shí)施例中,(在915)識(shí)別的新的轉(zhuǎn)發(fā)狀態(tài)用于受影響路徑的最后一跳托管轉(zhuǎn)發(fā)元件。在這些路徑的中間的轉(zhuǎn)發(fā)元件用作連接第一跳托管轉(zhuǎn)發(fā)元件和最后一跳托管轉(zhuǎn)發(fā)元件的架構(gòu)。在915,過程900還把識(shí)別的用于非第一跳轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給非第一跳托管轉(zhuǎn)發(fā)元件。
[0124]過程900隨后(在920)識(shí)別用于起第一跳托管轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件的新的轉(zhuǎn)發(fā)狀態(tài)。該轉(zhuǎn)發(fā)狀態(tài)用于作為受影響路徑中的第一跳轉(zhuǎn)發(fā)元件的那些托管轉(zhuǎn)發(fā)元件。在步驟920,過程900還把識(shí)別的用于第一跳轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給第一跳托管轉(zhuǎn)發(fā)元件。
[0125]在一些實(shí)施例中,更新轉(zhuǎn)發(fā)狀態(tài)不必全局地排序。只需要使每個(gè)第一跳元件的更新串行化。即,如果多個(gè)第一跳元件都需要轉(zhuǎn)發(fā)狀態(tài)更新,那么可以并行地獨(dú)立處理它們的更新。只有計(jì)算需要是事務(wù)性的。
[0126]在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)在一些情況下,利用在Reitblatt的論文中說明的方法更新全網(wǎng)絡(luò)狀態(tài),在所述一些情況下,路徑的非第一跳轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài)變化相當(dāng)多,以致新舊路徑會(huì)被混合。例如,當(dāng)在(網(wǎng)絡(luò)控制器的)軟件版本之間,路徑標(biāo)志的尋址方案變化時(shí),會(huì)發(fā)生這種情況。對于這種狀況,控制器群集從路徑標(biāo)志/地址的開始,專門指定一個(gè)(或幾個(gè))全網(wǎng)絡(luò)版本位,以致如果需要,能夠改變路徑尋址的結(jié)構(gòu)。說到這,應(yīng)注意只要標(biāo)志/地址結(jié)構(gòu)不變,就可通過增加新的路徑,隨后在路徑的剩余部分準(zhǔn)備就緒之后,使第一跳托管轉(zhuǎn)發(fā)元件遷移到新路徑,實(shí)現(xiàn)全網(wǎng)絡(luò)更新。
[0127]在把第一跳和非第一跳轉(zhuǎn)發(fā)元件的更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給托管轉(zhuǎn)發(fā)元件之后,過程900 (在925)判定過程900是否已從所述過程向其發(fā)送更新的轉(zhuǎn)發(fā)狀態(tài)的所有托管轉(zhuǎn)發(fā)元件,收到確認(rèn)。所述確認(rèn)指示托管轉(zhuǎn)發(fā)元件收到了來自控制器群集的更新的轉(zhuǎn)發(fā)狀態(tài)。在一些實(shí)施例中,只有在收到非第一跳轉(zhuǎn)發(fā)元件的更新的轉(zhuǎn)發(fā)狀態(tài)的各個(gè)托管轉(zhuǎn)發(fā)元件回送確認(rèn)之后,過程900才向托管轉(zhuǎn)發(fā)元件發(fā)送第一跳轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)狀態(tài)。這些實(shí)施例的過程900隨后等待來自收到第一跳托管轉(zhuǎn)發(fā)元件的更新轉(zhuǎn)發(fā)狀態(tài)的各個(gè)托管轉(zhuǎn)發(fā)元件的確認(rèn)。
[0128]當(dāng)過程900(在925)判定并非所有收到更新的轉(zhuǎn)發(fā)狀態(tài)的托管轉(zhuǎn)發(fā)元件都回送了確認(rèn)時(shí),過程900返回925,以等待所述確認(rèn)。不過,在一些實(shí)施例中,在過程把更新的轉(zhuǎn)發(fā)狀態(tài)發(fā)送給托管轉(zhuǎn)發(fā)元件之后,過去一段時(shí)間之后,過程900進(jìn)入930。
[0129]當(dāng)過程900(在925)判定所有收到更新的轉(zhuǎn)發(fā)狀態(tài)的托管轉(zhuǎn)發(fā)元件都回送了確認(rèn)時(shí),一些實(shí)施例的過程900 (在930)向托管轉(zhuǎn)發(fā)元件發(fā)送應(yīng)用第一跳轉(zhuǎn)發(fā)元件的更新的轉(zhuǎn)發(fā)狀態(tài)的命令。在一些實(shí)施例中,當(dāng)托管轉(zhuǎn)發(fā)元件利用更新的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)分組時(shí),托管轉(zhuǎn)發(fā)元件把版本信息(例如,版本位)包含在分組中,以致非第一跳托管轉(zhuǎn)發(fā)元件利用更新的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)這些分組。
[0130]過程900隨后視情況(在935)向托管轉(zhuǎn)發(fā)元件發(fā)送從托管轉(zhuǎn)發(fā)元件中除去舊的轉(zhuǎn)發(fā)狀態(tài)的命令。在一些實(shí)施例中,控制器群集把托管轉(zhuǎn)發(fā)元件配置成在收到新的轉(zhuǎn)發(fā)狀態(tài)之后,在過去一段時(shí)間之后,除去舊的轉(zhuǎn)發(fā)狀態(tài),而不是向托管轉(zhuǎn)發(fā)元件發(fā)送命令。該過程隨后結(jié)束。
[0131]圖9圖解說明一些實(shí)施例的由網(wǎng)絡(luò)控制器群集進(jìn)行的過程900,下一附圖(圖7)圖解說明一些實(shí)施例的由托管轉(zhuǎn)發(fā)元件進(jìn)行的過程。圖10概念地圖解說明一些實(shí)施例進(jìn)行的轉(zhuǎn)發(fā)數(shù)據(jù)的過程1000。過程1000由利用轉(zhuǎn)發(fā)狀態(tài),以起非第一跳轉(zhuǎn)發(fā)元件作用的托管轉(zhuǎn)發(fā)元件進(jìn)行。
[0132]通過(在1005)利用當(dāng)前轉(zhuǎn)發(fā)狀態(tài)(舊的轉(zhuǎn)發(fā)狀態(tài)),轉(zhuǎn)發(fā)到來的分組,開始處理1000。到來的分組不是來自托管轉(zhuǎn)發(fā)元件直接面接的終端機(jī)器。即,該托管轉(zhuǎn)發(fā)元件在這些分組的路徑中,但是不是作為分組的第一跳轉(zhuǎn)發(fā)元件。轉(zhuǎn)發(fā)狀態(tài)接收自控制器群集,或者通過把轉(zhuǎn)發(fā)狀態(tài)發(fā)送給托管轉(zhuǎn)發(fā)元件管理該托管轉(zhuǎn)發(fā)元件的機(jī)架控制器。
[0133]之后,過程1000(在1010)從控制器群集,接收更新的轉(zhuǎn)發(fā)狀態(tài)。在一些實(shí)施例中,該轉(zhuǎn)發(fā)狀態(tài)由控制器群集更新,并且包括從LCP數(shù)據(jù)轉(zhuǎn)換來的CPCP數(shù)據(jù)。托管轉(zhuǎn)發(fā)元件現(xiàn)在具有舊的轉(zhuǎn)發(fā)狀態(tài)和更新的轉(zhuǎn)發(fā)狀態(tài)。
[0134]過程1000隨后(在1015)利用舊的或者更新的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)到來的分組。在一些實(shí)施例中,過程1000根據(jù)到來的分組所攜帶的版本信息,選擇使用舊的或者更新的轉(zhuǎn)發(fā)狀態(tài)來轉(zhuǎn)發(fā)到來的分組。即,所述版本信息用于匹配安裝在托管轉(zhuǎn)發(fā)元件中的舊轉(zhuǎn)發(fā)狀態(tài)和更新的轉(zhuǎn)發(fā)狀態(tài)具有的版本信息。
[0135]在1020,過程1000視情況從控制器群集接收除去舊的轉(zhuǎn)發(fā)狀態(tài)的命令。在一些實(shí)施例中,托管轉(zhuǎn)發(fā)元件不接收除去舊狀態(tài)的明確命令。托管轉(zhuǎn)發(fā)元件改為被控制器群集配置成在收到更新的轉(zhuǎn)發(fā)狀態(tài)之后,在過去一段時(shí)間之后,除去舊的轉(zhuǎn)發(fā)狀態(tài)。過程1000隨后(在1025)除去舊的轉(zhuǎn)發(fā)狀態(tài)。該過程隨后結(jié)束。
[0136]C.模擬外部依賴關(guān)系
[0137]上面的討論考慮了對網(wǎng)絡(luò)控制系統(tǒng)中的事務(wù)性提出的要求,和跨越網(wǎng)絡(luò)的事務(wù)更新的實(shí)現(xiàn)(即,通過分離對第一跳處理的更新和對非第一跳處理的更新)。網(wǎng)絡(luò)控制系統(tǒng)還事務(wù)地計(jì)算對網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)的更新。
[0138]顯然,在事務(wù)地更新無論什么之前,在已知策略變化的情況下,網(wǎng)絡(luò)控制系統(tǒng)使計(jì)算收斂。如上所述,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)利用nLog表映射引擎來實(shí)現(xiàn)系統(tǒng)的網(wǎng)絡(luò)控制器。在一些實(shí)施例中,nLog引擎使計(jì)算達(dá)到其定點(diǎn)-S卩,nLog引擎根據(jù)迄今收到的輸入變化,計(jì)算轉(zhuǎn)發(fā)狀態(tài)的所有變化。
[0139]在高層次,達(dá)到局部定點(diǎn)較簡單:不向計(jì)算引擎(即,nLog引擎)提供任何新的更新并等到該引擎不再有工作要做就夠了。然而,在聯(lián)網(wǎng)中,稍微寬泛地解釋定點(diǎn)的定義:盡管計(jì)算可達(dá)到定點(diǎn),不過不意味計(jì)算得到能夠被進(jìn)一步向下推送給托管轉(zhuǎn)發(fā)元件的結(jié)果。例如,當(dāng)改變隧道的目的地端口時(shí),UPCP數(shù)據(jù)可能只具有該目的地端口映射到的物理端口的占位符。
[0140]結(jié)果卻是計(jì)算可能依賴于在計(jì)算可結(jié)束并且達(dá)到與可以使用并向下推送的轉(zhuǎn)發(fā)狀態(tài)對應(yīng)的定點(diǎn)之前,必須應(yīng)用的外部變化。繼續(xù)該例子,只有在設(shè)置了將導(dǎo)致端口號(hào)的隧道端口之后,才可填充流表項(xiàng)中的關(guān)于端口號(hào)的占位符。在這種情況下,在對于任何新的外部狀態(tài)(例如,歸因于創(chuàng)建的隧道的端口號(hào))的依賴關(guān)系被滿足之前,不能認(rèn)為UPCP計(jì)算已結(jié)束。
[0141]從而,在計(jì)算中必須考慮這些外部依賴關(guān)系,并將其包含在定點(diǎn)的考慮中。S卩,在計(jì)算局部結(jié)束并且沒有外部依賴關(guān)系仍然未被滿足之前,未達(dá)到定點(diǎn)。在一些實(shí)施例中,nLog計(jì)算建立在增加和去除中間結(jié)果之上;配置或者對外部狀態(tài)的每個(gè)更改導(dǎo)致計(jì)算狀態(tài)的增加或去除。
[0142]為了在UPCP計(jì)算中考慮外部依賴關(guān)系,nLog引擎應(yīng):
[0143](I)當(dāng)更改導(dǎo)致在新的UPCP數(shù)據(jù)能夠被向下推送之前應(yīng)被增加的狀態(tài)時(shí)(例如,當(dāng)為了完成UPCP流表項(xiàng),必須創(chuàng)建隧道時(shí)),使所述更改立即被應(yīng)用。在所述更改的結(jié)果(例如,新的端口號(hào))被返回nLog計(jì)算引擎之前,nLog計(jì)算引擎不得不認(rèn)為定點(diǎn)是不能達(dá)到的。
[0144](2)當(dāng)更改導(dǎo)致會(huì)影響當(dāng)前的UPCP數(shù)據(jù)的狀態(tài)時(shí)(例如,除去舊的隧道),在提交事務(wù)(即,實(shí)現(xiàn)新的網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài))之前,不能允許更新通過。只有在事務(wù)已被提交之后,才應(yīng)應(yīng)用所述更新。否則,在事務(wù)被提交之前,網(wǎng)絡(luò)轉(zhuǎn)發(fā)會(huì)變化。在施行上述規(guī)則的情況下,不能支持外部資源的原子級更改。幸運(yùn)的是,大部分的資源更改可被模擬成增加/去除;例如,當(dāng)改變代表朝向特定目的地的隧道的端口的配置時(shí),新配置可被視為暫時(shí)與舊端口共存的新端口。
[0145]從而,在高層次,上述方法建立在緊接于舊配置,增加新配置的能力之上。在使路徑中的托管資源連網(wǎng)的情況下,情況一般就是這樣。在存在約束的情況下(比如說由于某個(gè)原因,朝向相同IP的兩條隧道不能存在),該方法不起作用,從而不能提供這種變化的原子性。
[0146]圖11概念地圖解說明一些實(shí)施例進(jìn)行的事務(wù)地計(jì)算轉(zhuǎn)發(fā)狀態(tài),并把轉(zhuǎn)發(fā)狀態(tài)發(fā)送給一組托管轉(zhuǎn)發(fā)元件的過程1100。在一些實(shí)施例中,過程1100由物理控制器,或者接收UPCP數(shù)據(jù)并把UPCP數(shù)據(jù)轉(zhuǎn)換成CPCP數(shù)據(jù)的機(jī)架控制器進(jìn)行。通過(在1105)從邏輯控制器或物理控制器,接收包含UPCP數(shù)據(jù)的一組轉(zhuǎn)發(fā)狀態(tài)變化(例如,數(shù)據(jù)元組),開始該過程。
[0147]過程1100隨后(在1105)判定收到的變化是否具有外部依賴關(guān)系。在一些實(shí)施例中,當(dāng)處理變化的控制器不具有處理所述變化的全部信息,從而不得不從另一個(gè)控制器或者從托管轉(zhuǎn)發(fā)元件獲得缺少的信息時(shí),所述變化具有外部依賴關(guān)系。例如,為了把指定托管轉(zhuǎn)發(fā)元件應(yīng)從托管轉(zhuǎn)發(fā)元件的端口建立隧道的UPCP變化轉(zhuǎn)換成CPCP變化,在CPCP變化中,需要所述端口的端口號(hào)。于是,在從托管轉(zhuǎn)發(fā)元件收到實(shí)際端口號(hào)之前,不能創(chuàng)建CPCP變化。
[0148]當(dāng)過程1100(在1105)判定收到的變化不具有外部依賴關(guān)系時(shí),過程1100進(jìn)入將在下面進(jìn)一步說明的1115。當(dāng)過程1100(在1105)判定變化具有外部依賴關(guān)系時(shí),過程1100(在1110)根據(jù)具有外部依賴關(guān)系的接收變化,計(jì)算一組輸出變化,并把計(jì)算的變化發(fā)送給托管轉(zhuǎn)發(fā)元件。所述一組輸出變化向托管轉(zhuǎn)發(fā)元件請求缺少的信息。過程1100隨后返回1105,以便從邏輯控制器或物理控制器,或者從可回送缺少的信息的托管轉(zhuǎn)發(fā)元件接收更多的變化,以便解決外部依賴關(guān)系。
[0149]當(dāng)過程1100(在1105)判定收到的變化沒有外部依賴關(guān)系時(shí),過程1100 (在1110)計(jì)算一組輸出變化(例如,通過把UPCP變化轉(zhuǎn)換成CPCP變換),隨后(在1115)判定過程1100是否達(dá)到定點(diǎn),所述定點(diǎn)指示輸出變化的事務(wù)計(jì)算的結(jié)束。換句話說,過程1100判定收到的變化是否已被完全處理,并且過程1100目前不再有要處理的變化。
[0150]當(dāng)過程1100(在1115)判定過程未到達(dá)定點(diǎn)地時(shí),過程1100返回1115,以繼續(xù)根據(jù)輸入變化,計(jì)算輸出變化。否則,過程1125把輸出變化發(fā)送給托管轉(zhuǎn)發(fā)元件。過程隨后結(jié)束。
[0151]D.對于事務(wù)更新的計(jì)算要求
[0152]上面的討論指出事務(wù)地計(jì)算更新,隨后把它們推送給第一跳邊緣轉(zhuǎn)發(fā)元件就足夠了。從而,除了計(jì)算之外,對系統(tǒng)再加以一個(gè)額外的要求:事務(wù)通信通道。
[0153]因而,在一些實(shí)施例中,朝向轉(zhuǎn)發(fā)元件的通信通道(例如,從輸入轉(zhuǎn)換控制器到邏輯控制器,從邏輯控制器到物理控制器,從物理控制器到機(jī)架控制器或托管轉(zhuǎn)發(fā)元件,和/或從機(jī)架控制器到托管轉(zhuǎn)發(fā)元件的通信通道)支持對被完全應(yīng)用或者根本未被應(yīng)用的各個(gè)單元的成批變化。在這些實(shí)施例中的一些實(shí)施例中,通信通道只支持“分界線”(即,開始和結(jié)束標(biāo)記)的概念,所述分界線用信號(hào)向接收器通知事務(wù)的結(jié)束。接收控制器或托管轉(zhuǎn)發(fā)元件僅僅對各個(gè)更新排隊(duì),直到它收到如上所述的分界線為止。另外,通道必須維持發(fā)送的更新的順序,或者至少保證在分界線之前發(fā)送的更新不會(huì)在分界線之后到達(dá)接收器。
[0154]這樣,發(fā)送控制器可僅僅把發(fā)送更新保持為當(dāng)計(jì)算取得進(jìn)展時(shí)的狀態(tài),并且一旦它確定達(dá)到了定點(diǎn),它就用信號(hào)向進(jìn)行接收的第一跳轉(zhuǎn)發(fā)元件通知事務(wù)的結(jié)束。如下進(jìn)一步所述,一些實(shí)施例中的通信通道還支持同步提交,以致發(fā)送控制器知道事務(wù)何時(shí)已被處理(通過達(dá)到定點(diǎn)而被計(jì)算)和被進(jìn)一步向下推送(如果需要的話)。應(yīng)注意在如下所述的嵌套事務(wù)的情況下,所述同步提交可在網(wǎng)絡(luò)控制系統(tǒng)的各個(gè)較低層,在內(nèi)部導(dǎo)致更多的同步提交。
[0155]上面說明了實(shí)現(xiàn)全網(wǎng)絡(luò)事務(wù),下面的節(jié)III說明通過朝向托管轉(zhuǎn)發(fā)元件的幾個(gè)通道,實(shí)現(xiàn)事務(wù)。
[0156]II1.嵌套事務(wù)
[0157]通過如上參考圖5-10所述,當(dāng)提到轉(zhuǎn)發(fā)狀態(tài)更新時(shí),分離網(wǎng)絡(luò)的起點(diǎn)和網(wǎng)絡(luò)的剩余部分,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)有效地創(chuàng)建嵌套事務(wù)結(jié)構(gòu):一個(gè)全局事務(wù)可被認(rèn)為包括兩個(gè)子事務(wù),一個(gè)子事務(wù)用于第一跳端口,一個(gè)子事務(wù)用于非第一跳端口。不管該解決方案是以最細(xì)的粒度(通過了解在網(wǎng)絡(luò)的中間的每個(gè)物理跳,并建立所需的狀態(tài))管理非第一跳端口,還是假定外部實(shí)體能夠以事務(wù)的方式建立跨網(wǎng)絡(luò)的連接,該方法都保持相同。
[0158]在一些實(shí)施例中,這推廣到允許根據(jù)一組更細(xì)粒的事務(wù),創(chuàng)建基本的分發(fā)式事務(wù)的原理。特別地,考慮具有朝向控制器的多個(gè)通信通道的托管轉(zhuǎn)發(fā)元件,同時(shí)每個(gè)通道提供事務(wù)性,但是不支持跨通道的事務(wù)。即,通道不支持分布式事務(wù)。在這種情況下,完全相同的組合方法同樣起作用。只要通道中的可被視為主通道的一個(gè)通道使其事務(wù)得到應(yīng)用,其它通道的狀態(tài)就都不被使用。借助這種結(jié)構(gòu),在主通道提交事務(wù)之前,可再次“準(zhǔn)備”輔通道(正如在第一跳托管轉(zhuǎn)發(fā)元件提交其事務(wù)之前,準(zhǔn)備非第一跳托管轉(zhuǎn)發(fā)元件一樣)。這樣,凈結(jié)果是當(dāng)在第一跳托管轉(zhuǎn)發(fā)元件的事務(wù)被提交時(shí),獲得提交的單一的全局事務(wù)。
[0159]圖12圖解說明控制器1210建立了到其的2個(gè)通信通道1215和1220,以便向其發(fā)送更新的托管轉(zhuǎn)發(fā)元件1205。特別地,圖12按4個(gè)不同的階段1201-1204,圖解說明在來自通道1215的更新到達(dá)之前,托管轉(zhuǎn)發(fā)元件1205不利用通過通道接收的更新。
[0160]控制器1210類似于圖2的控制器200。在一些實(shí)施例中,控制器1210是把UPCP數(shù)據(jù)轉(zhuǎn)換成CPCP數(shù)據(jù)的物理控制器。在其它實(shí)施例中,控制器1210是把從物理控制器接收的UPCP數(shù)據(jù)轉(zhuǎn)換成CPCP數(shù)據(jù)的機(jī)架控制器。
[0161]在一些實(shí)施例中,控制器1210與托管轉(zhuǎn)發(fā)元件1205建立兩條通道1215和1220。通道1215是利用控制托管轉(zhuǎn)發(fā)元件1205的轉(zhuǎn)發(fā)平面(例如,轉(zhuǎn)發(fā)表)的通信協(xié)議建立的。例如,OpenFlow協(xié)議提供用于向托管轉(zhuǎn)發(fā)元件1205中的流表項(xiàng)增加流表項(xiàng),從托管轉(zhuǎn)發(fā)元件1205中的流表項(xiàng)中除去流表項(xiàng),和更改托管轉(zhuǎn)發(fā)元件1205中的流表項(xiàng)的命令。通道1220是利用配置協(xié)議建立的。托管轉(zhuǎn)發(fā)元件1205通過通道1220接收配置信息。在一些實(shí)施例中,托管轉(zhuǎn)發(fā)元件1205把配置信息保存在配置數(shù)據(jù)庫(未示出)中。在一些實(shí)施例中,配置信息包括用于配置托管轉(zhuǎn)發(fā)元件1205的信息,比如配置入口端口、出口端口、端口的QoS配置等的信息。為了例示和討論的簡明起見,圖12例示了流表項(xiàng)和配置信息,并將稱為轉(zhuǎn)發(fā)狀態(tài)。
[0162]托管轉(zhuǎn)發(fā)元件1205直接面接幾個(gè)終端機(jī)器(未示出),并利用通過這兩個(gè)通道從控制器1205接收的轉(zhuǎn)發(fā)狀態(tài),往來于所述終端機(jī)器轉(zhuǎn)發(fā)數(shù)據(jù)。這兩個(gè)通道都不支持分布式事務(wù),不過通過把來自通道1220的事務(wù)嵌套(批量集中)到來自通道1215的事務(wù)中,或者反過來,托管轉(zhuǎn)發(fā)元件1205跨這兩個(gè)通道實(shí)現(xiàn)分布式事務(wù)。例如,在一些實(shí)施例中,托管轉(zhuǎn)發(fā)元件1205把通道1215指定成主通道,把通道1220指定成輔通道。托管轉(zhuǎn)發(fā)元件1205保持通過通道接收的轉(zhuǎn)發(fā)狀態(tài)的應(yīng)用,直到托管轉(zhuǎn)發(fā)元件1205通過主通道收到事務(wù)為止。
[0163]在第一階段1201,托管轉(zhuǎn)發(fā)元件1205已通過通道1220和1220,從控制器1210收到一組變化(例如,數(shù)據(jù)元組)。通過通道1215收到的這些變化包括流表項(xiàng)。通過通道1220收到的變化包括配置信息。
[0164]在階段1201,已通過主通道1215,收到變化1-1。通過輔通道1220,收到變化2_1和2-2。托管轉(zhuǎn)發(fā)元件已把這些變化保存在存儲(chǔ)結(jié)構(gòu)1230中,但是還未開始利用這些變化來轉(zhuǎn)發(fā)到來的分組(未示出),因?yàn)橥泄苻D(zhuǎn)發(fā)元件1205還未通過主通道1215,收到完整的事務(wù)。托管轉(zhuǎn)發(fā)元件利用當(dāng)前的轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)到來的分組。
[0165]第一階段1201還表示變化1-2通過主通道1215,到達(dá)托管轉(zhuǎn)發(fā)元件1205,變化2-3通過輔通道1220,到達(dá)托管轉(zhuǎn)發(fā)元件1205。變化2_3被描述成具有粗邊框的平行四邊形,以指示變化2-3是通過輔通道1220接收的事務(wù)的最后變化,該事務(wù)包括變化2-1、2-2和 2_3。
[0166]在第二階段1202,托管轉(zhuǎn)發(fā)元件1205分別通過主通道1215和輔通道1220,收到變化1-2和2-3。托管轉(zhuǎn)發(fā)元件1205已把變化1-2和2_3保存在存儲(chǔ)結(jié)構(gòu)1230中,但是還未開始利用這些變化轉(zhuǎn)發(fā)到來的分組,和配置托管轉(zhuǎn)發(fā)元件1205,因?yàn)橥泄苻D(zhuǎn)發(fā)元件1205還未通過主通道1215,收到完整的事務(wù)。
[0167]第二階段1202還表示變化1-3通過主通道1215,到達(dá)托管轉(zhuǎn)發(fā)元件1205。變化1-3被描述成具有粗邊框的平行四邊形,以指示變化1-3是通過輔通道1215接收的事務(wù)的最后變化,該事務(wù)包括變化1-1、1_2和1-3。
[0168]在第三階段1203,托管轉(zhuǎn)發(fā)元件1205已通過主通道1215,收到變化1_3,從而從主通道1215,完整地收到事務(wù)。托管轉(zhuǎn)發(fā)元件1205從而用兩種事務(wù)中,通過通道1215和1220接收的變化,更新轉(zhuǎn)發(fā)狀態(tài)。
[0169]第四階段1204表示托管轉(zhuǎn)發(fā)元件1205提交變化。即,托管轉(zhuǎn)發(fā)元件1205利用更新的轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)到來的分組,并配置托管轉(zhuǎn)發(fā)元件1205。這樣,托管轉(zhuǎn)發(fā)元件1205把通過輔通道接收的事務(wù)嵌套到通過主通道接收的事務(wù)中,以便實(shí)現(xiàn)跨這兩個(gè)通道的全局事務(wù)。
[0170]圖13概念地圖解說明一些實(shí)施例進(jìn)行的把通過輔通道接收的事務(wù)批量集中到通過主通道接收的事務(wù)中的過程1300。一些實(shí)施例的過程1300由通過相對于控制器建立的幾個(gè)通道從控制器接收轉(zhuǎn)發(fā)狀態(tài)的托管轉(zhuǎn)發(fā)元件(例如,圖12的托管轉(zhuǎn)發(fā)元件1205)進(jìn)行??刂破骺梢允亲鳛橥泄苻D(zhuǎn)發(fā)元件的控制者的物理控制器,或者與托管轉(zhuǎn)發(fā)元件在相同的主機(jī)中工作的機(jī)架控制器。在一些實(shí)施例中,通道之一被指定為主通道,另一個(gè)通道被指定為輔通道。
[0171]通過(在1305)借助主通道和輔通道接收轉(zhuǎn)發(fā)狀態(tài),開始過程1300。在一些實(shí)施例中,通過通道從控制器接收的轉(zhuǎn)發(fā)狀態(tài)包括CPCP數(shù)據(jù)。具體地,通過主通道到來的轉(zhuǎn)發(fā)狀態(tài)包括轉(zhuǎn)到托管轉(zhuǎn)發(fā)元件的控制平面的控制數(shù)據(jù)。通過輔通道到來的轉(zhuǎn)發(fā)狀態(tài)包括配置數(shù)據(jù)(例如,用于配置入口端口、出口端口、端口的QoS配置、中間盒實(shí)例等的數(shù)據(jù))。然而,在一些實(shí)施例中,主通道和輔通道的指定不必取決于通過通道接收的數(shù)據(jù)的種類,只要把通道之一指定為主通道,把另一個(gè)通道指定為輔通道即可。
[0172]之后,過程1300(在1310)判定過程1300是否已通過主通道收到分界線。如上所述,當(dāng)在接收設(shè)備收到分界線時(shí),所述分界線指示接收設(shè)備已完全收到輸入的一個(gè)事務(wù)。在一些實(shí)施例中,分界線是添加到變化中的信息。其它實(shí)施例的分界線是指示變化的發(fā)送者已完全發(fā)送一組事務(wù)輸入的變化本身。
[0173]當(dāng)過程1300(在1310)判定還未通過主通道收到分界線時(shí),過程1300(在1320)把該過程迄今收到的轉(zhuǎn)發(fā)狀態(tài)保存在存儲(chǔ)結(jié)構(gòu)中。托管轉(zhuǎn)發(fā)元件不利用保存在存儲(chǔ)結(jié)構(gòu)中的轉(zhuǎn)發(fā)狀態(tài)。過程1300隨后返回1305,以通過通道接收來自控制器群集的更多轉(zhuǎn)發(fā)狀態(tài)。
[0174]當(dāng)過程1300(在1310)判定已通過主通道收到分界線時(shí),過程用迄今收到的轉(zhuǎn)發(fā)狀態(tài)更新托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)表和配置數(shù)據(jù)庫。托管轉(zhuǎn)發(fā)元件隨后利用配置數(shù)據(jù)配置托管轉(zhuǎn)發(fā)元件,并根據(jù)根據(jù)轉(zhuǎn)發(fā)表中的更新的流表項(xiàng),轉(zhuǎn)發(fā)到來的分組。過程1300隨后結(jié)束。
[0175]注意,該推廣允許把事務(wù)嵌套到任意深度,如果需要這樣的話。特別地,事務(wù)系統(tǒng)可用嵌套事務(wù),內(nèi)部構(gòu)建其事務(wù)性。用嵌套事務(wù)構(gòu)建事務(wù)性的能力不僅在控制器可構(gòu)成的分層結(jié)構(gòu)中有用,而且在考慮轉(zhuǎn)發(fā)元件如何內(nèi)部為管理轉(zhuǎn)發(fā)元件的控制器提供事務(wù)接口時(shí)也有用。
[0176]一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)同樣通過利用相同的嵌套原理,向不明確支持底層托管資源中的事務(wù)性的通信通道引入事務(wù)性。考慮具有可容易地?cái)U(kuò)展的表管線的路徑。即使流表更新不支持事務(wù),也易于在現(xiàn)有管線的前面增加一級,并使單一流表項(xiàng)決定應(yīng)使用狀態(tài)的哪個(gè)版本。從而,通過隨后更新單一流表項(xiàng)(這是事務(wù)的),可以事務(wù)地更新整個(gè)流表。該方法的細(xì)節(jié)不必暴露給上面的控制器;不過,實(shí)際上現(xiàn)在存在事務(wù)的分層結(jié)構(gòu)。
[0177]作為上述實(shí)施例的使用情況,從一種控制器版本到另一種控制器版本(即,軟件版本)的遷移受益于系統(tǒng)中的事務(wù)和定點(diǎn)計(jì)算支持。在這種使用情況下,外部升級驅(qū)動(dòng)器運(yùn)行從一種控制器版本到另一種控制器版本的整個(gè)升級過程。驅(qū)動(dòng)器的職責(zé)是協(xié)調(diào)升級以不會(huì)出現(xiàn)分組丟失的方式發(fā)生。
[0178]驅(qū)動(dòng)器執(zhí)行的把較小子事務(wù)合成為單一全局事務(wù)的整個(gè)過程如下:
[0179](I) 一旦需要升級轉(zhuǎn)發(fā)狀態(tài),驅(qū)動(dòng)器就要求開始網(wǎng)絡(luò)中間部分(架構(gòu))的新狀態(tài)的計(jì)算。對管理網(wǎng)絡(luò)中間狀態(tài)的所有控制器都這樣做,預(yù)期新的中間狀態(tài)將與舊的中間狀態(tài)共存。
[0180](2)驅(qū)動(dòng)器隨后等待每個(gè)控制器達(dá)到定點(diǎn),隨后同步地把事務(wù)向下提交給接收控制器/交換元件。驅(qū)動(dòng)器同步地進(jìn)行所述提交,因?yàn)樵谔峤恢螅?qū)動(dòng)器知道該狀態(tài)在交換元件中有效,可被分組使用。
[0181](3)之后,驅(qū)動(dòng)器要求控制器向新的邊緣轉(zhuǎn)發(fā)狀態(tài)更新,所述新的邊緣轉(zhuǎn)發(fā)狀態(tài)也利用在(I)中為網(wǎng)絡(luò)的中間部分建立的新路徑。
[0182](4)同樣,驅(qū)動(dòng)器向所有控制器要求定點(diǎn),隨后一旦達(dá)到定點(diǎn),也同步提交更新。
[0183](5)當(dāng)驅(qū)動(dòng)器要求舊的網(wǎng)絡(luò)中間狀態(tài)的去除時(shí),結(jié)束更新。這不需要等待定點(diǎn)和提交;所述去除將與控制器最終向下推送的任何其它變化一起被向下推送。
[0184]IV.電子系統(tǒng)
[0185]許多上述特征和應(yīng)用被實(shí)現(xiàn)成軟件過程,所述軟件過程被指定成記錄在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(也稱為計(jì)算機(jī)可讀介質(zhì))上的指令集。當(dāng)這些指令由一個(gè)或多個(gè)處理單元(例如,一個(gè)或多個(gè)處理器、處理器的核心、或者其它處理單元)執(zhí)行時(shí),它們使所述處理單元進(jìn)行在指令中指示的動(dòng)作。計(jì)算機(jī)可讀介質(zhì)的例子包括(但不限于)CD-ROM、閃速驅(qū)動(dòng)器、RAM芯片、硬盤驅(qū)動(dòng)器、EPROM等。計(jì)算機(jī)可讀介質(zhì)不包括載波和無線地或者通過有線連接傳送的電子信號(hào)。
[0186]在本說明書中,術(shù)語“軟件”意味包括可被讀入內(nèi)存中,以便由處理器處理的駐留在只讀存儲(chǔ)器中的固件,或者保存在磁存儲(chǔ)器中的應(yīng)用程序。另外,在一些實(shí)施例中,在仍然是不同的軟件發(fā)明的時(shí)候,多個(gè)軟件發(fā)明可被實(shí)現(xiàn)成更大的程序的子部分。在一些實(shí)施例中,多個(gè)軟件發(fā)明也可被實(shí)現(xiàn)成獨(dú)立的程序。最后,一起地實(shí)現(xiàn)這里說明的軟件發(fā)明的獨(dú)立程序的任意組合在本發(fā)明的范圍之內(nèi)。在一些實(shí)施例中,當(dāng)被安裝以在一個(gè)或多個(gè)電子系統(tǒng)上工作時(shí),軟件程序定義執(zhí)行和實(shí)現(xiàn)軟件程序的操作的一種或多種具體的機(jī)器實(shí)現(xiàn)。
[0187]圖14概念地圖解說明可實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的電子系統(tǒng)1400。電子系統(tǒng)1400可用于執(zhí)行上面說明的控制、虛擬化或操作系統(tǒng)應(yīng)用程序任意之一。電子系統(tǒng)1400可以是計(jì)算機(jī)(例如,桌上型計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、大型機(jī)、刀片計(jì)算機(jī)等)、電話機(jī)、PDA或任意其它種類的電子設(shè)備。這樣的電子系統(tǒng)包括各種計(jì)算機(jī)可讀介質(zhì),和用于各種其它種類的計(jì)算機(jī)可讀介質(zhì)的接口。電子系統(tǒng)1400包括總線1405、處理器1410、系統(tǒng)內(nèi)存1425、只讀存儲(chǔ)器1430、永久性存儲(chǔ)設(shè)備1435、輸入設(shè)備1440和輸出設(shè)備1445。
[0188]總線1405總體代表通信地連接電子系統(tǒng)1400的眾多內(nèi)部設(shè)備的所有系統(tǒng)總線、外圍總線和芯片集總線。例如,總線1405通信地連接處理器1410和只讀存儲(chǔ)器1430、系統(tǒng)內(nèi)存1425和永久性存儲(chǔ)設(shè)備1435。
[0189]從這些各個(gè)存儲(chǔ)單元,處理器1410取回待執(zhí)行的指令和待處理的數(shù)據(jù),以便執(zhí)行本發(fā)明的過程。在不同的實(shí)施例中,處理器可以是單一處理器或者多核處理器。
[0190]只讀存儲(chǔ)器(ROM) 1430保存處理器1410和電子系統(tǒng)的其它模塊需要的靜態(tài)數(shù)據(jù)和指令。另一方面,永久性存儲(chǔ)設(shè)備1435是讀-寫存儲(chǔ)設(shè)備。該設(shè)備是即使光電子系統(tǒng)1400關(guān)閉時(shí),也保存指令和數(shù)據(jù)的非易失性存儲(chǔ)器。本發(fā)明的一些實(shí)施例利用大容量存儲(chǔ)設(shè)備(比如磁盤或光盤及其對應(yīng)的盤驅(qū)動(dòng)器),作為永久性存儲(chǔ)設(shè)備1435。
[0191]其它實(shí)施例利用可拆卸的存儲(chǔ)設(shè)備(比如軟盤、閃速驅(qū)動(dòng)器等),作為永久性存儲(chǔ)設(shè)備。類似于永久性存儲(chǔ)設(shè)備1435,系統(tǒng)內(nèi)存1125是讀-寫存儲(chǔ)設(shè)備。然而,不同于存儲(chǔ)設(shè)備1435,系統(tǒng)存儲(chǔ)器是易失性讀-寫存儲(chǔ)器,比如隨機(jī)存取存儲(chǔ)器。系統(tǒng)內(nèi)存保存在運(yùn)行時(shí),處理器需要的一些指令和數(shù)據(jù)。在一些實(shí)施例中,本發(fā)明的過程被保存在系統(tǒng)內(nèi)存1425、永久性存儲(chǔ)設(shè)備1435和/或只讀存儲(chǔ)器1430中。從這些各個(gè)存儲(chǔ)單元,處理器1410取回待執(zhí)行的指令和待處理的數(shù)據(jù),以便執(zhí)行一些實(shí)施例的過程。
[0192]總線1405還連接到輸入和輸出設(shè)備1440和1445。輸入設(shè)備使用戶能夠向電子系統(tǒng)傳達(dá)信息和選擇命令。輸入設(shè)備1440包括字母數(shù)字鍵盤和指示設(shè)備(也稱為“光標(biāo)控制設(shè)備”)。輸出設(shè)備1445顯示由電子系統(tǒng)生成的圖像。輸出設(shè)備包括打印機(jī)和顯示設(shè)備,t匕如陰極射線管(CRT)或液晶顯示器(LCD)。一些實(shí)施例包括同時(shí)起輸入設(shè)備和輸出設(shè)備作用的設(shè)備,比如觸摸屏。
[0193]最后,如圖14中所示,總線1405還通過網(wǎng)絡(luò)適配器(未示出),把電子系統(tǒng)1400耦接到網(wǎng)絡(luò)1465。按照這種方式,計(jì)算機(jī)可以是計(jì)算機(jī)網(wǎng)絡(luò)(比如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)或企業(yè)內(nèi)部網(wǎng)),或者網(wǎng)絡(luò)之網(wǎng)(比如因特網(wǎng))的一部分。電子系統(tǒng)1400的任意或全部組件可以和本發(fā)明一起使用。
[0194]一些實(shí)施例包括電子組件,比如微處理器,把計(jì)算機(jī)程序指令保存在機(jī)器可讀或計(jì)算機(jī)中讀介質(zhì)(另一方面,稱為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、機(jī)器可讀介質(zhì)或機(jī)器可讀存儲(chǔ)介質(zhì))中的存儲(chǔ)器和內(nèi)存。所述計(jì)算機(jī)可讀介質(zhì)的一些例子包括RAM、ROM、只讀光盤(CD-ROM)、可記錄光盤(CD-R)、可重寫光盤(CD-RW)、只讀數(shù)字通用光盤(例如,DVD-ROM、雙層DVD-ROM)、各種可記錄/可重寫DVD (例如,DVD-RAM、DVD-RW、DVD+RW等)、閃存(例如,
SD卡、小型SD卡、微型SD卡等)、磁性和/或固態(tài)硬盤驅(qū)動(dòng)器、只讀和可記錄藍(lán)光?光盤、超高密度光盤、任何其它光或磁介質(zhì)、以及軟盤。計(jì)算機(jī)可讀介質(zhì)可保存可由至少一個(gè)處理單元執(zhí)行,并且包含用于實(shí)現(xiàn)各種操作的多個(gè)指令集的計(jì)算機(jī)程序。計(jì)算機(jī)程序或計(jì)算機(jī)代碼的例子包括比如由編譯器產(chǎn)生的機(jī)器代碼,和包括通過利用解釋器,由計(jì)算機(jī)、電子組件或微處理器執(zhí)行的高級代碼的文件。
[0195]盡管上面的討論主要涉及執(zhí)行軟件的微處理器或多核處理器,不過一些實(shí)施例由一個(gè)或多個(gè)集成電路,比如專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)。在一些實(shí)施例中,所述集成電路執(zhí)行保存在電路本身上的指令。
[0196]本說明書中使用的術(shù)語“計(jì)算機(jī)”、“服務(wù)器”、“處理器”和“存儲(chǔ)器”都指的是電子或其它技術(shù)設(shè)備。這些術(shù)語把人或人群排除在外。對本說明書來說,術(shù)語“顯示”意味電子設(shè)備上的顯示。本說明書中使用的術(shù)語“計(jì)算機(jī)可讀介質(zhì)”和“機(jī)器可讀介質(zhì)”完全局限于以計(jì)算機(jī)可讀的形式,保存信息的有形物理物體。這些術(shù)語排除任何無線信號(hào)、有線下載信號(hào)和任何其它短暫的信號(hào)。
[0197]盡管關(guān)于眾多的具體細(xì)節(jié)說明了本發(fā)明,不過,本領(lǐng)域的普通技術(shù)人員會(huì)認(rèn)識(shí)到,可以用其它具體形式體現(xiàn)本發(fā)明,而不脫離本發(fā)明的精神。另外,許多附圖(包括圖9、6、
10、7、11和13)概念地圖解說明了各種過程。這些過程的具體操作可以不按照表示和說明的嚴(yán)格順序進(jìn)行??梢圆挥眠B續(xù)的一系列操作進(jìn)行所述具體操作,在不同的實(shí)施例中,可以進(jìn)行不同的具體操作。此外,過程可以利用幾個(gè)子過程來實(shí)現(xiàn),或者被實(shí)現(xiàn)成更大的宏過程的一部分。
【權(quán)利要求】
1.一種用于管理網(wǎng)絡(luò)的控制器的配置托管轉(zhuǎn)發(fā)元件的方法,所述網(wǎng)絡(luò)包含在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)的多個(gè)托管轉(zhuǎn)發(fā)元件,所述方法包括: 根據(jù)在所述多個(gè)托管轉(zhuǎn)發(fā)元件中實(shí)現(xiàn)的邏輯網(wǎng)絡(luò)的當(dāng)前網(wǎng)絡(luò)策略,產(chǎn)生用于定義托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的第一組流表項(xiàng); 把第一組流表項(xiàng)發(fā)送給托管轉(zhuǎn)發(fā)元件,以便使托管轉(zhuǎn)發(fā)元件根據(jù)當(dāng)前網(wǎng)絡(luò)策略轉(zhuǎn)發(fā)該托管轉(zhuǎn)發(fā)元件直接從終端機(jī)器接收的數(shù)據(jù); 根據(jù)邏輯網(wǎng)絡(luò)的新的網(wǎng)絡(luò)策略,產(chǎn)生用于修改托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的第二組流表項(xiàng);和 把第二組流表項(xiàng)發(fā)送給托管轉(zhuǎn)發(fā)元件,以便使該托管轉(zhuǎn)發(fā)元件根據(jù)新的網(wǎng)絡(luò)策略轉(zhuǎn)發(fā)數(shù)據(jù), 其中托管轉(zhuǎn)發(fā)元件通過作出識(shí)別邏輯轉(zhuǎn)發(fā)元件的邏輯出口端口被映射到的物理端口的一組邏輯轉(zhuǎn)發(fā)決策,轉(zhuǎn)發(fā)數(shù)據(jù),其中邏輯轉(zhuǎn)發(fā)元件是在所述多個(gè)托管轉(zhuǎn)發(fā)元件中實(shí)現(xiàn)的。
2.按照權(quán)利要求1所述的方法,其中其它的托管轉(zhuǎn)發(fā)元件不關(guān)于數(shù)據(jù)作出任何邏輯轉(zhuǎn)發(fā)決策。
3.按照權(quán)利要求1所述的方法,其中當(dāng)托管轉(zhuǎn)發(fā)元件完全收到所述第二組流表項(xiàng)時(shí),托管轉(zhuǎn)發(fā)元件開始利用所述第二組流表項(xiàng)。
4.按照權(quán)利要求1所述的方法,還包括向托管轉(zhuǎn)發(fā)元件發(fā)送命令,以便托管轉(zhuǎn)發(fā)元件開始利用所述第二組流表項(xiàng)。
5.按照權(quán)利要求1所述的方法,其中當(dāng)在收到所述第二組流表項(xiàng)之后,過去一段時(shí)間時(shí),托管轉(zhuǎn)發(fā)元件從該托管轉(zhuǎn)發(fā)元件中除去所述第一組流表項(xiàng)。
6.一種用于管理網(wǎng)絡(luò)的控制器的配置托管轉(zhuǎn)發(fā)元件的方法,所述網(wǎng)絡(luò)包含在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)的多個(gè)托管轉(zhuǎn)發(fā)元件,所述方法包括: 生成第一組配置數(shù)據(jù),用于配置作為第一跳轉(zhuǎn)發(fā)元件的托管轉(zhuǎn)發(fā)元件,以便(i)直接從作為分組的源的終端機(jī)器接收分組,和α ?)把所述分組轉(zhuǎn)發(fā)給作為所述分組的目的地的終端機(jī)器; 生成第二組配置數(shù)據(jù),用于配置作為非第一跳轉(zhuǎn)發(fā)元件的一組托管轉(zhuǎn)發(fā)元件,以便α)不直接從源終端機(jī)器接收所述分組,和α ?)把所述分組轉(zhuǎn)發(fā)給所述目的地終端機(jī)器;和在把所述第一組配置數(shù)據(jù)發(fā)送給所述托管轉(zhuǎn)發(fā)元件之前,把所述第二組配置數(shù)據(jù)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件。
7.按照權(quán)利要求6所述的方法,還包括: 在把所述第二組配置數(shù)據(jù)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件之前: 生成第三組配置數(shù)據(jù),用于(i)配置作為第一跳轉(zhuǎn)發(fā)元件的所述托管轉(zhuǎn)發(fā)元件,和(?)配置所述托管轉(zhuǎn)發(fā)元件,以便把版本信息附加在作為第一跳轉(zhuǎn)發(fā)元件的托管轉(zhuǎn)發(fā)元件接收和轉(zhuǎn)發(fā)的特定分組上; 生成第四組配置數(shù)據(jù),用于配置作為非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件; 把所述第三組配置數(shù)據(jù)發(fā)送給所述托管轉(zhuǎn)發(fā)元件;和 把所述第四組配置數(shù)據(jù)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件, 其中在從控制器收到所述第二組配置數(shù)據(jù)之后,所述一組托管轉(zhuǎn)發(fā)元件利用版本信息選擇使用所述第四組配置數(shù)據(jù),而不是所述第二組配置數(shù)據(jù),來轉(zhuǎn)發(fā)作為非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收和轉(zhuǎn)發(fā)的所述特定分組。
8.按照權(quán)利要求7所述的方法,其中所述版本信息具有單個(gè)二進(jìn)制位的大小。
9.按照權(quán)利要求7所述的方法,還包括: 把所述第一組流表項(xiàng)發(fā)送給托管轉(zhuǎn)發(fā)元件, 其中所述第一組流表項(xiàng)進(jìn)一步用于配置托管轉(zhuǎn)發(fā)元件,以便把不同的版本信息附加到作為第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收和轉(zhuǎn)發(fā)的分組上, 其中在收到所述第二組流表項(xiàng)之后,所述一組托管轉(zhuǎn)發(fā)元件利用所述不同的版本信息選擇使用所述第二組配置數(shù)據(jù),而不是第四組配置數(shù)據(jù),來轉(zhuǎn)發(fā)作為非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收的分組。
10.按照權(quán)利要求7所述的方法,還包括配置托管轉(zhuǎn)發(fā)元件,以便在收到所述第一組配置數(shù)據(jù)之后,過去一段時(shí)間之后,除去所述第三組配置數(shù)據(jù)。
11.按照權(quán)利要求7所述的方法,還包括向托管轉(zhuǎn)發(fā)元件發(fā)送命令,以便在收到所述第一組配置數(shù)據(jù)之后,除去所述第三組配置數(shù)據(jù)。
12.按照權(quán)利要求6所述的方法,其中托管轉(zhuǎn)發(fā)元件在主機(jī)中工作,其中源終端機(jī)器在相同的主機(jī)內(nèi)工作。
13.按照權(quán)利要求6所述的方法,其中所述第二組配置數(shù)據(jù)進(jìn)一步用于配置所述一組托管轉(zhuǎn)發(fā)元件中作為最后一跳轉(zhuǎn)發(fā)元件的特定托管轉(zhuǎn)發(fā)元件,所述最后一跳轉(zhuǎn)發(fā)元件用于把作為非第一跳轉(zhuǎn)發(fā)元件的所述特定轉(zhuǎn)發(fā)元件接收的分組直接發(fā)送給目的地終端機(jī)器。
14.按照權(quán)利要求13所述的方法,其中所述特定托管轉(zhuǎn)發(fā)元件在主機(jī)中工作,其中所述目的地終端機(jī)器在相同主機(jī)內(nèi)工作。
15.一種用于管理網(wǎng)絡(luò)的控制器的配置一組托管轉(zhuǎn)發(fā)元件的方法,所述網(wǎng)絡(luò)包含在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)的托管轉(zhuǎn)發(fā)元件,所述方法包括: 生成(i)第一組流表項(xiàng),用于配置作為轉(zhuǎn)發(fā)直接從一組終端機(jī)器接收的數(shù)據(jù)的第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件,和(ii)第二組流表項(xiàng),用于配置作為轉(zhuǎn)發(fā)不接收自所述一組終端機(jī)器的數(shù)據(jù)的非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件;和 在把所述第一組流表項(xiàng)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件之前,把所述第二組流表項(xiàng)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件。
16.按照權(quán)利要求15所述的方法,還包括: 在發(fā)送所述第二組流表項(xiàng)之前: 生成第三組流表項(xiàng),用于(i)配置作為第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件,和(?)配置所述一組托管轉(zhuǎn)發(fā)元件,以把版本信息附加到作為第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收和轉(zhuǎn)發(fā)的數(shù)據(jù)上; 生成第四組流表項(xiàng),用于配置作為非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件; 把第三和第四組流表項(xiàng)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件, 其中在從控制器收到所述第二組流表項(xiàng)之后,所述一組托管轉(zhuǎn)發(fā)元件利用版本信息選擇使用第四組流表項(xiàng),而不是第二組流表項(xiàng),來轉(zhuǎn)發(fā)作為非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收的數(shù)據(jù)。
17.按照權(quán)利要求16所述的方法,其中所述版本信息具有單個(gè)二進(jìn)制位的大小。
18.按照權(quán)利要求16所述的方法,還包括: 把所述第一組流表項(xiàng)發(fā)送給所述一組托管轉(zhuǎn)發(fā)元件, 其中所述第一組流表項(xiàng)進(jìn)一步用于配置所述一組托管轉(zhuǎn)發(fā)元件,以把不同的版本信息附加到作為第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收和轉(zhuǎn)發(fā)的數(shù)據(jù)上, 其中在收到所述第二組流表項(xiàng)之后,所述一組托管轉(zhuǎn)發(fā)元件利用所述不同的版本信息選擇使用第二組流表項(xiàng),而不是第四組流表項(xiàng),來轉(zhuǎn)發(fā)作為非第一跳轉(zhuǎn)發(fā)元件的所述一組托管轉(zhuǎn)發(fā)元件接收的數(shù)據(jù)。
19.按照權(quán)利要求16所述的方法,還包括配置所述一組托管轉(zhuǎn)發(fā)元件,以便在收到所述第一組流表項(xiàng)之后,過去一段時(shí)間之后,除去所述第三和第四組流表項(xiàng)。
20.按照權(quán)利要求16所述的方法,還包括向所述一組托管轉(zhuǎn)發(fā)元件發(fā)送命令,以便在收到所述第一組流表項(xiàng)之后,除去所述第三和第四組流表項(xiàng)。
21.一種用于在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)的托管轉(zhuǎn)發(fā)元件的數(shù)據(jù)轉(zhuǎn)發(fā)方法,所述方法包括: 根據(jù)定義所述托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為的舊的轉(zhuǎn)發(fā)狀態(tài)信息,轉(zhuǎn)發(fā)數(shù)據(jù),所述舊的轉(zhuǎn)發(fā)狀態(tài)信息是通過在所述托管轉(zhuǎn)發(fā)元件和控制器之間建立的多個(gè)通信通道接收的,所述控制器向所述托管轉(zhuǎn)發(fā)元件發(fā)送轉(zhuǎn)發(fā)狀態(tài)信息; 通過與控制器建立的通信通道,從控制器接收新的轉(zhuǎn)發(fā)狀態(tài)信息,所述新的轉(zhuǎn)發(fā)狀態(tài)信息用于更改托管轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)行為,所述新的轉(zhuǎn)發(fā)狀態(tài)是通過通信通道、作為多組事務(wù)輸入流表項(xiàng)被接收的,一組事務(wù)輸入流表項(xiàng)是通過特定的通道接收的,其它各組事務(wù)輸入流表項(xiàng)是通過所述多個(gè)通道中的其它通道接收的;和 只有在通過所述特定通道完全收到所述一組事務(wù)輸入流表項(xiàng)之后,才利用新的轉(zhuǎn)發(fā)狀態(tài)信息轉(zhuǎn)發(fā)數(shù)據(jù)。
22.按照權(quán)利要求21所述的方法,其中每組事務(wù)輸入流表項(xiàng)包括當(dāng)被托管轉(zhuǎn)發(fā)元件收到時(shí),指示該組事務(wù)輸入流表項(xiàng)的所有事務(wù)輸入流表項(xiàng)都已在所述托管轉(zhuǎn)發(fā)元件被接收的指示符。
23.按照權(quán)利要求21所述的方法,其中托管轉(zhuǎn)發(fā)元件在主機(jī)中工作,所述方法還包括: 從網(wǎng)絡(luò)接收數(shù)據(jù),所述數(shù)據(jù)起源于連接到所述網(wǎng)絡(luò)的源機(jī)器;和 把數(shù)據(jù)轉(zhuǎn)發(fā)給在相同主機(jī)中工作的終端機(jī)器。
24.按照權(quán)利要求21所述的方法,其中托管轉(zhuǎn)發(fā)元件在主機(jī)中工作,所述方法還包括: 從在相同主機(jī)中工作的終端機(jī)器接收數(shù)據(jù);和 朝著數(shù)據(jù)的連接到網(wǎng)絡(luò)的目的地,把數(shù)據(jù)轉(zhuǎn)發(fā)給所述網(wǎng)絡(luò)。
25.一種用于把流表項(xiàng)推送給托管轉(zhuǎn)發(fā)元件、以便配置托管轉(zhuǎn)發(fā)元件在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)數(shù)據(jù)的第一網(wǎng)絡(luò)控制器的流表項(xiàng)推送方法,所述方法包括: 從生成流表項(xiàng)的第二控制器接收一組流表項(xiàng); 處理接收的一組流表項(xiàng); 根據(jù)特定標(biāo)準(zhǔn),判定所述一組流表項(xiàng)是否應(yīng)被立即推送給托管轉(zhuǎn)發(fā)元件; 當(dāng)判定所述一組流表項(xiàng)應(yīng)立即被推送給托管轉(zhuǎn)發(fā)元件時(shí),一旦所述一組流表項(xiàng)中的每個(gè)流表項(xiàng)被處理,就把該流表項(xiàng)推送給托管轉(zhuǎn)發(fā)元件;和 當(dāng)判定所述一組流表項(xiàng)不必立即被推送給托管轉(zhuǎn)發(fā)元件時(shí),只有在處理了所述一組流表項(xiàng)的所有流表項(xiàng)之后,才把所述一組流表項(xiàng)推送給托管轉(zhuǎn)發(fā)元件。
26.按照權(quán)利要求25所述的方法,還包括: 當(dāng)判定所述一組流表項(xiàng)應(yīng)立即被推送給托管轉(zhuǎn)發(fā)元件時(shí),接收響應(yīng)于收到托管轉(zhuǎn)發(fā)元件從第一網(wǎng)絡(luò)控制器接收的流表項(xiàng)而由所述托管轉(zhuǎn)發(fā)元件計(jì)算的流表項(xiàng);和 根據(jù)托管轉(zhuǎn)發(fā)元件計(jì)算的所述一組流表項(xiàng),生成一組流表項(xiàng),以便把生成的流表項(xiàng)發(fā)送給托管轉(zhuǎn)發(fā)元件。
27.按照權(quán)利要求25所述的方法,其中所述一組流表項(xiàng)包括當(dāng)被托管轉(zhuǎn)發(fā)元件收到時(shí),指示所述一組流表項(xiàng)中的所有流表項(xiàng)都已被該托管轉(zhuǎn)發(fā)元件接收的指示符。
【文檔編號(hào)】H04L12/751GK104170334SQ201380003841
【公開日】2014年11月26日 申請日期:2013年4月18日 優(yōu)先權(quán)日:2012年4月18日
【發(fā)明者】T·考珀內(nèi)恩, A·帕德馬納班 申請人:Nicira股份有限公司