相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)是于2014年12月11日提交的、標(biāo)題為“multi-layeracceleratednetworkarchitecture”的美國(guó)臨時(shí)申請(qǐng)no.62/090,627的非臨時(shí)申請(qǐng),并且依據(jù)35u.s.c.119(e)要求該臨時(shí)申請(qǐng)的權(quán)益和優(yōu)先權(quán),所述臨時(shí)申請(qǐng)的全部?jī)?nèi)容通過引用合并在此,用于所有目的。
背景技術(shù):
本公開涉及數(shù)據(jù)轉(zhuǎn)發(fā),并且更具體地,涉及多層分布式路由器體系結(jié)構(gòu)。
路由器是被配置為在網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)(例如,數(shù)據(jù)報(bào)文)以便于將數(shù)據(jù)從它的源遞送到它的預(yù)期目的地的專用網(wǎng)絡(luò)設(shè)備。路由器被配置為確定通過互聯(lián)網(wǎng)絡(luò)拓?fù)涞淖顑?yōu)路由或者數(shù)據(jù)路徑,并且使用這些最優(yōu)路徑傳輸數(shù)據(jù)報(bào)文。路由器還提供諸如防火墻、服務(wù)質(zhì)量(qos)等的各種其他服務(wù)。
常規(guī)路由器典型地包括全部封裝(house)在單個(gè)機(jī)盒或者機(jī)箱內(nèi)的控制面子系統(tǒng)以及一個(gè)或多個(gè)數(shù)據(jù)面。在常規(guī)系統(tǒng)中可以實(shí)現(xiàn)為線卡的數(shù)據(jù)面被配置為經(jīng)由數(shù)據(jù)面的一個(gè)或多個(gè)端口接收并且轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。轉(zhuǎn)發(fā)基于由數(shù)據(jù)面存儲(chǔ)的轉(zhuǎn)發(fā)信息而執(zhí)行。數(shù)據(jù)面用來轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā)信息典型地由路由器的控制面子系統(tǒng)編程,該控制面子系統(tǒng)可以包括一個(gè)或多個(gè)管理卡??刂泼孀酉到y(tǒng)被配置為控制由路由器執(zhí)行的與聯(lián)網(wǎng)有關(guān)的功能,包括,例如,維護(hù)路由信息(例如,路由信息表)、對(duì)基于路由信息而轉(zhuǎn)發(fā)信息的數(shù)據(jù)轉(zhuǎn)發(fā)面進(jìn)行編程、處置各種聯(lián)網(wǎng)控制協(xié)議、處置在控制面處終止的報(bào)文(例如,控制報(bào)文和/或數(shù)據(jù)報(bào)文)的處理、處理訪問控制列表(acl)、服務(wù)質(zhì)量(qos)、管理功能等。
如先前所指示的,在常規(guī)路由器中,路由器的控制面子系統(tǒng)以及由控制面子系統(tǒng)控制的數(shù)據(jù)面全部都物理地共同位于路由器的相同物理網(wǎng)絡(luò)設(shè)備機(jī)盒或者機(jī)箱內(nèi)。因此,在路由器的控制面子系統(tǒng)與一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)之間存在靜態(tài)關(guān)系。這使得在可能包括成千上萬個(gè)這種路由器的大型網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))中對(duì)這種路由器進(jìn)行編程是復(fù)雜并且不靈活的。當(dāng)不得不對(duì)這種網(wǎng)絡(luò)做出改變(例如,數(shù)據(jù)路徑的添加或者重新配置、網(wǎng)絡(luò)設(shè)備的添加或者移除)時(shí),不得不對(duì)受改變所影響的每個(gè)個(gè)體路由器機(jī)盒進(jìn)行單獨(dú)地編程或者重新編程。這種以路由器為中心的管理要求使得這種網(wǎng)絡(luò)的管理非常復(fù)雜并且耗時(shí)。因此,使用常規(guī)路由器的網(wǎng)絡(luò)缺乏現(xiàn)今(以及未來)的網(wǎng)絡(luò)應(yīng)用(諸如云計(jì)算、移動(dòng)計(jì)算、實(shí)時(shí)和按需視頻流量等)所期望的靈活性和動(dòng)態(tài)可配置性。
技術(shù)實(shí)現(xiàn)要素:
本公開涉及分布式聯(lián)網(wǎng),并且更具體而言涉及分布式多層網(wǎng)絡(luò)路由體系結(jié)構(gòu)。
在某些實(shí)施例中,提供了一種多層分布式路由器體系結(jié)構(gòu)。路由器的多個(gè)層可以包含包括控制器的控制器層、包括一個(gè)或多個(gè)控制面子系統(tǒng)的控制面層、以及包括一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)的數(shù)據(jù)面層??刂破骺梢择詈系揭粋€(gè)或多個(gè)控制面子系統(tǒng)??刂泼孀酉到y(tǒng)又可以耦合到一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng),數(shù)據(jù)面子系統(tǒng)可以包括一個(gè)或多個(gè)軟件數(shù)據(jù)面子系統(tǒng)和/或硬件數(shù)據(jù)面子系統(tǒng)。
在某些實(shí)施例中,分布式路由器的各種子系統(tǒng)的位置可以分布在網(wǎng)絡(luò)中的各種設(shè)備之間。例如,控制器可以位于第一設(shè)備上,而由控制器控制的控制面子系統(tǒng)可以位于與第一設(shè)備不同的物理設(shè)備上。例如,第一控制面子系統(tǒng)可以位于第二設(shè)備上并且第二控制面子系統(tǒng)可以在第三設(shè)備上執(zhí)行,其中第一設(shè)備、第二設(shè)備和第三設(shè)備是不同的設(shè)備并且可以位于不同的地理位置處并且可以經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)彼此耦合。由控制面子系統(tǒng)控制的數(shù)據(jù)面子系統(tǒng)也可以位于與控制這些數(shù)據(jù)面子系統(tǒng)的控制面子系統(tǒng)所位于的設(shè)備不同的物理設(shè)備上。在上面的示例中,其中第一控制面子系統(tǒng)位于第二設(shè)備上,由第一控制面子系統(tǒng)控制的第一數(shù)據(jù)面子系統(tǒng)可以位于第四設(shè)備上,并且也由第一控制面子系統(tǒng)控制的第二數(shù)據(jù)面子系統(tǒng)可以位于第五設(shè)備上,其中第二設(shè)備、第四設(shè)備和第五設(shè)備是不同的設(shè)備并且可以位于不同的地理位置處并且經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)彼此耦合。
分布式路由器的不同層位于不同物理設(shè)備上的能力使得控制器與控制面子系統(tǒng)之間的關(guān)系以及控制面子系統(tǒng)與數(shù)據(jù)面子系統(tǒng)之間的關(guān)系能夠是動(dòng)態(tài)的。例如,關(guān)于控制器和控制面子系統(tǒng),可以相對(duì)控制器遠(yuǎn)程地動(dòng)態(tài)添加或者移除控制面子系統(tǒng),并且控制器能夠在具有動(dòng)態(tài)改變的情況下操作。由控制器控制的控制面子系統(tǒng)的位置可以邏輯地和物理地分散在不同的物理設(shè)備中。關(guān)于控制面子系統(tǒng)和數(shù)據(jù)面子系統(tǒng),數(shù)據(jù)面子系統(tǒng)可以動(dòng)態(tài)地添加或者移除。例如,提供增強(qiáng)功能性和服務(wù)的軟件數(shù)據(jù)面可以動(dòng)態(tài)地添加到分布式路由器。由控制面子系統(tǒng)控制的數(shù)據(jù)面子系統(tǒng)的位置可以邏輯地和物理地分散在不同的物理設(shè)備中。
例如,在一個(gè)實(shí)施例中,分布式路由器可以包括由第一設(shè)備執(zhí)行的控制器以及由控制器控制的多個(gè)控制面子系統(tǒng)。多個(gè)控制面子系統(tǒng)可以包括由與第一設(shè)備不同的第二設(shè)備執(zhí)行的第一控制面子系統(tǒng)。分布式路由器還可以包括由第一控制面子系統(tǒng)控制的多個(gè)數(shù)據(jù)面子系統(tǒng)。每個(gè)這種數(shù)據(jù)面子系統(tǒng)可以被配置為轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。多個(gè)數(shù)據(jù)面子系統(tǒng)可以包括由第三設(shè)備執(zhí)行的軟件數(shù)據(jù)面子系統(tǒng)以及位于第四設(shè)備上的硬件數(shù)據(jù)面子系統(tǒng)。軟件數(shù)據(jù)面子系統(tǒng)可以被配置為使用第一轉(zhuǎn)發(fā)信息轉(zhuǎn)發(fā)由軟件數(shù)據(jù)面子系統(tǒng)接收的數(shù)據(jù)報(bào)文,并且硬件數(shù)據(jù)面子系統(tǒng)可以被配置為使用第二轉(zhuǎn)發(fā)信息轉(zhuǎn)發(fā)由硬件數(shù)據(jù)面子系統(tǒng)接收的數(shù)據(jù)報(bào)文。在一個(gè)實(shí)施例中,第一控制面子系統(tǒng)可以從控制器接收與網(wǎng)絡(luò)策略有關(guān)的指令。第一控制面子系統(tǒng)然后可以確定將要執(zhí)行的用于實(shí)現(xiàn)指令的動(dòng)作,并且將動(dòng)作傳送到軟件數(shù)據(jù)面子系統(tǒng)。軟件數(shù)據(jù)面子系統(tǒng)然后可以執(zhí)行該動(dòng)作,這可以導(dǎo)致第一轉(zhuǎn)發(fā)信息被更新和/或關(guān)于由軟件數(shù)據(jù)面子系統(tǒng)提供的一個(gè)或多個(gè)轉(zhuǎn)發(fā)服務(wù)(例如,防火墻、qos、nat等)的其他信息被更新。第一控制面子系統(tǒng)也可以將該動(dòng)作傳送到硬件數(shù)據(jù)面子系統(tǒng)。硬件數(shù)據(jù)面子系統(tǒng)然后可以執(zhí)行處理,從而使得第二轉(zhuǎn)發(fā)信息和/或關(guān)于由硬件數(shù)據(jù)面子系統(tǒng)提供的一個(gè)或多個(gè)轉(zhuǎn)發(fā)服務(wù)的信息被更新。
在某些實(shí)施例中,軟件數(shù)據(jù)面子系統(tǒng)可以被配置為使用軟件數(shù)據(jù)面子系統(tǒng)可訪問的第一轉(zhuǎn)發(fā)信息和/或通過應(yīng)用由軟件數(shù)據(jù)面子系統(tǒng)提供的各種轉(zhuǎn)發(fā)服務(wù)來轉(zhuǎn)發(fā)報(bào)文。例如,當(dāng)接收到數(shù)據(jù)報(bào)文時(shí),軟件數(shù)據(jù)面子系統(tǒng)可以執(zhí)行與用于該數(shù)據(jù)報(bào)文的第一服務(wù)有關(guān)的處理,基于第一轉(zhuǎn)發(fā)信息確定用于該數(shù)據(jù)報(bào)文的輸出端口,以及使用所確定的輸出端口轉(zhuǎn)發(fā)該數(shù)據(jù)報(bào)文。
在某些實(shí)施例中,硬件數(shù)據(jù)面子系統(tǒng)可以被配置為使用硬件數(shù)據(jù)面子系統(tǒng)可訪問的第二轉(zhuǎn)發(fā)信息和/或通過應(yīng)用由硬件數(shù)據(jù)面子系統(tǒng)提供的各種轉(zhuǎn)發(fā)服務(wù)來轉(zhuǎn)發(fā)報(bào)文。當(dāng)接收到數(shù)據(jù)報(bào)文時(shí),硬件數(shù)據(jù)面子系統(tǒng)可以執(zhí)行與用于該數(shù)據(jù)報(bào)文的第二服務(wù)有關(guān)的處理,基于第二轉(zhuǎn)發(fā)信息確定用于該數(shù)據(jù)報(bào)文的輸出端口,以及使用所確定的輸出端口轉(zhuǎn)發(fā)該數(shù)據(jù)報(bào)文。由軟件數(shù)據(jù)面子系統(tǒng)提供的轉(zhuǎn)發(fā)服務(wù)可以與由硬件數(shù)據(jù)面子系統(tǒng)提供的轉(zhuǎn)發(fā)服務(wù)相同或者不同。
在某些實(shí)施例中,分布式路由器系統(tǒng)可以包括位于第一設(shè)備上的控制面子系統(tǒng)以及被配置為轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的多個(gè)數(shù)據(jù)面子系統(tǒng)。多個(gè)數(shù)據(jù)面子系統(tǒng)可以包括第一數(shù)據(jù)面子系統(tǒng)和第二數(shù)據(jù)面子系統(tǒng),其中第一數(shù)據(jù)面子系統(tǒng)位于第二設(shè)備上并且第二數(shù)據(jù)面子系統(tǒng)位于第三設(shè)備上。在一個(gè)場(chǎng)景中,控制面子系統(tǒng)可以接收指令并且然后基于該指令確定動(dòng)作??刂泼孀酉到y(tǒng)可以將與該動(dòng)作對(duì)應(yīng)的消息傳送到第一數(shù)據(jù)面子系統(tǒng)和傳送到第二數(shù)據(jù)面子系統(tǒng)。第一數(shù)據(jù)面子系統(tǒng)和第二數(shù)據(jù)面子系統(tǒng)然后可以執(zhí)行與該動(dòng)作對(duì)應(yīng)的處理。
在某些實(shí)施例中,上面描述的第一數(shù)據(jù)面子系統(tǒng)可以是由第二設(shè)備執(zhí)行的軟件數(shù)據(jù)面子系統(tǒng),并且第二數(shù)據(jù)面子系統(tǒng)可以是位于第三設(shè)備上的硬件數(shù)據(jù)面子系統(tǒng),第二數(shù)據(jù)面子系統(tǒng)包括轉(zhuǎn)發(fā)硬件??刂泼孀酉到y(tǒng)可以使用控制信道與第一數(shù)據(jù)面子系統(tǒng)和第二數(shù)據(jù)面子系統(tǒng)通信??梢允褂孟嗤目刂菩诺?,而不管目標(biāo)數(shù)據(jù)面子系統(tǒng)是軟件數(shù)據(jù)面子系統(tǒng)還是硬件數(shù)據(jù)面子系統(tǒng)。轉(zhuǎn)發(fā)硬件可以是商用硅芯片、網(wǎng)絡(luò)接口卡(nic)、現(xiàn)場(chǎng)可編程門陣列(fpga)等。
在某些實(shí)施例中,可以為硬件數(shù)據(jù)面子系統(tǒng)上的轉(zhuǎn)發(fā)硬件提供硬件抽象層(hal)。hal被配置為接收由控制面子系統(tǒng)傳送的消息并且將該消息轉(zhuǎn)換成與轉(zhuǎn)發(fā)硬件對(duì)應(yīng)的一個(gè)或多個(gè)應(yīng)用編程接口(api)的集合。所確定的api的集合然后可以由轉(zhuǎn)發(fā)硬件執(zhí)行。
在某些實(shí)施例中,分布式路由器可以包括控制器,該控制器可以由與執(zhí)行控制面子系統(tǒng)和數(shù)據(jù)面子系統(tǒng)的設(shè)備不同的設(shè)備執(zhí)行。用戶可以使用控制器來配置網(wǎng)絡(luò)范圍的策略。與這種策略對(duì)應(yīng)的指令可以從控制器傳送到由該控制器控制的一個(gè)或多個(gè)控制面子系統(tǒng)。
數(shù)據(jù)面子系統(tǒng)(包括軟件數(shù)據(jù)面子系統(tǒng)和/或硬件數(shù)據(jù)面子系統(tǒng))表示分布式路由器的數(shù)據(jù)轉(zhuǎn)發(fā)層。在一個(gè)實(shí)施例中,數(shù)據(jù)面子系統(tǒng)可以經(jīng)由輸入端口接收數(shù)據(jù)報(bào)文。數(shù)據(jù)面子系統(tǒng)然后可以確定用于轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的輸出端口。可以基于對(duì)數(shù)據(jù)面子系統(tǒng)可用的轉(zhuǎn)發(fā)信息和/或與由數(shù)據(jù)面子系統(tǒng)提供的轉(zhuǎn)發(fā)服務(wù)有關(guān)的其他信息做出該確定。轉(zhuǎn)發(fā)信息和其他信息可以在接收數(shù)據(jù)報(bào)文之前已經(jīng)從控制該數(shù)據(jù)面子系統(tǒng)的控制面子系統(tǒng)接收。數(shù)據(jù)面子系統(tǒng)然后可以使用所確定的輸出端口將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到下一跳(hop)。
在另一個(gè)實(shí)施例中,當(dāng)經(jīng)由輸入端口接收到數(shù)據(jù)報(bào)文時(shí),數(shù)據(jù)面子系統(tǒng)可以將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到第二數(shù)據(jù)面子系統(tǒng),以執(zhí)行用于報(bào)文的第一服務(wù)。在第二數(shù)據(jù)面子系統(tǒng)已經(jīng)執(zhí)行第一服務(wù)之后,初始數(shù)據(jù)面子系統(tǒng)然后可以接收從第二數(shù)據(jù)面子系統(tǒng)返回的數(shù)據(jù)報(bào)文。初始數(shù)據(jù)面子系統(tǒng)然后可以確定用于轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的輸出端口,并且然后使用所確定的輸出端口轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。初始數(shù)據(jù)面子系統(tǒng)可以是軟件數(shù)據(jù)面子系統(tǒng)或者硬件數(shù)據(jù)面子系統(tǒng)。第一服務(wù)可以是諸如防火墻服務(wù)、qos、網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)、安全服務(wù)等的服務(wù)。
在又另一個(gè)實(shí)施例中,當(dāng)經(jīng)由輸入端口接收到數(shù)據(jù)報(bào)文時(shí),第一數(shù)據(jù)面子系統(tǒng)可以執(zhí)行與用于數(shù)據(jù)報(bào)文的第一服務(wù)對(duì)應(yīng)的處理,并且然后將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到第二數(shù)據(jù)面子系統(tǒng)。第二數(shù)據(jù)面子系統(tǒng)然后可以執(zhí)行與用于數(shù)據(jù)報(bào)文的第二服務(wù)對(duì)應(yīng)的處理,確定用于轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的輸出端口,并且然后使用所確定的輸出端口將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到下一跳。
在一個(gè)實(shí)施例中,提供了一種裝置,包括:用于在第一設(shè)備處接收與網(wǎng)絡(luò)策略有關(guān)的指令的構(gòu)件;用于在第一設(shè)備處基于指令確定動(dòng)作的構(gòu)件;用于將與動(dòng)作對(duì)應(yīng)的消息從第一設(shè)備傳送到與第一設(shè)備不同的第二設(shè)備的構(gòu)件,第二設(shè)備被配置為轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文;用于將與動(dòng)作對(duì)應(yīng)的消息從第一設(shè)備傳送到與第一設(shè)備不同的第三設(shè)備的構(gòu)件,第二設(shè)備被配置為轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文;用于響應(yīng)于從第一設(shè)備接收到消息而在第二設(shè)備處執(zhí)行處理的構(gòu)件;以及用于響應(yīng)于從第一設(shè)備接收到消息而在第三設(shè)備處執(zhí)行處理的構(gòu)件。
當(dāng)參考下面的說明書、權(quán)利要求書和附圖時(shí),上述內(nèi)容連同其他特征和實(shí)施例將變得更加明顯。
附圖說明
圖1是例示根據(jù)本發(fā)明的實(shí)施例的分布式多層路由器體系結(jié)構(gòu)100的簡(jiǎn)化框圖。
圖2描繪了根據(jù)本發(fā)明的實(shí)施例的具有硬件抽象層(hal)的示例硬件數(shù)據(jù)面子系統(tǒng)。
圖3是例示根據(jù)本發(fā)明的實(shí)施例的體系結(jié)構(gòu)的分布式性質(zhì)的分布式路由器的簡(jiǎn)化框圖。
圖4描繪了示出根據(jù)本發(fā)明的實(shí)施例的當(dāng)接收到數(shù)據(jù)報(bào)文時(shí)由分布式路由器執(zhí)行的處理的簡(jiǎn)化流程圖。
圖5例示了根據(jù)本發(fā)明的實(shí)施例的分布式路由器的示例。
圖6是根據(jù)一個(gè)或多個(gè)方面的可以被用來執(zhí)行分布式路由器的各種組件的計(jì)算系統(tǒng)或設(shè)備的簡(jiǎn)化框圖。
圖7描繪了示出根據(jù)本發(fā)明的實(shí)施例的被執(zhí)行以用于對(duì)分布式路由器進(jìn)行編程的處理的簡(jiǎn)化流程圖。
具體實(shí)施方式
在下面的描述中,為了解釋的目的,陳述了具體細(xì)節(jié)以便提供對(duì)本發(fā)明的實(shí)施例的透徹理解。然而,將清楚的是,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐各種實(shí)施例。圖和描述不旨在是限制性的。單詞“示例性”在本文中被用來表示“充當(dāng)示例、實(shí)例或者例示”。本文中描述為“示例性”的任何實(shí)施例或者設(shè)計(jì)不一定解釋為相對(duì)其他實(shí)施例或者設(shè)計(jì)是優(yōu)選的或者有利的。
本公開涉及數(shù)據(jù)轉(zhuǎn)發(fā),并且更具體而言涉及分布式多層網(wǎng)絡(luò)路由器體系結(jié)構(gòu)。圖1是例示根據(jù)本發(fā)明的實(shí)施例的分布式多層路由器體系結(jié)構(gòu)100的簡(jiǎn)化框圖。圖1中描繪的實(shí)施例僅是示例并且不旨在過度地限制本發(fā)明的要求保護(hù)的實(shí)施例。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到許多變型、替代和修改。例如,在一些其他實(shí)施例中,路由器100可以具有比圖1中所示出的更多或者更少的組件、可以組合兩個(gè)或多個(gè)組件、或者可以具有組件的不同配置或布置。
圖1中描繪的分布式路由器100包括多個(gè)層,這多個(gè)層包含包括控制器102的控制器層、包括一個(gè)或多個(gè)控制面子系統(tǒng)104-1、104-2的控制面層、以及包括一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)106的數(shù)據(jù)面層。數(shù)據(jù)面子系統(tǒng)106可以包括軟件數(shù)據(jù)面子系統(tǒng)108-1、108-2等以及硬件數(shù)據(jù)面子系統(tǒng)110-1、110-2等當(dāng)中的一個(gè)或多個(gè)。分布式路由器100被配置為提供(osi模型的)層2和層3路由功能性。分布式路由器100也可以提供開放系統(tǒng)互連(osi)模型的層4-層7處的功能性。
控制器102負(fù)責(zé)總體網(wǎng)絡(luò)配置和管理。在某些實(shí)施例中,控制器102可以被用來設(shè)置全局網(wǎng)絡(luò)范圍策略以及它的編排,這可以跨多個(gè)網(wǎng)絡(luò)設(shè)備完成。路由器100的用戶可以使用控制器102來創(chuàng)建跨網(wǎng)絡(luò)環(huán)境中不同組件和設(shè)備的端到端網(wǎng)絡(luò)服務(wù)??刂破?02可以被配置為對(duì)分布式體系結(jié)構(gòu)中各個(gè)組件之間的端到端路徑進(jìn)行編排??刂破?02負(fù)責(zé)設(shè)置服務(wù)路徑并且提供對(duì)網(wǎng)絡(luò)流量的可見性??刂破?02也可以被配置為執(zhí)行各種分析。
控制器102經(jīng)由一個(gè)或多個(gè)通信信道在通信上耦合到一個(gè)或多個(gè)控制面子系統(tǒng)104??刂破?02可以使用不同的協(xié)議與控制面子系統(tǒng)通信。被控制器102用來與第一控制面子系統(tǒng)104-1通信的通信協(xié)議可以與被控制器102用來與第二控制面子系統(tǒng)104-2或者其他控制面子系統(tǒng)通信的通信協(xié)議相同或者不同。
在一些實(shí)施例中,被控制器102用來與控制面子系統(tǒng)通信的通信協(xié)議的類型取決于控制面子系統(tǒng)是“薄邊界(thinedge)”網(wǎng)絡(luò)設(shè)備還是“厚邊界(thickedge)”網(wǎng)絡(luò)設(shè)備的一部分。在某些實(shí)施例中,如果網(wǎng)絡(luò)設(shè)備可以維持關(guān)于流的狀態(tài)并且可以跨重啟維持配置狀態(tài),那么它被分類為厚邊界設(shè)備。厚邊界設(shè)備的示例包括路由器、防火墻和負(fù)載均衡器。厚邊界設(shè)備能夠獨(dú)立于中央控制器確定路徑可達(dá)性。典型地,中央控制器將通過對(duì)設(shè)備的配置告知厚邊界設(shè)備如何確定路徑可達(dá)性。這可以是通過策略(諸如acl、nat等)以及路由協(xié)議(諸如邊界網(wǎng)關(guān)協(xié)議(bgp)、中間服務(wù)到中間服務(wù)協(xié)議(is-is)、開放最短路徑優(yōu)先(ospf)等)的組合而進(jìn)行的。一旦被通知了策略,厚邊界設(shè)備就能夠獨(dú)立于第三方控制器確定轉(zhuǎn)發(fā)路徑。厚邊界設(shè)備典型地也能夠維持關(guān)于流的較高級(jí)別的狀態(tài)。維持關(guān)于流的狀態(tài)的示例將是路由器中的有狀態(tài)的acl規(guī)則,該有狀態(tài)的acl規(guī)則將報(bào)文分類為屬于相同的tcp會(huì)話并且然后基于為其定義的策略路由這些報(bào)文。路由器包含足夠的邏輯和存儲(chǔ)器來維護(hù)兩個(gè)端點(diǎn)之間的tcp會(huì)話的歷史的記錄,并且能夠確定流中的各個(gè)報(bào)文是相關(guān)的,即使這些報(bào)文可能不具有相同的格式或者元數(shù)據(jù)。厚邊界設(shè)備維護(hù)充足的邏輯以維持關(guān)于流的狀態(tài)并且可以在沒有控制器102的情況下操作。
在某些實(shí)施例中,控制器102使用網(wǎng)絡(luò)配置協(xié)議(netconf)與厚邊界設(shè)備中的控制面子系統(tǒng)接口,netconf是由ietf開發(fā)并且標(biāo)準(zhǔn)化的網(wǎng)絡(luò)管理協(xié)議。netconf提供安裝、操縱和刪除網(wǎng)絡(luò)設(shè)備的配置的機(jī)制。它的操作在簡(jiǎn)單遠(yuǎn)程過程調(diào)用(rpc)層之上實(shí)現(xiàn)。netconf協(xié)議對(duì)于配置數(shù)據(jù)以及對(duì)于協(xié)議消息使用基于可擴(kuò)展標(biāo)記語言(xml)的數(shù)據(jù)編碼。協(xié)議消息在安全傳輸協(xié)議之上互換。厚邊界設(shè)備的示例包括但不限于由加利福尼亞州sanjose的brocade通信系統(tǒng)公司提供的各種產(chǎn)品,諸如vrouter產(chǎn)品系列(例如,5400vrouter、5600vrouter)、vadc(虛擬應(yīng)用遞送控制器)、當(dāng)使用netconf時(shí)的mlx系列、當(dāng)使用netconf時(shí)的vdx系列等。
如果網(wǎng)絡(luò)設(shè)備使用一系列匹配動(dòng)作表格來確定轉(zhuǎn)發(fā)并且因此不能維持關(guān)于流的狀態(tài),那么它被分類為薄邊界設(shè)備。薄邊界設(shè)備的示例是交換機(jī)。薄邊界設(shè)備典型地基于流條目進(jìn)行交換并且典型地在物理交換機(jī)tcam的抽象表示上建模。openflow是代表薄邊界設(shè)備的一種協(xié)議。在使用openflow的情況下,中央控制器負(fù)責(zé)確定網(wǎng)絡(luò)可達(dá)性。它然后對(duì)具有明確可達(dá)性的薄邊界設(shè)備進(jìn)行編程。薄邊界設(shè)備典型地不具有獨(dú)立于控制器確定轉(zhuǎn)發(fā)路徑的能力,它們也不能維持足夠的關(guān)于流量的狀態(tài)以做出復(fù)雜的報(bào)文/會(huì)話關(guān)聯(lián)。在某些實(shí)施例中,控制器102使用openflow通信協(xié)議與薄邊界設(shè)備中的控制面子系統(tǒng)通信。openflow標(biāo)準(zhǔn)由開放網(wǎng)絡(luò)基金會(huì)(onf)管理,onf是致力于軟件定義網(wǎng)絡(luò)(sdn)的推廣和采用的組織。薄邊界設(shè)備的示例包括但不限于由加利福尼亞州sanjose的brocade通信系統(tǒng)公司提供的各種產(chǎn)品,諸如當(dāng)使用openflow時(shí)的mlx、當(dāng)使用openflow時(shí)的vdx等。
控制器102也可以使用其他協(xié)議與控制面子系統(tǒng)通信。在某些實(shí)例中,控制器102可以使用yang或者rest與控制面子系統(tǒng)通信。yang是用來對(duì)由netconf遠(yuǎn)程過程調(diào)用和netconf通知操縱的配置和狀態(tài)數(shù)據(jù)進(jìn)行建模的數(shù)據(jù)建模語言。yang可以被用來對(duì)用于在控制器102與控制面子系統(tǒng)之間的通信的配置和狀態(tài)數(shù)據(jù)進(jìn)行建模。在一些實(shí)施例中,rest(表述性狀態(tài)轉(zhuǎn)移)應(yīng)用編程接口(api)可以由控制器102用來與控制面子系統(tǒng)通信。在替代實(shí)施例中,其他通信協(xié)議可以用于控制器102與各個(gè)控制面子系統(tǒng)之間的通信,這些其他通信協(xié)議諸如pcep(路徑計(jì)算元件通信協(xié)議)、bgp-ls(邊界網(wǎng)關(guān)協(xié)議-鏈路狀態(tài))等等。
在某些實(shí)施例中,控制器102被實(shí)現(xiàn)為由一個(gè)或多個(gè)處理實(shí)體執(zhí)行的一組指令(代碼或者程序),這些處理實(shí)體諸如是由
如圖1中描繪的,控制器102可以控制并且管理一個(gè)或多個(gè)(一對(duì)多關(guān)系)控制面子系統(tǒng),諸如控制面子系統(tǒng)104-1和104-2。單個(gè)控制面子系統(tǒng)104能夠控制多個(gè)數(shù)據(jù)面子系統(tǒng)(一對(duì)多關(guān)系)。由控制面子系統(tǒng)104控制的數(shù)據(jù)面子系統(tǒng)106可以是不同類型,包括軟件數(shù)據(jù)面子系統(tǒng)108和/或硬件數(shù)據(jù)面子系統(tǒng)110。控制面子系統(tǒng)可以使用控制信道112并行地或者并發(fā)地與多個(gè)數(shù)據(jù)面子系統(tǒng)通信。
在某些實(shí)施例中,控制器配置有它負(fù)責(zé)的一組控制面子系統(tǒng)。它然后基于網(wǎng)絡(luò)策略配置這些實(shí)體。當(dāng)配置厚邊界設(shè)備時(shí),它可以使用netconf這樣做。當(dāng)配置薄邊界設(shè)備時(shí),它可以使用openflow這樣做。
控制面子系統(tǒng)104被配置為實(shí)現(xiàn)從控制器102接收的網(wǎng)絡(luò)策略。在一個(gè)實(shí)施例中,控制面子系統(tǒng)104被配置為將策略轉(zhuǎn)換成一組動(dòng)作,這組動(dòng)作將要由控制面子系統(tǒng)104控制的數(shù)據(jù)面106采取以實(shí)現(xiàn)策略??刂泼孀酉到y(tǒng)104因此負(fù)責(zé)采取從控制器102接收的網(wǎng)絡(luò)策略并且將它們轉(zhuǎn)換成用于數(shù)據(jù)面子系統(tǒng)106的動(dòng)作。當(dāng)數(shù)據(jù)面子系統(tǒng)在它們初始化時(shí)向控制面子系統(tǒng)注冊(cè)它們自己時(shí),控制面子系統(tǒng)獲知它控制哪些數(shù)據(jù)面子系統(tǒng)。在某些實(shí)施例中,控制面子系統(tǒng)能使用諸如netconf或者openflow的通信協(xié)議在外部編程,并且可以使用restapi進(jìn)行編程。
控制面子系統(tǒng)104可以使用各種不同的通信技術(shù)與數(shù)據(jù)面子系統(tǒng)106通信。在某些實(shí)施例中,如在圖1中描繪的,控制面子系統(tǒng)104-1使用控制信道112與軟件數(shù)據(jù)面108和硬件數(shù)據(jù)面110二者進(jìn)行通信。在一個(gè)實(shí)施例中,經(jīng)控制信道112的消息傳遞可以使用具有json(javascript開放符號(hào))封裝的zeromq傳輸機(jī)制。zeromq(也拼寫為
例如,控制面子系統(tǒng)104可以從控制器102接收由用戶配置的防火墻策略。作為響應(yīng),控制面子系統(tǒng)104可以創(chuàng)建用于防火墻策略的數(shù)據(jù)模型表示,并且將策略有關(guān)的信息存儲(chǔ)在本地?cái)?shù)據(jù)結(jié)構(gòu)中。控制面子系統(tǒng)104然后可以將數(shù)據(jù)模型表示轉(zhuǎn)換成json表示,該json表示然后被封裝到zeromq消息中并且使用zeromq總線經(jīng)控制信道112被傳送到各個(gè)數(shù)據(jù)面子系統(tǒng)。
控制面子系統(tǒng)也可以經(jīng)由控制信道112接收來自一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)的消息。這些消息可以例如將關(guān)于數(shù)據(jù)面子系統(tǒng)的狀況和狀態(tài)信息傳送到控制面子系統(tǒng)。例如,如果在數(shù)據(jù)面子系統(tǒng)中存在改變(例如,接口狀態(tài)改變),那么該信息由數(shù)據(jù)面子系統(tǒng)封裝到j(luò)son表示中,該json表示繼而被封裝到zeromq消息總線中并且使用控制信道112被發(fā)送到控制面子系統(tǒng)104??刂泼孀酉到y(tǒng)104然后可以采取動(dòng)作以對(duì)狀態(tài)改變做出響應(yīng)(例如,改變狀態(tài)信息、改變路由等)。
在某些實(shí)施例中,每個(gè)控制面子系統(tǒng)104被實(shí)現(xiàn)為由一個(gè)或多個(gè)處理實(shí)體執(zhí)行的一組指令(代碼或者程序),這些處理實(shí)體諸如由
控制面子系統(tǒng)104負(fù)責(zé)對(duì)數(shù)據(jù)面子系統(tǒng)106的配置和管理。例如,控制面子系統(tǒng)被配置為維護(hù)用于分布式網(wǎng)絡(luò)的路由和拓?fù)湫畔ⅰT撔畔⑷缓笥煽刂泼孀酉到y(tǒng)使用來對(duì)一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)進(jìn)行編程,使得數(shù)據(jù)面能夠轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文以便于將數(shù)據(jù)報(bào)文從它們的源遞送到它們的預(yù)期目的地。在某些實(shí)施例中,控制面子系統(tǒng)被配置為將轉(zhuǎn)發(fā)信息下載到數(shù)據(jù)面子系統(tǒng)。該轉(zhuǎn)發(fā)信息然后由數(shù)據(jù)面子系統(tǒng)使用來轉(zhuǎn)發(fā)由數(shù)據(jù)面子系統(tǒng)接收的數(shù)據(jù)報(bào)文??刂泼孀酉到y(tǒng)也可以將其他與策略有關(guān)的(例如,與防火墻策略有關(guān)的)信息下載到數(shù)據(jù)面子系統(tǒng)。
存在控制面子系統(tǒng)可以接收網(wǎng)絡(luò)和拓?fù)湫畔⒌母鞣N方法??刂泼孀酉到y(tǒng)可以執(zhí)行處理以支持在網(wǎng)絡(luò)設(shè)備之間互換網(wǎng)絡(luò)和拓?fù)湫畔⒌母鞣N聯(lián)網(wǎng)協(xié)議??刂泼孀酉到y(tǒng)可以生成并且處理去往分布式網(wǎng)絡(luò)系統(tǒng)的其他組件的控制面報(bào)文或者由分布式網(wǎng)絡(luò)系統(tǒng)的其他組件源起的控制面報(bào)文。例如,控制面子系統(tǒng)104可以彼此互換拓?fù)湫畔⒒蛘吲c其他網(wǎng)絡(luò)設(shè)備或系統(tǒng)互換拓?fù)湫畔?,以及使用諸如路由信息協(xié)議(rip)、開放最短路徑優(yōu)先(ospf)或者邊界網(wǎng)關(guān)協(xié)議(bgp)的路由協(xié)議來構(gòu)造/維護(hù)路由表。
在某些實(shí)施例中,為了高可用性或者故障轉(zhuǎn)移(failover)的目的,控制面子系統(tǒng)可以與另一個(gè)控制面子系統(tǒng)通信。在某些實(shí)施例中,能夠使用控制信道啟用兩個(gè)控制面子系統(tǒng)之間的通信。
數(shù)據(jù)面子系統(tǒng)106表示分布式路由器100的數(shù)據(jù)轉(zhuǎn)發(fā)層,并且可以包括一個(gè)或多個(gè)軟件數(shù)據(jù)面子系統(tǒng)108-1、108-2等(總稱為“108”)和硬件數(shù)據(jù)面子系統(tǒng)110-1、110-2等(總稱為“110”)。例如,分布式路由器實(shí)現(xiàn)可以僅具有一個(gè)或多個(gè)軟件數(shù)據(jù)面子系統(tǒng)并且沒有硬件數(shù)據(jù)面子系統(tǒng)。在另一種實(shí)現(xiàn)中,所有數(shù)據(jù)面可以是硬件數(shù)據(jù)面子系統(tǒng)而沒有軟件數(shù)據(jù)面子系統(tǒng)。在再一種實(shí)現(xiàn)中,數(shù)據(jù)面層可以包括軟件數(shù)據(jù)面子系統(tǒng)和硬件數(shù)據(jù)面子系統(tǒng)的組合。
總的來說,數(shù)據(jù)面子系統(tǒng)106負(fù)責(zé)接收數(shù)據(jù)報(bào)文并且基于從控制面子系統(tǒng)104接收的轉(zhuǎn)發(fā)和配置信息將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到網(wǎng)絡(luò)中的下一跳。每個(gè)數(shù)據(jù)面子系統(tǒng)被編程有從一個(gè)或多個(gè)控制面子系統(tǒng)接收的轉(zhuǎn)發(fā)信息。數(shù)據(jù)面子系統(tǒng)使用轉(zhuǎn)發(fā)信息來轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。在某些實(shí)現(xiàn)中,數(shù)據(jù)面子系統(tǒng)支持(osi模型的)層2和層3路由功能性。在某些實(shí)施例中,數(shù)據(jù)面子系統(tǒng)還可以提供osi層4-層7功能性。數(shù)據(jù)面子系統(tǒng)106可以提供與路由器有關(guān)的功能性,諸如有狀態(tài)的防火墻和無狀態(tài)的防火墻、應(yīng)用流、應(yīng)用邏輯網(wǎng)關(guān)、網(wǎng)絡(luò)訪問設(shè)備(nad)能力,以及在一些實(shí)例中,層4路由和更高級(jí)別數(shù)據(jù)報(bào)文檢查能力的部分或者全部實(shí)現(xiàn)、與mpls有關(guān)的處理、網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)、有狀態(tài)的網(wǎng)絡(luò)附屬存儲(chǔ)(nas)、分級(jí)qos(服務(wù)質(zhì)量)、q-in-q、對(duì)互聯(lián)網(wǎng)協(xié)議安全(ipsec)的支持、通用路由封裝(gre)、虛擬可擴(kuò)展lan(vxlan)、用于數(shù)據(jù)流的分析和管理的各種工具、深度報(bào)文檢查(dpi)、最長(zhǎng)報(bào)文匹配(lpm)報(bào)文查找、虛擬私有網(wǎng)絡(luò)(vpn)以及其他功能性。
數(shù)據(jù)面子系統(tǒng)106可以經(jīng)由數(shù)據(jù)面子系統(tǒng)的端口接收數(shù)據(jù)報(bào)文。端口可以是邏輯端口或者物理端口。數(shù)據(jù)面子系統(tǒng)然后確定將如何轉(zhuǎn)發(fā)接收到的報(bào)文。作為該確定的一部分,數(shù)據(jù)面子系統(tǒng)可以從接收到的數(shù)據(jù)報(bào)文中提取信息(例如,提取報(bào)頭信息),根據(jù)所提取的信息中確定數(shù)據(jù)報(bào)文的源和目的地信息,以及基于所提取的信息、由數(shù)據(jù)面子系統(tǒng)從控制面子系統(tǒng)接收和由數(shù)據(jù)面子系統(tǒng)存儲(chǔ)的轉(zhuǎn)發(fā)信息以及其他可適用的策略有關(guān)的信息確定將如何轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。在某些實(shí)施例中,如果數(shù)據(jù)面子系統(tǒng)不能確定將如何轉(zhuǎn)發(fā)接收到的報(bào)文,那么丟棄該報(bào)文。否則,數(shù)據(jù)面子系統(tǒng)確定將被用于把報(bào)文轉(zhuǎn)發(fā)到下一跳的輸出端口,以便于將報(bào)文傳送到它的預(yù)期目的地。數(shù)據(jù)面子系統(tǒng)然后使用所確定的輸出端口轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。
數(shù)據(jù)面子系統(tǒng)也可以經(jīng)由子系統(tǒng)的端口彼此通信。軟件數(shù)據(jù)面子系統(tǒng)可以與另一個(gè)軟件數(shù)據(jù)面子系統(tǒng)或者與另一個(gè)硬件數(shù)據(jù)面子系統(tǒng)通信。硬件數(shù)據(jù)面子系統(tǒng)可以與另一個(gè)硬件數(shù)據(jù)面子系統(tǒng)或者與另一個(gè)軟件數(shù)據(jù)面子系統(tǒng)通信。在某些實(shí)施例中,外圍組件互連快速路(pcie)接口被用于各個(gè)數(shù)據(jù)面之間的通信。在某些實(shí)施例中,軟件數(shù)據(jù)面子系統(tǒng)108可以使用標(biāo)準(zhǔn)化接口與硬件數(shù)據(jù)面子系統(tǒng)108通信,其中這些標(biāo)準(zhǔn)化接口使用rest、yang、zeromq、json表示或者任何其他適當(dāng)協(xié)議實(shí)現(xiàn)。在數(shù)據(jù)面子系統(tǒng)的每個(gè)之間提供標(biāo)準(zhǔn)化接口允許數(shù)據(jù)面子系統(tǒng)的換入和換出,而不需要擔(dān)心數(shù)據(jù)面子系統(tǒng)將如何彼此通信。一般地,在分布式路由器的各個(gè)層之間提供標(biāo)準(zhǔn)化通信接口能夠?qū)崿F(xiàn)在不同層處換入和換出各種組件的靈活性而不影響路由器功能性。這也使得能夠以容易并且靈活的方式對(duì)路由器進(jìn)行改變,諸如添加另外的功能性。
如上面所指示的,數(shù)據(jù)面子系統(tǒng)可以是軟件數(shù)據(jù)面子系統(tǒng)108或者硬件數(shù)據(jù)面子系統(tǒng)110。軟件數(shù)據(jù)面子系統(tǒng)108實(shí)現(xiàn)為由一個(gè)或多個(gè)處理實(shí)體執(zhí)行的一組指令(或者代碼),這些處理實(shí)體是諸如由
如上面所指示的,軟件數(shù)據(jù)面子系統(tǒng)也可以由一個(gè)或多個(gè)npu執(zhí)行。npu一般是專門設(shè)計(jì)并且優(yōu)化以處置網(wǎng)絡(luò)有關(guān)的功能的可編程多核微處理器。網(wǎng)絡(luò)處理器典型地是軟件可編程設(shè)備并且將具有與通用中央處理單元類似的一般特性,并且針對(duì)執(zhí)行諸如圖案匹配、鍵查找、計(jì)算、位操縱、緩沖器的分配和管理等與聯(lián)網(wǎng)有關(guān)的功能而優(yōu)化。軟件數(shù)據(jù)面子系統(tǒng)可以部署在裸金屬上、虛擬機(jī)中,等等。
軟件數(shù)據(jù)面子系統(tǒng)108被配置為提供高速數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)能力。在一個(gè)實(shí)施例中,軟件數(shù)據(jù)面子系統(tǒng)可以使用基于linux的轉(zhuǎn)發(fā)流水線(pipeline)。在另一個(gè)實(shí)施例中,為了更加快速的處理,使用mcee(多核執(zhí)行環(huán)境)體系結(jié)構(gòu),mcee體系結(jié)構(gòu)使得報(bào)文能夠以高速并行地處理。使用mcee模型的軟件數(shù)據(jù)面子系統(tǒng)被配置為將接收到的數(shù)據(jù)報(bào)文分散(spray)到專用于處理這些報(bào)文的各個(gè)核。每個(gè)核處理它所接收的報(bào)文并且將報(bào)文轉(zhuǎn)發(fā)到出站端口。在使用mcee體系結(jié)構(gòu)的情況下,報(bào)文處理被顯著地加速,因?yàn)樗沟媚軌蜻M(jìn)行報(bào)文的并行處理以及將報(bào)文分布到專用于處理報(bào)文的許多處理資源。
在某些實(shí)施例中,實(shí)現(xiàn)軟件數(shù)據(jù)面子系統(tǒng)的軟件被設(shè)計(jì)并且構(gòu)建為使得它是便攜式的并且能夠在不同的處理器體系結(jié)構(gòu)(例如intel體系結(jié)構(gòu)、arm設(shè)備、powerpc設(shè)備等)上執(zhí)行。在不同的處理器體系結(jié)構(gòu)上運(yùn)行的不同軟件數(shù)據(jù)面子系統(tǒng)可以由相同的控制面子系統(tǒng)104控制。
在某些實(shí)施例中,軟件數(shù)據(jù)面子系統(tǒng)108被配置為提供由傳統(tǒng)基于線卡的轉(zhuǎn)發(fā)機(jī)制提供的所有功能性。可以由軟件數(shù)據(jù)面子系統(tǒng)提供的服務(wù)或者功能性的示例包括但不局限于,l2交換、l3轉(zhuǎn)發(fā)ipv4/6、mpls處理、無狀態(tài)的和有狀態(tài)的防火墻功能性、網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)、有狀態(tài)的網(wǎng)絡(luò)附屬存儲(chǔ)(nas)、分級(jí)qos(服務(wù)質(zhì)量)、q-in-q、對(duì)互聯(lián)網(wǎng)協(xié)議安全(ipsec)的支持、通用路由封裝(gre)、虛擬可擴(kuò)展lan(vxlan)、用于數(shù)據(jù)流的分析和管理的各種工具、深度報(bào)文檢查(dpi)、最長(zhǎng)報(bào)文匹配(lpm)報(bào)文查找、虛擬私有網(wǎng)絡(luò)(vpn)等。由于軟件數(shù)據(jù)面子系統(tǒng)被實(shí)現(xiàn)為軟件,所以可以通過開發(fā)新的軟件數(shù)據(jù)面子系統(tǒng)或者使用附加的功能性更新現(xiàn)有的軟件數(shù)據(jù)面子系統(tǒng)來容易地添加附加的功能性,并且這些新的或者更新后的軟件數(shù)據(jù)面子系統(tǒng)然后可以插入到分布式路由器中。
可以使用通用cpu、網(wǎng)絡(luò)接口卡(nic)、為聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì)的商用硅和/或fpga來實(shí)現(xiàn)硬件數(shù)據(jù)面子系統(tǒng)110??梢允褂玫耐ㄓ胏pu的示例包括但不限于來自
在一些實(shí)施例中,硬件數(shù)據(jù)面子系統(tǒng)110可以提供與由軟件數(shù)據(jù)面子系統(tǒng)提供的那些功能性類似的功能性。在一些其他的實(shí)施例中,硬件數(shù)據(jù)面子系統(tǒng)可以提供對(duì)由軟件數(shù)據(jù)面子系統(tǒng)提供的功能性進(jìn)行補(bǔ)充的功能性。在再有的其他的實(shí)施例中,硬件數(shù)據(jù)面子系統(tǒng)可以提供沒有由可用的軟件數(shù)據(jù)面子系統(tǒng)提供的一個(gè)或多個(gè)功能。在一些實(shí)例中,硬件數(shù)據(jù)面子系統(tǒng)可以從軟件數(shù)據(jù)面子系統(tǒng)卸載某些功能性,并且對(duì)于較不處理密集(processing-intensive)的、重復(fù)的和/或頻繁的功能提供硬件速度切換和處理。在一些實(shí)例中,硬件數(shù)據(jù)面子系統(tǒng)110可以卸載在軟件數(shù)據(jù)面子系統(tǒng)108中較不頻繁存在的復(fù)雜任務(wù)。
使用軟件數(shù)據(jù)面子系統(tǒng)108和硬件數(shù)據(jù)面子系統(tǒng)110實(shí)現(xiàn)數(shù)據(jù)面層為由數(shù)據(jù)面層執(zhí)行的處理提供期望的靈活性。在一個(gè)實(shí)施例中,硬件數(shù)據(jù)面子系統(tǒng)可以用于使用特征特定的硬件(featurespecifichardware)為重復(fù)的并且較不密集的聯(lián)網(wǎng)功能提供硬件速度切換,同時(shí)維持在諸如通用處理器的便宜商用硬件組件上執(zhí)行的軟件數(shù)據(jù)面子系統(tǒng)中執(zhí)行更加復(fù)雜并且較不頻繁的功能性的通用性(versatility)和成本效益。
如上面所描述的,用來實(shí)現(xiàn)硬件數(shù)據(jù)面子系統(tǒng)的cpu、npu、商用硅和nic(統(tǒng)稱為“轉(zhuǎn)發(fā)硬件”)可以由不同的供應(yīng)商提供??刂泼孀酉到y(tǒng)因此可以同時(shí)控制來自多個(gè)供應(yīng)商的硬件數(shù)據(jù)面子系統(tǒng)。從控制面子系統(tǒng)的視角,它在與軟件數(shù)據(jù)面子系統(tǒng)或者硬件數(shù)據(jù)面子系統(tǒng)通信時(shí)不做區(qū)分;控制面子系統(tǒng)使用控制信道(例如,使用json編碼的zeromq傳輸)與數(shù)據(jù)面子系統(tǒng)通信。
提供轉(zhuǎn)發(fā)硬件的供應(yīng)商可以提供各種供應(yīng)商特定的api,用于控制轉(zhuǎn)發(fā)硬件以及與轉(zhuǎn)發(fā)硬件交互。例如,broadcom提供用于控制broadcom的tomahawk商用硅并且與其交互的api。因此,由硬件數(shù)據(jù)面子系統(tǒng)從控制信道接收的消息需要轉(zhuǎn)換成轉(zhuǎn)發(fā)硬件供應(yīng)商特定的api。因此關(guān)于每個(gè)轉(zhuǎn)發(fā)硬件提供硬件抽象層(hal),其中hal被配置為將經(jīng)由控制信道接收的消息轉(zhuǎn)換成轉(zhuǎn)發(fā)硬件供應(yīng)商特定的api。
圖2描繪根據(jù)本發(fā)明的實(shí)施例的具有hal的示例硬件數(shù)據(jù)面子系統(tǒng)200。如圖2中所示,hal202充當(dāng)控制信道112與用來實(shí)現(xiàn)硬件數(shù)據(jù)面子系統(tǒng)的轉(zhuǎn)發(fā)硬件204之間的接口。hal層202負(fù)責(zé)將來自控制面的控制信道的配置、策略和狀態(tài)信息轉(zhuǎn)換到硬件數(shù)據(jù)面。hal202被配置為接收來自控制信道112的消息并且將它們轉(zhuǎn)換成由轉(zhuǎn)發(fā)硬件204的供應(yīng)商提供的api。在相反的方向上,轉(zhuǎn)發(fā)硬件204可以使用供應(yīng)商特定的api提供信息(例如,網(wǎng)絡(luò)狀況)到hal202,并且hal202然后可以被配置為將這些轉(zhuǎn)換成由控制信道112使用的格式的消息。
hal202可以被配置為提供各種不同的消息傳遞格式與各種供應(yīng)商特定的api之間的轉(zhuǎn)換。例如,hal202可以支持基于各種消息傳遞或者總線協(xié)議(諸如rest、yang、zeromq和/或json等等)的接口。
hal202因此提供到底層轉(zhuǎn)發(fā)硬件的標(biāo)準(zhǔn)化接口,而不管轉(zhuǎn)發(fā)硬件的類型以及提供轉(zhuǎn)發(fā)硬件的供應(yīng)商。在一些實(shí)例中,hal202可以提供存貯(inventory)或者發(fā)現(xiàn)底層轉(zhuǎn)發(fā)硬件204的api和功能的能力。hal的使用增加了分布式路由器體系結(jié)構(gòu)的靈活性和互操作性??刂泼孀酉到y(tǒng)可以與可能來自不同供應(yīng)商的不同硬件數(shù)據(jù)面子系統(tǒng)一起操作。由一個(gè)供應(yīng)商(例如,broadcom)提供的硬件數(shù)據(jù)面子系統(tǒng)可以切換到由另一個(gè)供應(yīng)商(例如,cavium)提供的硬件數(shù)據(jù)面子系統(tǒng),而不需要對(duì)控制信道112或者對(duì)控制面子系統(tǒng)104做出任何改變。hal202可以獲取來自通用組件(例如,來自控制面控制信道)的輸入并且將它們轉(zhuǎn)換成轉(zhuǎn)發(fā)硬件供應(yīng)商特定的api。
圖7描繪示出根據(jù)本發(fā)明的實(shí)施例的被執(zhí)行以用于對(duì)分布式路由器進(jìn)行編程的處理的簡(jiǎn)化流程圖700。在圖7中描繪的特定系列的處理步驟不旨在是限制性的。應(yīng)當(dāng)領(lǐng)會(huì)到可以按照與圖7中描繪的不同的次序執(zhí)行處理步驟,并且不是圖7中描繪的所有步驟都需要被執(zhí)行。
在702處,分布式路由器的用戶可以使用分布式路由器的控制器提供指令。在一個(gè)實(shí)施例中,控制器可以提供可由用戶使用以提供指令的接口。指令也可以經(jīng)由控制器所提供的命令行接口(cli)提供。指令可以對(duì)應(yīng)于用戶想要針對(duì)一個(gè)或多個(gè)網(wǎng)絡(luò)配置的網(wǎng)絡(luò)策略。例如,網(wǎng)絡(luò)策略可以與防火墻、qos、nat等有關(guān)。
在704處,指令從控制器傳送到一個(gè)或多個(gè)控制面子系統(tǒng)??梢允褂酶鞣N不同的協(xié)議將指令從控制器傳送到控制面子系統(tǒng)。例如,如果控制面子系統(tǒng)是厚邊界設(shè)備的一部分,那么諸如netconf的協(xié)議可以被用于將指令從控制器傳送到控制面子系統(tǒng)。如果控制面子系統(tǒng)是薄邊界設(shè)備的一部分,那么諸如openflow的協(xié)議可以被用來將指令從控制器傳送到控制面子系統(tǒng)。也可以使用各種其他的協(xié)議。
在706處,接收指令的控制面子系統(tǒng)可以構(gòu)建用于該指令的數(shù)據(jù)模型并且將指令信息存儲(chǔ)在本地?cái)?shù)據(jù)結(jié)構(gòu)中并且將指令轉(zhuǎn)換成將要在數(shù)據(jù)面層處執(zhí)行的一個(gè)或多個(gè)動(dòng)作。動(dòng)作可以與將要在數(shù)據(jù)面層處針對(duì)從控制器接收的網(wǎng)絡(luò)策略指令實(shí)現(xiàn)或者更新的一個(gè)或多個(gè)策略有關(guān)。動(dòng)作可以與將要在數(shù)據(jù)面層處針對(duì)從控制器接收的網(wǎng)絡(luò)策略指令執(zhí)行的對(duì)轉(zhuǎn)發(fā)信息或者配置信息的更新有關(guān)。在某些實(shí)施例中,控制面子系統(tǒng)可以存儲(chǔ)用來將從控制器接收的指令映射到將要在數(shù)據(jù)面層處執(zhí)行的一個(gè)或多個(gè)動(dòng)作和/或策略的信息??刂泼娴呐渲每梢园酚蓞f(xié)議配置、防火墻規(guī)則、諸如snmp和netflow的管理服務(wù)等。
在708處,控制面子系統(tǒng)生成與一個(gè)或多個(gè)動(dòng)作對(duì)應(yīng)的一個(gè)或多個(gè)消息并且使用控制信道將一個(gè)或多個(gè)消息傳送到一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)。例如,在一個(gè)實(shí)施例中,控制面子系統(tǒng)可以生成與一個(gè)或多個(gè)動(dòng)作對(duì)應(yīng)的一個(gè)或多個(gè)json編碼的消息,并且使用zeromq傳輸總線將消息傳送到一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)。
708中的消息可以被發(fā)送到一個(gè)或多個(gè)軟件數(shù)據(jù)面子系統(tǒng)和/或一個(gè)或多個(gè)硬件數(shù)據(jù)面子系統(tǒng)。當(dāng)經(jīng)由控制信道接收到一個(gè)或多個(gè)消息時(shí),在710處,軟件數(shù)據(jù)面子系統(tǒng)被配置為執(zhí)行與一個(gè)或多個(gè)動(dòng)作對(duì)應(yīng)的處理。動(dòng)作可以對(duì)軟件數(shù)據(jù)面進(jìn)行編程。例如,動(dòng)作可以用來以編程的方式更新由軟件數(shù)據(jù)面用來轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā)信息和/或配置信息。動(dòng)作也可以編程或者更新由軟件數(shù)據(jù)面子系統(tǒng)提供的服務(wù)(例如,防火墻,dpi等)。例如,動(dòng)作可以使得由數(shù)據(jù)面子系統(tǒng)存儲(chǔ)的關(guān)于數(shù)據(jù)面子系統(tǒng)所提供的服務(wù)的信息被存儲(chǔ)和/或更新。
如果一個(gè)或多個(gè)消息由硬件數(shù)據(jù)面子系統(tǒng)接收,則在712處,與硬件數(shù)據(jù)面子系統(tǒng)的轉(zhuǎn)發(fā)硬件對(duì)應(yīng)的hal層可以將由消息指示的一個(gè)或多個(gè)動(dòng)作轉(zhuǎn)換成一個(gè)或多個(gè)轉(zhuǎn)發(fā)硬件供應(yīng)商特定的api調(diào)用。在714處,在712中確定的api調(diào)用然后被執(zhí)行。執(zhí)行api對(duì)硬件數(shù)據(jù)面子系統(tǒng)進(jìn)行編程。例如,動(dòng)作可以用來以編程的方式更新由硬件數(shù)據(jù)面用于轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā)信息和/或配置信息。動(dòng)作也可以編程或者更新由硬件數(shù)據(jù)面子系統(tǒng)提供的服務(wù)(例如,mpls轉(zhuǎn)發(fā))。例如,動(dòng)作可以使得關(guān)于由硬件數(shù)據(jù)面子系統(tǒng)提供的服務(wù)的信息被存儲(chǔ)和/或更新。
下面的用例幫助例示圖7中描繪并且在上面描述的處理。在該示例中,用戶可能想要將端口eth0上的ip地址設(shè)置為1.1.1.1/24。用戶可以使用控制器102提供適當(dāng)?shù)闹噶畹娇刂泼孀酉到y(tǒng)104。這可以使用netconf、命令行接口等完成。接下來,作為響應(yīng),控制面子系統(tǒng)104可以構(gòu)建數(shù)據(jù)模型和本地?cái)?shù)據(jù)結(jié)構(gòu),并且可以將指令轉(zhuǎn)換成將要傳送到一個(gè)或多個(gè)數(shù)據(jù)面的一個(gè)或多個(gè)動(dòng)作??刂泼孀酉到y(tǒng)104然后可以使用具有json編碼的zeromq傳輸機(jī)制(例如,具有zeromq報(bào)頭和json接口的報(bào)文)經(jīng)由控制信道將與動(dòng)作對(duì)應(yīng)的消息發(fā)送到一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)。硬件數(shù)據(jù)面子系統(tǒng)可以接收由控制面子系統(tǒng)104發(fā)送的消息。該消息報(bào)文將來到硬件數(shù)據(jù)面子系統(tǒng)的hal層。hal然后對(duì)0mq/json消息進(jìn)行解構(gòu)和反序列化,并且調(diào)用轉(zhuǎn)發(fā)硬件供應(yīng)商特定的api來設(shè)置接口的ip地址(例如,對(duì)于broadcom轉(zhuǎn)發(fā)硬件,可以調(diào)用broadcomapiset_interface(1.1.1.1))。以這種方式,指令從控制器流動(dòng)到數(shù)據(jù)面子系統(tǒng),在那里相應(yīng)的動(dòng)作被執(zhí)行。
圖3是分布式路由器300的簡(jiǎn)化框圖,該簡(jiǎn)化框圖例示了根據(jù)本發(fā)明的實(shí)施例的體系結(jié)構(gòu)的分布式性質(zhì)。如圖3中描繪的,分布式路由器300包括控制器302,控制器302與多個(gè)控制面子系統(tǒng)(諸如子系統(tǒng)“控制面1”、“控制面2”等)通信。因此在控制器與控制面子系統(tǒng)之間可以存在一對(duì)多關(guān)系。每個(gè)控制面子系統(tǒng)繼而可以控制一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng),這一個(gè)或多個(gè)數(shù)據(jù)面子系統(tǒng)可以包括軟件數(shù)據(jù)面子系統(tǒng)和硬件數(shù)據(jù)面子系統(tǒng)中的一個(gè)或多個(gè)。因此,在控制面子系統(tǒng)與數(shù)據(jù)面子系統(tǒng)之間可以存在一對(duì)多關(guān)系。
在某些實(shí)施例中,路由器300的各個(gè)子系統(tǒng)可以分布在網(wǎng)絡(luò)中的各種設(shè)備之間。例如,在圖3中描繪的實(shí)施例中,控制器可以在第一設(shè)備302上執(zhí)行,控制面子系統(tǒng)_1可以在第二設(shè)備304上執(zhí)行,并且控制面子系統(tǒng)_2可以在第三設(shè)備306上執(zhí)行,其中第一設(shè)備302、第二設(shè)備304和第三設(shè)備306是不同的設(shè)備并且可以位于不同的地理位置處。設(shè)備302可以經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)與設(shè)備304和設(shè)備306在通信上耦合??刂泼孀酉到y(tǒng)因此可以位于托管控制器的計(jì)算系統(tǒng)或者設(shè)備遠(yuǎn)程的計(jì)算系統(tǒng)或者設(shè)備上。
如圖3中所示,控制面子系統(tǒng)1控制包括數(shù)據(jù)面子系統(tǒng)1和數(shù)據(jù)面子系統(tǒng)2的多個(gè)數(shù)據(jù)面子系統(tǒng)。數(shù)據(jù)面子系統(tǒng)1(可以是軟件數(shù)據(jù)面子系統(tǒng))可以由第四設(shè)備308執(zhí)行。數(shù)據(jù)面子系統(tǒng)2(可以是硬件數(shù)據(jù)面子系統(tǒng))可以位于第五設(shè)備310上,其中第二設(shè)備304、第四設(shè)備308和第五設(shè)備310是不同的設(shè)備并且可以位于不同的地理位置處。設(shè)備304可以經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)在通信上到達(dá)設(shè)備308和設(shè)備310??刂泼孀酉到y(tǒng)因此可以位于托管或包括數(shù)據(jù)面子系統(tǒng)的計(jì)算系統(tǒng)或者設(shè)備遠(yuǎn)程的計(jì)算系統(tǒng)或設(shè)備上。
因此,在某些實(shí)施例中,路由器300的各個(gè)子系統(tǒng)或者組件可以跨彼此處于遠(yuǎn)程的多個(gè)設(shè)備而分布。然而,不要求路由器300的各個(gè)子系統(tǒng)必須跨越多個(gè)設(shè)備或者計(jì)算系統(tǒng)而分布。在某些實(shí)施例中,路由器300的子系統(tǒng)中的一些可以共同位于相同的物理設(shè)備上,而其他可以分布在多個(gè)遠(yuǎn)程的物理設(shè)備或者計(jì)算系統(tǒng)上。在一些實(shí)施例中,路由器300的用戶提供有配置路由器300的各個(gè)子系統(tǒng)的位置的能力,包括控制器的位置、各個(gè)控制面子系統(tǒng)的位置以及各個(gè)數(shù)據(jù)面子系統(tǒng)的位置。
分布式路由器的不同層位于不同物理設(shè)備上的能力使得控制器與控制面子系統(tǒng)之間以及控制面子系統(tǒng)與數(shù)據(jù)面子系統(tǒng)之間的關(guān)系能夠是動(dòng)態(tài)的。例如,關(guān)于控制器和控制面子系統(tǒng),可以相對(duì)控制器遠(yuǎn)程地動(dòng)態(tài)添加或者移除控制面子系統(tǒng),并且控制器能夠在具有動(dòng)態(tài)改變的情況下操作。由控制器控制的控制面子系統(tǒng)的位置可以邏輯地和物理地分散在不同的物理設(shè)備中。關(guān)于控制面子系統(tǒng)和數(shù)據(jù)面子系統(tǒng),數(shù)據(jù)面子系統(tǒng)可以動(dòng)態(tài)地添加或者移除。例如,提供增強(qiáng)功能性和服務(wù)的軟件數(shù)據(jù)面可以動(dòng)態(tài)地添加到分布式路由器。由控制面子系統(tǒng)控制的數(shù)據(jù)面子系統(tǒng)的位置可以邏輯地和物理地分散在不同的物理設(shè)備中。
圖4描繪示出根據(jù)本發(fā)明的實(shí)施例的當(dāng)接收到數(shù)據(jù)報(bào)文時(shí)由分布式路由器執(zhí)行的處理的簡(jiǎn)化流程圖400。圖4中描繪的處理可以在由一個(gè)或多個(gè)處理單元(例如,處理器、核)執(zhí)行的軟件(例如,代碼、指令、程序)、硬件或者其組合中實(shí)現(xiàn)。軟件可以存儲(chǔ)在存儲(chǔ)器中(例如,非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,諸如存儲(chǔ)設(shè)備上)。在圖4中描繪的特定系列的處理步驟不旨在是限制性的。應(yīng)當(dāng)領(lǐng)會(huì)到可以按照與圖4中描繪的不同的次序執(zhí)行處理步驟,并且不是圖4中描繪的所有步驟都需要被執(zhí)行。在一個(gè)實(shí)施例中,圖4中描繪的處理可以由數(shù)據(jù)面子系統(tǒng)執(zhí)行。
在402處,數(shù)據(jù)報(bào)文由數(shù)據(jù)面子系統(tǒng)經(jīng)由數(shù)據(jù)面子系統(tǒng)的輸入端口接收。數(shù)據(jù)面子系統(tǒng)可以是軟件數(shù)據(jù)面子系統(tǒng)或者硬件數(shù)據(jù)面子系統(tǒng)。輸入端口可以是邏輯端口(或者說軟件端口)或者物理端口。
在404處,數(shù)據(jù)面子系統(tǒng)從接收到的報(bào)文中提取內(nèi)容。例如,數(shù)據(jù)面子系統(tǒng)可以提取接收到的數(shù)據(jù)報(bào)文的報(bào)頭。所提取的信息可以包括數(shù)據(jù)報(bào)文的源和目的地ip地址。
在406處,數(shù)據(jù)面子系統(tǒng)確定它是否可以轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。在一個(gè)實(shí)施例中,406中的確定可以基于在404中提取的報(bào)文的內(nèi)容、數(shù)據(jù)面子系統(tǒng)可用的轉(zhuǎn)發(fā)信息以及基于應(yīng)用任何可適用的轉(zhuǎn)發(fā)策略(例如,如應(yīng)用于由所配置的路由協(xié)議和設(shè)備策略的當(dāng)前狀態(tài)定義的轉(zhuǎn)發(fā)信息庫(forwardinginformationbase))而做出。轉(zhuǎn)發(fā)信息可以由數(shù)據(jù)面子系統(tǒng)在接收數(shù)據(jù)報(bào)文之前接收并且由數(shù)據(jù)面子系統(tǒng)存儲(chǔ)。在某些實(shí)施例中,轉(zhuǎn)發(fā)信息可以從路由協(xié)議信息和網(wǎng)絡(luò)狀態(tài)中得出。與由數(shù)據(jù)面子系統(tǒng)提供的服務(wù)有關(guān)的信息也可以在406中使用以確定數(shù)據(jù)面子系統(tǒng)是否能夠處理并且轉(zhuǎn)發(fā)接收到的數(shù)據(jù)報(bào)文。
如果數(shù)據(jù)面子系統(tǒng)在406中確定它不能轉(zhuǎn)發(fā)接收到的數(shù)據(jù)報(bào)文,那么在408處丟棄該數(shù)據(jù)報(bào)文??赡艽嬖跀?shù)據(jù)面子系統(tǒng)不能轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的各種原因,諸如,路由協(xié)議不具有到下一跳的有效路徑、路徑不可達(dá)、由于諸如防火墻規(guī)則的網(wǎng)絡(luò)策略,等等。
如果數(shù)據(jù)面子系統(tǒng)在406中確定它可以處理接收到的數(shù)據(jù)報(bào)文,那么處理繼續(xù)進(jìn)行410。在410處,數(shù)據(jù)面子系統(tǒng)確定用來從數(shù)據(jù)面子系統(tǒng)轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的輸出端口。輸出端口可以是邏輯端口或者物理端口。軟件端口可以在與數(shù)據(jù)面子系統(tǒng)共同駐留的通用cpu上運(yùn)行,或者它可以在物理上分離的通用計(jì)算平臺(tái)上。
在一個(gè)實(shí)施例中,410中的確定基于在404中提取的報(bào)文信息并且基于數(shù)據(jù)面子系統(tǒng)可用的轉(zhuǎn)發(fā)信息。作為410中處理的一部分,數(shù)據(jù)面子系統(tǒng)可以從在404中提取的報(bào)文內(nèi)容中確定數(shù)據(jù)報(bào)文的目的地ip地址,并且對(duì)目的地地址執(zhí)行最長(zhǎng)前綴匹配,并且然后基于數(shù)據(jù)面子系統(tǒng)可用的轉(zhuǎn)發(fā)信息確定用于轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的最優(yōu)路徑。然后可以基于最優(yōu)路徑確定輸出端口。
作為410中處理的一部分,數(shù)據(jù)面子系統(tǒng)也可以應(yīng)用可以適用于數(shù)據(jù)報(bào)文的各種策略和服務(wù)。例如,如果已經(jīng)指定防火墻策略并且適用于報(bào)文,那么可以執(zhí)行與防火墻服務(wù)有關(guān)的處理。也可以針對(duì)由數(shù)據(jù)面子系統(tǒng)提供的其他服務(wù)定義策略,這些服務(wù)諸如網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)、基于策略的路由、服務(wù)質(zhì)量(qos)、q-in-q、網(wǎng)絡(luò)安全策略、深度報(bào)文檢查(dpi)、最長(zhǎng)報(bào)文匹配(lpm)等。
在412處,數(shù)據(jù)報(bào)文被轉(zhuǎn)發(fā)到在410中確定的輸出端口。輸出端口可以在接收數(shù)據(jù)報(bào)文的相同數(shù)據(jù)面子系統(tǒng)上,或者可以在不同的數(shù)據(jù)面子系統(tǒng)上。如果輸出端口在不同的數(shù)據(jù)面子系統(tǒng)上,那么數(shù)據(jù)報(bào)文從接收數(shù)據(jù)報(bào)文的數(shù)據(jù)面子系統(tǒng)轉(zhuǎn)發(fā)到包含輸出端口的數(shù)據(jù)面子系統(tǒng)。
在414處,使用在410中確定的輸出端口將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到下一跳。在報(bào)文去往遠(yuǎn)程系統(tǒng)的情況下,轉(zhuǎn)發(fā)報(bào)文的數(shù)據(jù)面子系統(tǒng)可以將報(bào)文封裝在傳輸協(xié)議(例如,vxlan)中以用于通過物理網(wǎng)絡(luò)運(yùn)送。
在某些實(shí)例中,接收數(shù)據(jù)報(bào)文的數(shù)據(jù)面子系統(tǒng)可能不能夠執(zhí)行為那個(gè)報(bào)文所請(qǐng)求的全套服務(wù)。在該場(chǎng)景中,數(shù)據(jù)面子系統(tǒng)(硬件的或者軟件的)可以由控制面子系統(tǒng)配置以創(chuàng)建服務(wù)鏈,其中創(chuàng)建數(shù)據(jù)面子系統(tǒng)的鏈以用于執(zhí)行多個(gè)服務(wù)。例如,在一個(gè)實(shí)施例中,可以創(chuàng)建服務(wù)鏈,其中第一數(shù)據(jù)面子系統(tǒng)被配置為執(zhí)行第一服務(wù)并且第二數(shù)據(jù)面子系統(tǒng)被配置為執(zhí)行用于數(shù)據(jù)報(bào)文的第二服務(wù)。因此,在一個(gè)場(chǎng)景中,當(dāng)?shù)谝粩?shù)據(jù)面子系統(tǒng)接收數(shù)據(jù)報(bào)文時(shí),它執(zhí)行第一服務(wù)并且然后將報(bào)文轉(zhuǎn)發(fā)到第二數(shù)據(jù)面子系統(tǒng)。第二數(shù)據(jù)面子系統(tǒng)然后執(zhí)行用于報(bào)文的第二服務(wù),確定用于數(shù)據(jù)報(bào)文的輸出端口,并且然后經(jīng)由所確定的輸出端口將報(bào)文轉(zhuǎn)發(fā)到下一跳。服務(wù)鏈可以包括多個(gè)數(shù)據(jù)面子系統(tǒng)。
在第二場(chǎng)景中,當(dāng)?shù)谝粩?shù)據(jù)面子系統(tǒng)接收到數(shù)據(jù)報(bào)文時(shí),它執(zhí)行第一服務(wù)并且然后將報(bào)文或者第二服務(wù)所需要的報(bào)文的一部分轉(zhuǎn)發(fā)到第二數(shù)據(jù)面子系統(tǒng)。第二數(shù)據(jù)面子系統(tǒng)然后執(zhí)行用于報(bào)文的第二服務(wù)并且將報(bào)文返回到第一數(shù)據(jù)面(或者將第二服務(wù)已經(jīng)被執(zhí)行的信號(hào)發(fā)送到第一數(shù)據(jù)面子系統(tǒng))。第一數(shù)據(jù)面子系統(tǒng)然后確定用于數(shù)據(jù)報(bào)文的輸出端口,并且經(jīng)由所確定的輸出端口將報(bào)文轉(zhuǎn)發(fā)到下一跳。
例如,用戶可以具有架頂式(tor,top-of-rack)交換機(jī)并且可能想要與tor交換機(jī)組合運(yùn)行有狀態(tài)的防火墻。tor交換機(jī)可以包括第一數(shù)據(jù)面子系統(tǒng)并且有狀態(tài)的防火墻可以由tor交換機(jī)遠(yuǎn)程的第二數(shù)據(jù)面子系統(tǒng)實(shí)現(xiàn)。第二數(shù)據(jù)面子系統(tǒng)可以例如由云中的虛擬機(jī)執(zhí)行。控制面子系統(tǒng)將通過流條目服務(wù)鏈(flowentryservicechain)對(duì)tor中的數(shù)據(jù)面子系統(tǒng)進(jìn)行編程以將流量中需要有狀態(tài)的防火墻的一部分發(fā)送到遠(yuǎn)離tor運(yùn)行的第二數(shù)據(jù)面子系統(tǒng)以用于處理。該流量然后可以由第二數(shù)據(jù)面子系統(tǒng)轉(zhuǎn)發(fā)到下一跳。
作為另一個(gè)示例,使用多核npu實(shí)現(xiàn)的硬件數(shù)據(jù)面子系統(tǒng)可以能夠執(zhí)行多協(xié)議標(biāo)簽交換(mpls)。因此,如果接收到的數(shù)據(jù)報(bào)文必須使用mpls進(jìn)行轉(zhuǎn)發(fā),那么硬件數(shù)據(jù)面子系統(tǒng)能夠處置報(bào)文轉(zhuǎn)發(fā)并且轉(zhuǎn)發(fā)可以在硬件層處發(fā)生而不需要來自任何其他數(shù)據(jù)面子系統(tǒng)的任何幫助。然而,如果接收到的數(shù)據(jù)報(bào)文還要針對(duì)有狀態(tài)的防火墻或者針對(duì)深度報(bào)文內(nèi)省(dpi,deeppacketintrospection)服務(wù)而被處理,那么硬件數(shù)據(jù)面可以將報(bào)文發(fā)送到被配置為提供這些服務(wù)的軟件數(shù)據(jù)面子系統(tǒng)。一旦報(bào)文已經(jīng)由軟件數(shù)據(jù)面子系統(tǒng)針對(duì)這些另外的服務(wù)處理,數(shù)據(jù)報(bào)文就可以由軟件數(shù)據(jù)面子系統(tǒng)返回到硬件數(shù)據(jù)面子系統(tǒng),并且硬件數(shù)據(jù)面子系統(tǒng)然后可以使用mpls將報(bào)文轉(zhuǎn)發(fā)到下一跳。類似的框架也可以用于提供qos服務(wù),其中硬件數(shù)據(jù)面子系統(tǒng)將接收到的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到軟件數(shù)據(jù)面子系統(tǒng)用于執(zhí)行與qos有關(guān)的處理,并且然后數(shù)據(jù)報(bào)文由硬件數(shù)據(jù)面子系統(tǒng)轉(zhuǎn)發(fā)。
服務(wù)鏈接使得多個(gè)服務(wù)能夠可能由不同的分布式數(shù)據(jù)面子系統(tǒng)(硬件數(shù)據(jù)面子系統(tǒng)或者軟件數(shù)據(jù)面子系統(tǒng))在數(shù)據(jù)報(bào)文上執(zhí)行。路由器100的分布式性質(zhì)使得能夠以靈活的方式啟用并且執(zhí)行服務(wù)鏈接。分布式路由器體系結(jié)構(gòu)允許通用性,使得硬件數(shù)據(jù)面可以利用一個(gè)或多個(gè)軟件數(shù)據(jù)面子系統(tǒng)或者其他硬件數(shù)據(jù)面子系統(tǒng)的能力。類似地,軟件數(shù)據(jù)面子系統(tǒng)可以利用一個(gè)或多個(gè)其他軟件數(shù)據(jù)面子系統(tǒng)或者其他硬件數(shù)據(jù)面子系統(tǒng)的能力。
在某些實(shí)施例中,可以預(yù)先處理到達(dá)與硬件數(shù)據(jù)面子系統(tǒng)相關(guān)聯(lián)的端口的數(shù)據(jù)報(bào)文以確定該報(bào)文或者該報(bào)文的某些方面是否應(yīng)當(dāng)使用硬件數(shù)據(jù)面子系統(tǒng)進(jìn)行處理或者該報(bào)文是否應(yīng)當(dāng)被傳輸?shù)杰浖?shù)據(jù)面子系統(tǒng)以用于進(jìn)一步的處理。如果該報(bào)文應(yīng)當(dāng)被傳輸?shù)杰浖?shù)據(jù)面子系統(tǒng)以用于進(jìn)一步的處理,則數(shù)據(jù)報(bào)文可以被轉(zhuǎn)發(fā)到軟件數(shù)據(jù)面子系統(tǒng),否則該報(bào)文可以完全由硬件數(shù)據(jù)面子系統(tǒng)處理。
圖5例示根據(jù)本發(fā)明的實(shí)施例的用于分布式路由器的不同組件的處理資源的示例實(shí)現(xiàn)和使用。路由器500包括控制面子系統(tǒng)518、軟件數(shù)據(jù)面子系統(tǒng)520和硬件數(shù)據(jù)面子系統(tǒng)522的實(shí)例。圖5中描繪的各個(gè)子系統(tǒng)可以彼此遠(yuǎn)程的放置并且經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)彼此耦合。圖5中描繪的實(shí)施例僅是示例;可以實(shí)現(xiàn)若干其他配置而不背離本公開的范圍。例如,分配給控制面子系統(tǒng)或者數(shù)據(jù)面子系統(tǒng)面的核的數(shù)量可以是靜態(tài)的或者可變的。
控制面子系統(tǒng)518分配有處理器核c0502、c1504和c2506并由這些處理器核執(zhí)行??刂泼孀酉到y(tǒng)518經(jīng)由控制信道與軟件數(shù)據(jù)面子系統(tǒng)520和硬件數(shù)據(jù)面子系統(tǒng)522通信。軟件數(shù)據(jù)面子系統(tǒng)520分配有核c3508、c4510和c5512并由這些核執(zhí)行。分配給子系統(tǒng)的核可以來自一個(gè)或多個(gè)處理器。
軟件數(shù)據(jù)面子系統(tǒng)520可以使用諸如pcie互連的互連514耦合到硬件數(shù)據(jù)面子系統(tǒng)522。在一些實(shí)例中,硬件數(shù)據(jù)面子系統(tǒng)522可以包括用于接收以及轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的(一個(gè)或多個(gè))硬件網(wǎng)絡(luò)元件516。
在一個(gè)實(shí)施例中,控制面子系統(tǒng)518和/或軟件數(shù)據(jù)面子系統(tǒng)520可以在由路由器500執(zhí)行的虛擬機(jī)內(nèi)執(zhí)行。分配給這些虛擬機(jī)的處理、存儲(chǔ)器和聯(lián)網(wǎng)資源可以取決于需求動(dòng)態(tài)地改變。另外的控制面子系統(tǒng)或者軟件數(shù)據(jù)面子系統(tǒng)可以例如通過執(zhí)行用于將要添加的子系統(tǒng)的另外的虛擬機(jī)而添加到路由器500。新添加的子系統(tǒng)然后可以與現(xiàn)有的子系統(tǒng)通信。以這種方式,控制面子系統(tǒng)和軟件數(shù)據(jù)面子系統(tǒng)可以動(dòng)態(tài)地添加到路由器500。
另外的硬件數(shù)據(jù)面子系統(tǒng)也可以被添加到路由器500。新添加的硬件數(shù)據(jù)面子系統(tǒng)然后可以使用控制信道與控制面子系統(tǒng)動(dòng)態(tài)地通信以及使用pcie互連514與軟件數(shù)據(jù)面子系統(tǒng)動(dòng)態(tài)地通信。以這種方式,可以動(dòng)態(tài)地添加(或者移除)路由器500的各個(gè)子系統(tǒng)。
圖6是根據(jù)本發(fā)明的實(shí)施例的可以用來執(zhí)行分布式路由器的各個(gè)組件或者子系統(tǒng)的計(jì)算系統(tǒng)或者設(shè)備600的簡(jiǎn)化框圖。在一些實(shí)施例中,計(jì)算系統(tǒng)600被配置為實(shí)現(xiàn)上面描述的方法中的任何方法。例如,像計(jì)算機(jī)系統(tǒng)600這樣的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以用來執(zhí)行分布式路由器的一個(gè)或多個(gè)子系統(tǒng),諸如控制器102、一個(gè)或多個(gè)控制面子系統(tǒng)104以及一個(gè)或多個(gè)軟件數(shù)據(jù)面子系統(tǒng)108。
計(jì)算機(jī)系統(tǒng)600可以是各種類型的,包括但不限于個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、工作站、網(wǎng)絡(luò)計(jì)算機(jī)、大型機(jī)、自助服務(wù)終端、pda、蜂窩電話或者任何其他數(shù)據(jù)處理系統(tǒng)。由于計(jì)算機(jī)和網(wǎng)絡(luò)的不斷變化的性質(zhì),圖6中描繪的對(duì)計(jì)算機(jī)系統(tǒng)600的描述僅旨在作為具體示例,以用于例示計(jì)算機(jī)系統(tǒng)的優(yōu)選實(shí)施例的目的。比圖6中描繪的系統(tǒng)具有更多或者更少組件的許多其他配置是可能的。
計(jì)算機(jī)系統(tǒng)600被示為包括可以經(jīng)由總線605以電氣方式耦合的硬件元件。硬件元件可以包括一個(gè)或多個(gè)處理器610、一個(gè)或多個(gè)輸入設(shè)備615、一個(gè)或多個(gè)輸出設(shè)備620、通信子系統(tǒng)630和存儲(chǔ)子系統(tǒng)640??偩€子系統(tǒng)605提供讓計(jì)算機(jī)系統(tǒng)600的各個(gè)組件和子系統(tǒng)按照意圖彼此通信的機(jī)制。雖然總線子系統(tǒng)605示意性地示為單個(gè)總線,但是總線子系統(tǒng)的替代實(shí)施例可以利用多個(gè)總線。
處理器610表示計(jì)算機(jī)系統(tǒng)600的處理資源并且可以包括但不局限于一個(gè)或多個(gè)通用處理器和/或一個(gè)或多個(gè)專用處理器(諸如數(shù)字信號(hào)處理芯片、圖形加速處理器等)。處理器610可以包括一個(gè)或多個(gè)多核處理器。
輸入設(shè)備615可以包括用于提供輸入到計(jì)算機(jī)系統(tǒng)600的一個(gè)或多個(gè)不同機(jī)制,諸如但不限于鼠標(biāo)、鍵盤、觸摸板、平板等。輸出設(shè)備620可以包括用于從計(jì)算機(jī)系統(tǒng)600輸出信息的一個(gè)或多個(gè)不同機(jī)制,諸如但不限于顯示單元、打印機(jī)等。
計(jì)算機(jī)系統(tǒng)600也可以包括通信子系統(tǒng)630,通信子系統(tǒng)630便于往來計(jì)算機(jī)系統(tǒng)600的通信。通信子系統(tǒng)630可以包括但不限于調(diào)制解調(diào)器、網(wǎng)卡(無線或者有線)、紅外通信設(shè)備、無線通信設(shè)備和/或芯片集(諸如
存儲(chǔ)子系統(tǒng)640提供用于存儲(chǔ)可以由一個(gè)或多個(gè)處理器610執(zhí)行的信息和代碼(指令)的非臨時(shí)性介質(zhì)。例如,存儲(chǔ)子系統(tǒng)640可以被配置為存儲(chǔ)提供本發(fā)明的實(shí)施例的功能性的基本編程和數(shù)據(jù)構(gòu)造。根據(jù)本發(fā)明的實(shí)施例,實(shí)現(xiàn)本發(fā)明的功能性的軟件代碼指令或者模塊可以存儲(chǔ)在存儲(chǔ)子系統(tǒng)640中。這些軟件模塊可以由(一個(gè)或多個(gè))處理器610執(zhí)行。存儲(chǔ)子系統(tǒng)640也可以提供用于存儲(chǔ)根據(jù)本發(fā)明使用的數(shù)據(jù)的貯存庫。存儲(chǔ)子系統(tǒng)640可以包括存儲(chǔ)器子系統(tǒng)642以及文件/盤存儲(chǔ)子系統(tǒng)644。
存儲(chǔ)器子系統(tǒng)642可以包括許多存儲(chǔ)器,諸如用于在程序執(zhí)行期間存儲(chǔ)指令和數(shù)據(jù)的主隨機(jī)存取存儲(chǔ)器(ram)、在其中存儲(chǔ)固定指令的只讀存儲(chǔ)器(rom)、閃存存儲(chǔ)器等。各種軟件元件可以位于系統(tǒng)存儲(chǔ)器642內(nèi),這些軟件元件諸如操作系統(tǒng)646、設(shè)備驅(qū)動(dòng)器、可執(zhí)行庫和/或其他代碼,諸如一個(gè)或多個(gè)應(yīng)用程序648,如這里所描述的,這些軟件元件可以包括由各種實(shí)施例提供的計(jì)算機(jī)程序,和/或可以被設(shè)計(jì)為實(shí)現(xiàn)由其他實(shí)施例提供的方法,和/或配置由其他實(shí)施例提供的系統(tǒng)。
文件存儲(chǔ)子系統(tǒng)644為程序和數(shù)據(jù)文件提供持久的(非易失性)存儲(chǔ),并且可以包括硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器連同相關(guān)聯(lián)的可移除介質(zhì)、壓縮盤只讀存儲(chǔ)器(cd-rom)驅(qū)動(dòng)器、光學(xué)驅(qū)動(dòng)器、可移除介質(zhì)盒、本地和/或網(wǎng)絡(luò)可訪問的存儲(chǔ)裝置以及其他類似的存儲(chǔ)介質(zhì)。
本文所使用的術(shù)語“機(jī)器可讀介質(zhì)”和“計(jì)算機(jī)可讀介質(zhì)”指參與提供使得機(jī)器以具體的方式操作的數(shù)據(jù)的任何非臨時(shí)性介質(zhì)。在使用計(jì)算機(jī)系統(tǒng)600實(shí)現(xiàn)的實(shí)施例中,各種計(jì)算機(jī)可讀介質(zhì)可以涉及提供指令/代碼到(一個(gè)或多個(gè))處理器610以用于執(zhí)行,和/或可以被用來存儲(chǔ)這種指令/代碼。計(jì)算機(jī)可讀介質(zhì)可以采取諸如非易失性介質(zhì)和易失性介質(zhì)的許多形式。
上面討論的方法、系統(tǒng)和設(shè)備是示例。在適當(dāng)?shù)臅r(shí)候,各種實(shí)施例可以省略、替換或者添加各種過程或者組件。例如,在替代配置中,所描述的方法可以按照與所描述的不同的次序來執(zhí)行,和/或可以添加、省略和/或組合各種階段。關(guān)于某些實(shí)施例而描述的特征可以在各種其他實(shí)施例中組合??梢砸灶愃频姆绞浇M合實(shí)施例的不同方面和元件。技術(shù)在發(fā)展,并且因此元件中的許多是示例,這些示例并不將本公開的范圍限制于這些具體示例。
在描述中給出具體細(xì)節(jié)以提供對(duì)實(shí)施例的透徹理解。然而,實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。例如,眾所周知的電路、處理、算法、結(jié)構(gòu)和技術(shù)在沒有不必要的細(xì)節(jié)的情況下示出,以便避免模糊實(shí)施例。本描述僅提供示例實(shí)施例,并且不旨在限制本發(fā)明的范圍、可適用性或者配置。然而,對(duì)實(shí)施例的前面的描述將向本領(lǐng)域技術(shù)人員提供實(shí)現(xiàn)本發(fā)明的實(shí)施例的實(shí)現(xiàn)性描述??梢栽谠墓δ芎筒贾弥凶龀龈鞣N改變而不背離本發(fā)明的精神和范圍。
雖然已經(jīng)描述了本發(fā)明的具體實(shí)施例,但是各種修改、替代、替代構(gòu)造和等同物也涵蓋在本發(fā)明的范圍內(nèi)。本發(fā)明的實(shí)施例不限于在某些具體的數(shù)據(jù)處理環(huán)境內(nèi)的操作,而是可以自由地在多個(gè)數(shù)據(jù)處理環(huán)境內(nèi)操作。另外,雖然已經(jīng)使用特定系列的事務(wù)和步驟描述了某些實(shí)施例,但是對(duì)本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)清楚的是,本發(fā)明的范圍不限于所描述的事務(wù)和步驟系列。雖然一些流程圖將操作描述為順序過程,但是這些操作中的許多可以并行地或者并發(fā)地執(zhí)行。另外,可以重新布置操作的次序。過程可以具有沒有包括在圖中的另外的步驟。
此外,雖然已經(jīng)使用硬件和軟件的特定組合描述了某些實(shí)施例,但是應(yīng)當(dāng)認(rèn)識(shí)到,硬件和軟件的其他組合也在本發(fā)明的范圍內(nèi)。本發(fā)明的某些實(shí)施例可以僅在硬件中實(shí)現(xiàn)、或者僅在軟件(例如,代碼程序、固件、中間件、微碼等)中實(shí)現(xiàn)或者使用它們的組合實(shí)現(xiàn)。本文描述的各種過程可以以任何組合在相同的處理器或者不同的處理器上實(shí)現(xiàn)。因此,在組件或者模塊被描述為被配置為執(zhí)行某些操作的情況下,這種配置可以例如通過設(shè)計(jì)電子電路執(zhí)行操作、通過對(duì)可編程電子電路(諸如微處理器)進(jìn)行編程以執(zhí)行操作(諸如通過執(zhí)行計(jì)算機(jī)指令或者代碼)或者其任何組合來完成。進(jìn)程可以使用各種技術(shù)來通信,這些技術(shù)包括但不限于用于進(jìn)程間通信的常規(guī)技術(shù),并且不同的進(jìn)程對(duì)可以使用不同的技術(shù),或者相同的進(jìn)程對(duì)可以在不同的時(shí)間使用不同的技術(shù)。
因此,說明書和附圖應(yīng)在例示性而不是限制性的意義上看待。然而,將明顯的是,可以在那里進(jìn)行添加、刪減、刪除和其他修改和改變而不背離如在權(quán)利要求中闡述的更廣泛的精神和范圍。因此,雖然已經(jīng)描述了具體的發(fā)明實(shí)施例,但是這些發(fā)明實(shí)施例不旨在是限制性的。各種修改和等同物都在下面的權(quán)利要求的范圍內(nèi)。