隧道加速端點(diǎn)130、155、150位于以太網(wǎng)110上,隧道加速端點(diǎn)135、140和隧道端點(diǎn)145位于以太網(wǎng)115上,以太網(wǎng)110、115通過路由器120進(jìn)行IP報(bào)文三層轉(zhuǎn)發(fā)。
[0047]如圖1所示,當(dāng)隧道加速端點(diǎn)130、155收到指令建立一條基于UDP封裝的VXLAN隧道時(shí),它們會(huì)開始建立基于以太網(wǎng)封裝的VXLAN隧道的過程,由于130、155位于同一個(gè)以太網(wǎng)廣播域110,最終基于以太網(wǎng)封裝的VXLAN隧道會(huì)建立成功用于替換基于UDP的VXLAN隧道,從而大大提升網(wǎng)絡(luò)帶寬利用率和性能,同時(shí)由于VXLAN所有的元數(shù)據(jù)也包含在以太網(wǎng)隧道中,基于隧道的網(wǎng)絡(luò)解決方案不用任何的業(yè)務(wù)邏輯修改。
[0048]如圖1所示,當(dāng)隧道加速端點(diǎn)130和135收到指令建立一條基于UDP封裝的VXLAN時(shí),由于兩隧道端點(diǎn)不在同一以太網(wǎng)廣播域,基于以太網(wǎng)封裝的VXLAN無法建立,還是會(huì)繼續(xù)使用基于m)P封裝的VXLAN隧道。
[0049]如圖1所示,當(dāng)隧道加速端點(diǎn)140和隧道端點(diǎn)145收到建立一條基于UDP封裝的VXLAN時(shí),由于隧道端點(diǎn)145不支持VXLAN隧道在以太網(wǎng)封裝,最終還是會(huì)使用基于UDP封裝的VXLAN隧道。該方法保證了很好的與非隧道加速端點(diǎn)的兼容性。
[0050]圖2從概念上描述了根據(jù)本發(fā)明各種實(shí)施例的隧道加速端點(diǎn)的模塊圖,在隧道端點(diǎn)的基礎(chǔ)上,增加了以太網(wǎng)封裝解封裝器205,以太網(wǎng)隧道控制器210,以及以太網(wǎng)隧道檢測(cè)器216。各種隧道類型的解釋器不用任何修改。以太網(wǎng)封裝解封裝器205用于對(duì)數(shù)據(jù)鏈路上的以太網(wǎng)封裝隧道報(bào)文進(jìn)行封裝和解封裝。以太網(wǎng)隧道控制器210用于發(fā)送、接收和處理以太網(wǎng)隧道控制報(bào)文,維護(hù)所有以太網(wǎng)隧道的狀態(tài),并接收用于日常維護(hù)的命令如以太網(wǎng)隧道重建連接,終止以太網(wǎng)隧道等。以太網(wǎng)隧道檢測(cè)器216通過BFD在以太網(wǎng)的封裝用于周期性檢測(cè)隧道的連通性。
[0051]圖3描述了根據(jù)本發(fā)明各種實(shí)施例的VXLAN、NVGRE, GRE以及GENEVE的以太網(wǎng)封裝格式,其中以太網(wǎng)VXLAN類型305、以太網(wǎng)NVGRE類型310、以太網(wǎng)GRE類型315和以太網(wǎng)GENEVE類型320還未從IEEE RAC獲得,建議將這些類型實(shí)現(xiàn)為可配置的。
[0052]在本實(shí)施例中,以太網(wǎng)隧道的自動(dòng)建立、切換過程通過在隧道端點(diǎn)間交互以太網(wǎng)隧道控制報(bào)文實(shí)現(xiàn),控制報(bào)文包括連接請(qǐng)求、連接確認(rèn)和連接拒絕報(bào)文。
[0053]圖4描述了以太網(wǎng)隧道控制報(bào)文格式。以太網(wǎng)隧道控制報(bào)文類型425還未從IEEERAC獲得,建議將該類型實(shí)現(xiàn)為可配置的。
[0054]vers1n字段435 (2比特):版本信息。
[0055]長(zhǎng)度字段440 (6比特):以4字節(jié)的倍數(shù)標(biāo)示整個(gè)控制報(bào)文的長(zhǎng)度,控制報(bào)文最長(zhǎng)為256字節(jié)。該長(zhǎng)度包含控制報(bào)文報(bào)頭長(zhǎng)度,未4字節(jié)對(duì)齊的以O(shè)補(bǔ)齊。
[0056]隧道類型445 (4 比特):I 為 VXLAN,2 為 NVGRE,3 為 GRE,4 為 GENEVE。
[0057]REQ位460 (I比特):標(biāo)示該控制報(bào)文為連接請(qǐng)求報(bào)文。
[0058]ACK位455 (I比特):標(biāo)示該控制報(bào)文為連接確認(rèn)報(bào)文。
[0059]RST位450 (I比特):標(biāo)示該控制報(bào)文為連接拒絕報(bào)文。
[0060]REQ位與ACK位可以出現(xiàn)在同一控制報(bào)文中,RST不能與REQ或ACK位出現(xiàn)在同一控制報(bào)文中。
[0061]TLV opt1ns字段465:用于攜帶可變長(zhǎng)的選項(xiàng)。
[0062]圖5描述了以太網(wǎng)隧道控制報(bào)文的TLV選項(xiàng)格式。
[0063]type字段505 (4比特):標(biāo)示選項(xiàng)類型。
[0064]length字段510 (4比特):標(biāo)示可變長(zhǎng)value字段515的長(zhǎng)度,最長(zhǎng)為16字節(jié)。可變長(zhǎng)value (可變長(zhǎng)):包含該選項(xiàng)的數(shù)據(jù)。
[0065]以上描述了以太網(wǎng)隧道封裝格式以及以太網(wǎng)隧道控制協(xié)議格式,接下來將描述以太網(wǎng)隧道創(chuàng)建的相關(guān)過程。
[0066]圖6描述了根據(jù)本發(fā)明實(shí)施例的隧道創(chuàng)建流程。過程600從配置隧道端點(diǎn)IP(605)開始,然后開始創(chuàng)建隧道,指定隧道類型和對(duì)端IP (610)。VXLAN、NVGRE, GRE和GENEVE基于IP或UDP封裝的隧道建立只是一個(gè)配置過程,無需隧道端點(diǎn)之間交換任何控制報(bào)文,所以經(jīng)過步驟610,該類型基于IP或UDP的隧道實(shí)際已建立完成。接下來如果該隧道端點(diǎn)支持該隧道類型的以太網(wǎng)封裝(615),則會(huì)開始對(duì)應(yīng)類型的以太網(wǎng)隧道的創(chuàng)建流程(625)。如果還有多條隧道建立(620),則重復(fù)該過程回到步驟610。由此也可以看出,該流程對(duì)隧道使用者完全透明,其創(chuàng)建隧道的過程與無以太網(wǎng)加速之前完全一樣。
[0067]圖7、8描述了根據(jù)本發(fā)明實(shí)施例的以太網(wǎng)隧道控制器維護(hù)的內(nèi)部狀態(tài)表。
[0068]圖7描述本地以太網(wǎng)隧道控制器支持的基于以太網(wǎng)封裝的隧道類型。如表700所示,該隧道控制器支持VXLAN、NVGRE和GENEVE三種隧道類型基于以太網(wǎng)的封裝,該表用于步驟615判斷是否進(jìn)入以太網(wǎng)隧道創(chuàng)建流程。
[0069]圖8描述了以太網(wǎng)隧道控制器如何管理以太網(wǎng)隧道的狀態(tài)。每一條經(jīng)過步驟625的以太網(wǎng)隧道都會(huì)在該表中維護(hù)對(duì)應(yīng)的一條記錄,當(dāng)隧道被刪除時(shí),該表中相應(yīng)的記錄也會(huì)被刪除。
[0070]隧道類型(805):標(biāo)示隧道類型。
[0071]對(duì)端IP (810):隧道對(duì)端IP地址。
[0072]同子網(wǎng)(815):標(biāo)示對(duì)端是否與本端在同一子網(wǎng),這是隧道控制器根據(jù)本地路由表計(jì)算得到。如果不為同一子網(wǎng),則不會(huì)繼續(xù)以太網(wǎng)隧道的創(chuàng)建,該記錄余下的字段都為N/A,除了是否使用(850)列為否,如記錄875所示。
[0073]對(duì)端MAC (820):標(biāo)示對(duì)端MAC地址,隧道控制器先查詢本地ARP緩存是否有對(duì)端IP地址的條目,如果沒有,則會(huì)主動(dòng)發(fā)出ARP請(qǐng)求以獲得MAC地址。當(dāng)網(wǎng)絡(luò)中存在ARP proxy時(shí),可能會(huì)存在多條記錄具有相同的對(duì)端MAC,這不影響隧道控制器的正確性,因?yàn)樗淼揽刂破鞑粫?huì)收到含有該MAC地址為源地址的以太網(wǎng)隧道控制報(bào)文。
[0074]模式(825):標(biāo)示隧道的工作模式,主要給管理員提供額外手段用于手動(dòng)切換或重建隧道。
[0075]“強(qiáng)制不允許”表示該隧道不再進(jìn)行以太網(wǎng)隧道加速,如記錄865所示,該記錄余下字段都為N/A,除了是否使用(850)列為否。
[0076]“強(qiáng)制允許”表示不經(jīng)過協(xié)商過程強(qiáng)制建立以太網(wǎng)隧道,該記錄余下字段都為N/A,除了鏈路狀態(tài)(845)列會(huì)顯示隧道連接檢測(cè)結(jié)果,是否使用(850)列為“是”,如記錄870所不O
[0077]本實(shí)施例中的“強(qiáng)制允許”和“強(qiáng)制不允許”模式給系統(tǒng)管理員提供了一種調(diào)試、維護(hù)手段。
[0078]“協(xié)商一次”表示會(huì)為該隧道進(jìn)行一次主動(dòng)隧道建立過程,如果失敗不再嘗試。主動(dòng)建立失敗的隧道還會(huì)接收對(duì)端發(fā)來的建立請(qǐng)求,這種情況下以太網(wǎng)隧道還是可能會(huì)成功建立。第一次主動(dòng)建立以太網(wǎng)隧道失敗可能是因?yàn)樵谒淼纼啥私邮盏絼?chuàng)建隧道指令的異步過程造成的超時(shí)。這種模式下,嘗試間隔(830)列為N/A,如記錄860所示。
[0079]“周期嘗試”表示如果隧道狀態(tài)為CLOSED狀態(tài),在嘗試間隔(830)標(biāo)示的時(shí)間后會(huì)重新嘗試建立以太網(wǎng)隧道。如記錄855所示。
[0080]“協(xié)商一次”與“周期嘗試”模式的選擇主要取決于對(duì)物理以太網(wǎng)可靠性的判斷?!皡f(xié)商一次”模式可以避免隧道加速端點(diǎn)重復(fù)性的嘗試與非隧道加速端點(diǎn)建立以太網(wǎng)隧道,但如果正好在建立過程中以太網(wǎng)出現(xiàn)故障,以太網(wǎng)隧道將無法建立。采用“周期嘗試”模式會(huì)導(dǎo)致不必要的重試,但控制報(bào)文數(shù)量非常少,對(duì)于網(wǎng)絡(luò)的影響幾乎可以忽略。
[0081]嘗試周期(830):標(biāo)示重新發(fā)起建立以太網(wǎng)隧道的時(shí)間間隔,只在模式(825)為“周期嘗試”的情況下有效,如記錄855所示。
[0082]握手狀態(tài)(835):標(biāo)示自動(dòng)協(xié)商建立以太網(wǎng)隧道的狀態(tài),具體狀態(tài)在狀態(tài)機(jī)(900)中有詳細(xì)描述。
[0083]切換窗口結(jié)束(840):標(biāo)示從隧道狀態(tài)為ESTABLISHED開始的切換窗口時(shí)間是否超時(shí),在該切換窗口時(shí)間內(nèi),該隧道端點(diǎn)將同時(shí)接收IP或UDP的封裝以及以太網(wǎng)的封裝,該窗口結(jié)束后,只接收以太網(wǎng)的封裝,如果還收到IP或UDP的封裝,視為兩隧道端點(diǎn)狀態(tài)不同步,開始新一輪以太網(wǎng)隧道創(chuàng)建過程。
[0084]鏈路狀態(tài)(845):顯示以太網(wǎng)隧道鏈路檢測(cè)器返回的結(jié)果。
[0085]是否使用(850):用于表明該隧道是否可用,“強(qiáng)制允許”模式的隧道該字段一直為“是”,“周期嘗試”和“協(xié)商一次”模式的隧道,只有當(dāng)握手狀態(tài)(835)為ESTABLISHED時(shí),該字段才為“是”。
[0086