一種報文轉發(fā)方法及設備的制作方法
【專利摘要】本發(fā)明公開了一種報文轉發(fā)方法及設備,在大二層網絡的控制平面,各個節(jié)點設備通過一可達大二層網絡中所有節(jié)點設備的廣播樹,將新學習到的本地MAC地址以及該MAC地址所屬的VLAN通告給其他節(jié)點設備;節(jié)點設備從該廣播樹接收其他節(jié)點設備通告的其他節(jié)點設備的本地MAC地址,并根據預先基于該大二層網絡協(xié)議生成的大二層網絡轉發(fā)表項,生成原始MAC地址轉發(fā)表項;在大二層網絡的數據平面,節(jié)點設備接收到單播數據報文后,根據該單播數據報文的目的MAC地址及所屬VLAN,在該原始MAC地址轉發(fā)表項中進行匹配,并通過匹配表項的出接口直接轉發(fā)該單播數據報文而不進行大二層網絡協(xié)議封裝。在本發(fā)明中,實現了基于大二層網絡的L2單播流量轉發(fā)。
【專利說明】一種報文轉發(fā)方法及設備
【技術領域】
[0001] 本發(fā)明涉及通信領域的組播技術,尤其涉及一種報文轉發(fā)方法及設備。
【背景技術】
[0002] 傳統(tǒng)的三層數據中心架構中采用STP (Spanning Tree Protocol,生成樹協(xié)議)來 優(yōu)化客戶端到服務器的路徑和支持連接冗余。由于STP的收斂性能等原因,一般情況下STP 的網絡規(guī)模不會超過100臺交換機。同時由于STP需要阻塞冗余設備和鏈路,也降低了網 絡資源帶寬利用率。傳統(tǒng)的基于STP備份設備和鏈路方案已經不能滿足數據中心規(guī)模、帶 寬的需求,并且STP協(xié)議幾秒至幾分鐘的故障收斂時間,也不能滿足數據中心的可靠性要 求。因此,需要能夠有新的技術,在滿足二層網絡規(guī)模的同時,也能夠充分利用冗余設備和 鏈路,提升鏈路利用率,而且數據中心的故障收斂時間能夠降低到亞秒甚至毫秒級。
[0003] 虛擬化能夠有效地提高服務器的利用率,降低能源消耗,降低客戶的運維成本,所 以虛擬化技術得到了極大的發(fā)展。虛擬化給數據中心帶來的不僅是服務器利用率的提高, 還有網絡架構的變化。虛擬機(Virtual Machine, VM)遷移技術可以使數據中心的計算資 源得到靈活的調配,進一步提高虛擬機資源的利用率。但是虛擬機遷移要求虛擬機遷移前 后的IP和MAC (Media Access Control,介質訪問控制)地址不變,這就需要虛擬機遷移前 后的網絡處于同一個二層域內部。由于客戶要求虛擬機遷移的范圍越來越大,甚至是跨越 不同地域、不同機房之間的遷移,所以使得數據中心二層網絡的范圍越來越大,甚至出現了 大規(guī)模二層網絡(下文中簡稱為大二層網絡)這一新領域專題。
[0004] 隧道技術能夠實現覆蓋多個接入交換機和核心交換機的數據中心內的大二層網 絡。隧道技術的典型代表是 TRILL (TRansparent Interconnection of Lots of Links, 多鏈路透明互聯)和SPB (Shortest Path Bridging,最短路徑橋)技術,兩者均是通過借用 IS-IS (Intermediate System to Intermediate System,中間系統(tǒng)到中間系統(tǒng))路由協(xié)議 的計算和轉發(fā)模式,實現二層網絡的大規(guī)模擴展。這些技術目前正在標準化過程中,同時傳 統(tǒng)交換機不僅需要軟件升級,還需要硬件支持。
[0005] 現有大二層組網技術中,L2單播/廣播流量需要進行大二層協(xié)議封裝后轉發(fā),當 大二層組網技術與其他技術共存組網時對芯片要求較高,如802. IBr技術和Trill技術共 存組網時,報文從802. IBr封裝進入Trill網絡時,需要先去掉802. IBr的E-tag封裝,再換 成Trill封裝;反向從Trill網絡進入802. IBr網絡時,需要去掉Trill封裝,再換成E-tag 封裝。當前商用芯片支持不了在一個pipeline處理以上流程,即無法在一個pipeline中 對報文先去掉E-tag封裝(Trill封裝),再換成Trill封裝(E-tag封裝)的流程,限制了 Trill/802. IBr等技術的實際部署。
[0006] 現有技術中,當大二層組網技術和其他技術共存組網時,通常采用在芯片上設鉻 回環(huán)口的方式,將添加/刪除完一種封裝的流量經回環(huán)口再次送入芯片進行二次處理,添 加/刪除另外一種封裝。其中,802. IBr技術與Trill技術共存組網時處理流程可以如圖1 所示。
[0007] 現有技術中,大二層組網技術和其他技術共存組網時的處理方式,需要額外配鉻 回環(huán)口,浪費設備端口,同時回環(huán)口成為系統(tǒng)的轉發(fā)瓶頸,性能低,延遲大。
【發(fā)明內容】
[0008] 本發(fā)明實施例提供一種報文轉發(fā)方法及設備,用以使大二層網絡設備轉發(fā)L2單 播/廣播流量。
[0009] 為了達到以上目的,本發(fā)明實施例提供了一種報文轉發(fā)方法,應用于多個節(jié)點設 備基于大二層網絡協(xié)議組建的大二層網絡中,該方法包括:
[0010] 各個節(jié)點設備通過一可達所述大二層網絡中的所有節(jié)點設備的廣播樹,將新學習 到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備,所述本地MAC地址包括從本設備連 接的用戶網絡側學習到的MAC地址;
[0011] 所述節(jié)點設備從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié)點設備新學 習到的第一 MAC地址以及所屬第一 VLAN后,根據所述其他節(jié)點設備的大二層網絡標識,查 詢預先基于所述大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所述其他節(jié)點設備對應的 出接口,進而生成所述第一 MAC地址對應的原始MAC地址轉發(fā)表項,其中,所述原始MAC地 址轉發(fā)表項中的VLAN為所述第一 VLAN、目的MAC地址為所述第一 MAC地址、出接口為所述 其他節(jié)點設備對應的出接口;
[0012] 所述節(jié)點設備接收到單播數據報文后,根據所述單播數據報文的目的MAC地址及 所屬VLAN,在所述原始MAC地址轉發(fā)表項中進行匹配,并通過匹配表項的出接口直接轉發(fā) 所述單播數據報文而不進行大二層網絡協(xié)議封裝。
[0013] 其中,所述根據所述其他節(jié)點設備的大二層網絡標識,查詢預先基于所述大二層 網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所述其他節(jié)點設備對應的出接口,包括 :
[0014] 以所述其他節(jié)點設備的大二層網絡標識為目的節(jié)點設備,從所述大二層網絡轉發(fā) 表中,查找到所述其他節(jié)點設備的大二層網絡標識對應的轉發(fā)表項;
[0015] 若查找到的轉發(fā)表項中僅包括一個出接口,則將查找到的出接口,作為所述其他 節(jié)點設備對應的出接口;
[0016] 若查找到的轉發(fā)表項中包括兩個以上的出接口,則將該兩個以上的出接口形成一 個聚合端口,并將該聚合端口作為所述其他節(jié)點設備對應的出接口。
[0017] 其中,所述通過匹配表項的出接口直接轉發(fā)所述單播數據報文而不進行大二層網 絡協(xié)議封裝,包括:
[0018] 若匹配表項的出接口為聚合端口,則通過HASH算法選擇所述聚合端口的一個成 員端口,并通過所選擇的成員端口,直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議 封裝。
[0019] 其中,還包括:
[0020] 各個節(jié)點設備還通過所述廣播樹,將發(fā)生老化的本地MAC地址以及所屬VLAN通告 給其他節(jié)點設備;
[0021] 節(jié)點設備從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié)點設備處發(fā)生老 化的第二MAC地址以及所屬VLAN,并從所述原始MAC地址轉發(fā)表項中,刪除所述第二MAC地 址以及所屬VLAN所對應的轉發(fā)表項。
[0022] 其中,各個節(jié)點設備針對自身不同的接口與VLAN的組合,分別配鉻一個對應的 MAC地址池,用于維護在該對應接口上學習到的歸屬于對應VLAN的本地MAC地址;
[0023] 各個節(jié)點設備在新學習到本地MAC地址時,若對應MAC地址池中未包含有該新學 習到的本地MAC地址時,則將新學習到的本地MAC地址增加到MAC地址池中,以及,在本地 MAC地址發(fā)生老化的一段預設時間后,將老化的本地MAC地址從對應MAC地址池中刪除;
[0024] 各個節(jié)點設備,進一步在MAC地址池中增加了新學習到的本地MAC地址時,通過 所述廣播樹,將新學習到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備;以及,在MAC 地址池中刪除了老化的本地MAC地址時,通過所述廣播樹,將老化的本地MAC地址以及所屬 VLAN通告給其他節(jié)點設備。
[0025] 其中,該方法還包括:
[0026] 在節(jié)點設備上設鉻VLAN的廣播域范圍,其中,所述廣播域范圍包括該節(jié)點設備上 允許該VLAN通過的用戶側端口和該節(jié)點設備上的位于該VLAN裁剪樹上的大二層網絡側接 口,所述裁剪樹是基于VLAN對所述廣播樹進行分發(fā)樹的剪枝得到的;
[0027] 節(jié)點設備接收到待廣播數據報文后,確定所述待廣播數據報文所屬VLAN,并在該 VLAN的廣播域范圍所包括的除接收端口外的其他端口上,直接轉發(fā)所述待廣播數據報文而 不進行大二層網絡協(xié)議封裝,其中,所述待廣播數據報文包括未知單播報文、廣播數據報文 和未知組播報文。
[0028] 其中,在所述大二層網絡的網絡拓撲變化,導致大二層網絡轉發(fā)表和/或VLAN裁 剪樹發(fā)生更新后,該方法還包括:
[0029] 所述節(jié)點設備在大二層網絡轉發(fā)表中的轉發(fā)表項的出接口發(fā)生更新時,更新對應 的原始MAC地址轉發(fā)表項的出接口;
[0030] 所述節(jié)點設備在大二層網絡轉發(fā)表中的轉發(fā)表項被刪除時,確定被刪除的轉發(fā)表 項的目的節(jié)點設備以及歸屬于該目的節(jié)點設備的本地MAC地址,進而刪除該目的節(jié)點設備 的本地MAC地址對應的原始MAC地址轉發(fā)表項;
[0031 ] 所述節(jié)點設備在VLAN裁剪樹發(fā)生更新后,根據更新后的VLAN裁剪樹,重新設鉻對 應VLAN的廣播域范圍。
[0032] 本發(fā)明實施例還提供了一種大二層網絡設備,作為節(jié)點設備應用于多個節(jié)點設備 基于大二層網絡協(xié)議組建的大二層網絡,該大二層網絡設備包括:
[0033] 地址管理模塊,用于通過一可達所述大二層網絡中的所有節(jié)點設備的廣播樹,將 所述大二層網絡設備新學習到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備,所述本 地MAC地址包括從本設備連接的用戶網絡側學習到的MAC地址;
[0034] 表項維護模塊,用于在所述大二層網絡設備從所述廣播樹上接收其他節(jié)點設備通 告的所述其他節(jié)點設備新學習到的第一 MAC地址以及所屬第一 VLAN后,根據所述其他節(jié)點 設備的大二層網絡標識,查詢預先基于所述大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確 定所述其他節(jié)點設備對應的出接口,進而生成所述第一 MAC地址對應的原始MAC地址轉發(fā) 表項,其中,所述原始MAC地址轉發(fā)表項中的VLAN為所述第一 VLAN、目的MAC地址為所述第 一 MAC地址、出接口為所述所述其他節(jié)點設備對應的出接口;
[0035] 報文轉發(fā)模塊,用于在所述大二層網絡設備接收到單播數據報文后,根據所述單 播數據報文的目的MAC地址及所屬VLAN,在所述原始MAC地址轉發(fā)表項中進行匹配,并通過 匹配表項的出接口直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議封裝。
[0036] 其中,所述表項維護模塊具體用于,通過以下方式實現根據所述其他節(jié)點設備的 大二層網絡標識,查詢預先基于所述大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所述 其他節(jié)點設備對應的出接口:
[0037] 以所述其他節(jié)點設備的大二層網絡標識為目的節(jié)點設備,從所述大二層網絡轉發(fā) 表中,查找到所述其他節(jié)點設備的大二層網絡標識對應的轉發(fā)表項;
[0038] 若查找到的轉發(fā)表項中僅包括一個出接口,則將查找到的出接口,作為所述其他 節(jié)點設備對應的出接口;
[0039] 若查找到的轉發(fā)表項中包括兩個以上的出接口,則將該兩個以上的出接口形成一 個聚合端口,并將該聚合端口作為所述其他節(jié)點設備對應的出接口。
[0040] 其中,所述報文轉發(fā)模塊具體用于,通過以下方式實現通過匹配表項的出接口直 接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議封裝:
[0041] 若匹配表項的出接口為聚合端口,則通過HASH算法選擇所述聚合端口的一個成 員端口,并通過所選擇的成員端口,直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議 封裝。
[0042] 其中,所述地址管理模塊還用于,通過所述廣播樹,將發(fā)生老化的本地MAC地址以 及所屬VLAN通告給其他節(jié)點設備;
[0043] 所述表項維護模塊還用于,從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié) 點設備處發(fā)生老化的第二MAC地址以及所屬VLAN,并從所述原始MAC地址轉發(fā)表項中,刪除 所述第二MAC地址以及所屬VLAN所對應的轉發(fā)表項。
[0044] 其中,該大二層網絡設備針對自身不同的接口與VLAN的組合,分別配鉻一個對應 的MAC地址池,用于維護在該對應接口上學習到的歸屬于對應VLAN的本地MAC地址;
[0045] 所述地址管理模塊具體用于,在新學習到本地MAC地址時,若對應MAC地址池中未 包含有該新學習到的本地MAC地址時,則將新學習到的本地MAC地址增加到MAC地址池中, 以及,在本地MAC地址發(fā)生老化的一段預設時間后,將老化的本地MAC地址從對應MAC地址 池中刪除;在MAC地址池中增加了新學習到的本地MAC地址時,通過所述廣播樹,將新學習 到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備;以及,在MAC地址池中刪除了老化 的本地MAC地址時,通過所述廣播樹,將老化的本地MAC地址以及所屬VLAN通告給其他節(jié) 點設備。
[0046] 其中,所述報文轉發(fā)模塊還用于,
[0047] 在節(jié)點設備上設鉻VLAN的廣播域范圍,其中,所述廣播域范圍包括該節(jié)點設備上 允許該VLAN通過的用戶側端口和該節(jié)點設備上的位于該VLAN裁剪樹上的大二層網絡側接 口,所述裁剪樹是基于VLAN對所述廣播樹進行分發(fā)樹的剪枝得到的;
[0048] 接收到待廣播數據報文后,確定所述待廣播數據報文所屬VLAN,并在該VLAN的廣 播域范圍所包括的除接收端口外的其他端口上,直接轉發(fā)所述待廣播數據報文而不進行大 二層網絡協(xié)議封裝,其中,所述待廣播數據報文包括未知單播報文、廣播數據報文和未知組 播報文。
[0049] 其中,所述表項維護模塊還用于,在所述大二層網絡的網絡拓撲變化,導致大二層 網絡轉發(fā)表發(fā)生更新后,若大二層網絡轉發(fā)表中的轉發(fā)表項的出接口發(fā)生更新,更新對應 的原始MAC地址轉發(fā)表項的出接口;若大二層網絡轉發(fā)表中的轉發(fā)表項被刪除,確定被刪 除的轉發(fā)表項的目的節(jié)點設備以及歸屬于該目的節(jié)點設備的本地MAC地址,進而刪除該目 的節(jié)點設備的本地MAC地址對應的原始MAC地址轉發(fā)表項;
[0050] 所述報文轉發(fā)模塊還用于,在所述大二層網絡的網絡拓撲變化,導致VLAN裁剪樹 發(fā)生更新后,根據更新后的VLAN裁剪樹,重新設鉻對應VLAN的廣播域范圍。
[0051] 本發(fā)明上述實施例中,各個節(jié)點設備通過一可達所述大二層網絡中的所有節(jié)點設 備的廣播樹,將新學習到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備;所述節(jié)點設 備從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié)點設備新學習到的第一 MAC地址 以及所屬第一 VLAN后,根據所述其他節(jié)點設備的大二層網絡標識,查詢預先基于所述大二 層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所述其他節(jié)點設備對應的出接口,進而生成所 述第一 MAC地址對應的原始MAC地址轉發(fā)表項;所述節(jié)點設備接收到單播數據報文后,根據 所述單播數據報文的目的MAC地址及所屬VLAN,在所述原始MAC地址轉發(fā)表項中進行匹配, 并通過匹配表項的出接口直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議封裝,實現 了基于大二層網絡的L2單播流量轉發(fā),而且,L2單播流量在大二層網絡內轉發(fā)時,無需進 行大二層網絡協(xié)議封裝。
【專利附圖】
【附圖說明】
[0052] 圖1為現有技術中802. IBr技術與Trill技術共存組網時處理流程示意圖;
[0053] 圖2為本發(fā)明實施例提供的一種Trill組網的架構示意圖;
[0054] 圖3為本發(fā)明實施例提供的一種Trill組網中VLAN廣播域的示意圖;
[0055] 圖4為本發(fā)明實施例提供的一種二層單播報文轉發(fā)方法的流程示意圖;
[0056] 圖5為本發(fā)明實施例提供的一種Trill組網中鏈路故障的示意圖;
[0057] 圖6為本發(fā)明實施例提供的一種Trill組網中節(jié)點設備故障的示意圖;
[0058] 圖7為本發(fā)明實施例提供的一種大二層網絡設備的結構示意圖。
【具體實施方式】
[0059] 本發(fā)明實施例提供的報文轉發(fā)技術中,在大二層網絡的控制平面,各個節(jié)點設備 通過一可達大二層網絡中所有節(jié)點設備的廣播樹,將新學習到的本地MAC地址以及該MAC 地址所屬的VLAN通告給其他節(jié)點設備;節(jié)點設備從該廣播樹接收其他節(jié)點設備通告的其 他節(jié)點設備的本地MAC地址,并根據預先基于該大二層網絡協(xié)議生成的大二層網絡轉發(fā)表 項,生成原始MAC地址轉發(fā)表項;在大二層網絡的數據平面,節(jié)點設備接收到單播數據報文 后,根據該單播數據報文的目的MAC地址及所屬VLAN,在該原始MAC地址轉發(fā)表項中進行匹 配,并通過匹配表項的出接口直接轉發(fā)該單播數據報文而不進行大二層網絡協(xié)議封裝。
[0060] 其中,節(jié)點設備的本地MAC地址包括該節(jié)點設備從該節(jié)點設備連接的用戶網絡側 學習到的MAC地址;節(jié)點設備的原始MAC地址轉發(fā)表項的目的MAC地址為上述其他節(jié)點設 備的本地MAC地址,出接口為上述大二層網絡轉發(fā)表項中去往該其他節(jié)點設備的出接口。
[0061] 具體的,在本發(fā)明實施例中,當大二層網絡中任一節(jié)點設備接收到其他節(jié)點設備 通告的該其他節(jié)點設備新學習到的第一MAC地址以及所屬的第一 VLAN時,根據該其他節(jié)點 設備的大二層網絡標識,查詢預先基于大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定該 其他節(jié)點設備對應的出接口,進而生成該第一 MAC地址對應的原始MAC地址轉發(fā)表項。
[0062] 其中,節(jié)點設備確定其他節(jié)點設備對應的出接口具體可以通過以下方式實現:
[0063] 節(jié)點設備可以從大二層網絡轉發(fā)表中,查找到該其他節(jié)點設備的大二層網絡標識 對應的轉發(fā)表項;若查找的轉發(fā)表項中僅包括一個出接口,則將查找到的出接口,作為其他 節(jié)點設備對應的出接口;若查找到的轉發(fā)表項中包括兩個以上的出接口,則將該兩個以上 的出接口形成一個聚合端口,并將該聚合端口作為其他節(jié)點設備對應的出接口。其中,上述 轉發(fā)表項中包括的兩個以上的出接口可以是以等價多路徑(ECMP)的形式存在。
[0064] 相應地,當節(jié)點設備需要通過匹配表項的出接口轉發(fā)單播數據報文時,若匹配表 項的出接口為聚合端口,則可以通過HASH (哈希)算法選擇該聚合端口的一個成員端口,并 通過所選擇的成員端口,直接轉發(fā)該單播數據報文而不進行大二層網絡協(xié)議封裝。
[0065] 進一步地,在本發(fā)明實施例中,當節(jié)點設備的本地MAC地址老化時,節(jié)點設備也需 要將發(fā)生老化的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備,由其他節(jié)點設備刪除發(fā) 生老化的MAC地址以及所屬VLAN所對應的轉發(fā)表項。
[0066] 具體的,各個節(jié)點設備可以通過廣播樹,將發(fā)生老化的本地MAC地址以及所屬 VLAN通告給其他節(jié)點設備;當節(jié)點設備從廣播樹上接收到其他節(jié)點設備處發(fā)生老化的MAC 地址(第二MAC地址)以及所屬VLAN時,從原始MAC地址轉發(fā)表中,刪除該第二MAC地址以 及所屬VLAN所對應的轉發(fā)表項。
[0067] 本發(fā)明實施例中,節(jié)點設備在MAC地址老化時,可以通過通告報文在節(jié)點之間進 行MAC地址同步。實際應用中有可能出現MAC地址假老化的情形。所謂MAC地址假老化, 是指終端數據發(fā)送報文后,間隔一段較長時間(大于MAC地址老化時間)而不再發(fā)送報文,然 后再次發(fā)送報文,反復如此,導致該終端的MAC地址在節(jié)點設備的端口上被學習、老化、再 學習、再老化……,其中每一次老化或學習過程都會引發(fā)通告報文的發(fā)送。
[0068] 為了降低MAC地址頻繁假老化所引發(fā)的通告報文發(fā)送數量,減輕節(jié)點設備的CPU 處理負擔,本實施例中各個節(jié)點設備可以針對自身不同的接口與VLAN的組合,分別配鉻一 對應的MAC地址池,用于維護在該對應接口上學習到的歸屬于對應VLAN的本地MAC地址;
[0069] 各個節(jié)點設備在新學習到本地MAC地址,例如在MAC轉發(fā)表項中記錄新學習到的 MAC地址并建立對應的老化定時器后,若對應MAC地址池中未包含有該新學習到的本地MAC 地址時,則將新學習到的本地MAC地址增加到MAC地址池中。在本地MAC地址發(fā)生老化的 一段預設時間后,才將老化的本地MAC地址從對應MAC地址池中刪除,也就是說,在MAC轉 發(fā)表項中的MAC地址因老化定時器超時而老化后,再過一段預設時間,才將該MAC地址從對 應MAC地址池中刪除。
[0070] 相應的,各個節(jié)點設備,進一步在MAC地址池中增加了新學習到的本地MAC地址 時,通過所述廣播樹,將新學習到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備;以 及,在MAC地址池中刪除了老化的本地MAC地址時,通過所述廣播樹,將老化的本地MAC地 址以及所屬VLAN通告給其他節(jié)點設備。也就是說,MAC轉發(fā)表項中的MAC地址老化并不會 直接觸發(fā)通告報文的發(fā)送,而是等待該MAC地址從MAC地址池中刪除后,才去發(fā)送對應的通 告報文。
[0071] 下面以數據中心內的Trill技術為例,對本發(fā)明實施例所提供的報文轉發(fā)技 術方案進行詳細描述,相關原理同樣適用于其他的大二層組網技術,如Vxlan (virtual Extended VLAN,虛擬擴展VLAN(Virtual Local Area Network,虛擬局域網),IETF 的 draft (草案))、SPB技術等。
[0072] 采用Trill技術構建的數據中心大二層網絡,通常分為核心層、接入層。通常,運 行Trill協(xié)議的設備稱為RBridge (即Routing Bridge,具有路由轉發(fā)特性的網橋設備,也 稱為路由橋,以下簡稱RB),RB構成Trill域(即Trill網絡)。RB通過運行鏈路狀態(tài)協(xié)議 認知Trill域的拓撲,并使用最短路徑樹算法生成從該RB到達Trill網絡內的其它各個RB 的nickname路由轉發(fā)表(簡稱為Trill路由表,包括nickname單播路由表和組播表)。
[0073] 在本發(fā)明實施例中,Trill域中各RB使用Trill控制協(xié)議進行nickname路由計 算時,生成的Trill路由表僅在控制平面保留,而不下發(fā)數據轉發(fā)平面(即在軟件上保留, 而不下發(fā)硬件)。
[0074] 相應地,由于Trill域中各RB的硬件轉發(fā)表中沒有nickname轉發(fā)表項,因此,當 Trill 域中各 RB 使用 ESADI (End Station Address Information,用于終端 MAC 地址在 各個RB之間主動同步的協(xié)議)協(xié)議報文對各RB的本地MAC地址進行相互通告和同步時, ESADI協(xié)議報文需要被送往CPU進行軟件轉發(fā)和處理。其中,可以在控制平面上預先生成一 棵Tri 11的廣播樹,不做任何裁剪,所有節(jié)點(Tri 11域內各RB)可達,專門用來轉發(fā)ESADI 協(xié)議報文。
[0075] 需要注意的是,對于MAC地址自動學習(硬件學習源MAC地址),一方面其學習的表 項并不一定是正確的表項,容易形成環(huán)路而導致廣播風暴,另一方面,MAC地址自動學習過 程中報文不一定會上送CPU,導致無法將相應的MAC地址通過ESADI協(xié)議報文同步給遠端設 備。
[0076] 例如,一個報文的源MAC地址為0-0-1,目的MAC地址為0-0-2,若不禁止MAC地 址自動學習,RB從portl接收到該報文后,查找MAC表,發(fā)現存在0-0-2對應的表項,指向 port2。若不禁止MAC地址自動學習,RB的硬件將自動學習源MAC地址與接收端口的對應 關系,直接添加0-0-l->P〇rt 1的MAC轉發(fā)表項,然后將報文直接通過port2轉發(fā),在該過程 中,不會將報文上送CPU,即RB的CPU對此并不感知,導致無法通過ESADI協(xié)議報文對該MAC 地址進行同步。
[0077] 基于此,在本發(fā)明實施例中,對于Trill域內所有用戶側端口,需要禁止MAC自動 學習(禁止硬件學習),改為軟件學習或者手工配鉻MAC地址或者協(xié)議自動生成原始MAC地 址轉發(fā)表項的方式。以軟件學習為例,報文進入端口后,先上CPU,由CPU分析報文的源MAC 地址,添加MAC表項給硬件。其中,報文上CPU后,CPU可以提取報文的源MAC地址,除了添 加本地轉發(fā)表項之外,還會通過地址同步機制,向其他的遠端節(jié)點進行同步。
[0078] 而對于允許Trill報文通過的端口,如Trill 口和Hybrid (混雜)口,在本發(fā)明實 施例中,則需要禁止其學習(包括軟件、硬件學習)MAC地址,改為手工配鉻或者協(xié)議自動生 成原始MAC地址轉發(fā)表項的方式。例如,接收到遠端節(jié)點擴散過來的MAC地址后,需要根據 拓撲信息計算本端節(jié)點到該MAC地址的路徑,若存在多條,則需要添加一條ECMP表項,比如 該MAC地址通過link (鏈路)1擴散到本端節(jié)點,但是經過計算,發(fā)現linkl,2, 3都是到達 該MAC地址的路徑,則下發(fā)表項時需要把linkl,2, 3聚合后作為到達該MAC地址的出端口。
[0079] 此外,使用ESADI協(xié)議同步MAC地址時,所有節(jié)點(包括傳輸節(jié)點(即transit節(jié) 點))都需要處理ESADI報文。
[0080] Trill域內各RB收到其他RB發(fā)送的ESADI協(xié)議報文后,提取其中攜帶的MAC地 址、VLAN信息以及該其他RB的nickname信息,并根據該nickname查詢對應的nickname路 由表,確定該nickname對應的出端口,然后根據所確定的出接口、所提取的MAC地址及VLAN 信息,生成原始MAC地址轉發(fā)表項并下發(fā)數據轉發(fā)平面。
[0081] 具體的,可以用ESADI協(xié)議報文中攜帶的MAC+VLAN替換對應的nickname路由表 項中的nickname,若該nickname路由表項的出端口為單個出端口,則對應的MAC表項中出 端口直接使用該nickname路由表項的出端口;若該nickname路由表項有等價路由,則對應 的MAC表項中的出端口可以為該nickname路由表項中各端口(各等價路由對應的端口)對 應的聚合端口。
[0082] 當Trill域內各RB轉發(fā)接收到的數據報文時,不對該報文進行Trill封裝,而根 據對應的原始MAC轉發(fā)表項對報文直接進行轉發(fā);若根據報文的目的MAC地址查詢到的 MAC轉發(fā)表項的出端口為單端口時,則將該報文從該出端口轉發(fā)出去;若根據報文的目的 MAC地址查詢到的MAC轉發(fā)表項的出端口為聚合端口,則可以通過對應的聚合鏈路的hash 分擔,選擇聚合鏈路的某條子鏈路對應的端口對該報文進行轉發(fā)。
[0083] 需要注意的是,在本發(fā)明實施例中,MAC表項中的聚合端口和傳統(tǒng)聚合端口的不同 之處在于:傳統(tǒng)的聚合鏈路兩端的設備都需要配鉻聚合,而本發(fā)明實施例中的聚合鏈路只 需要從一側設備的角度看是聚合鏈路即可,對端不一定需要是聚合鏈路。
[0084] 通過以上流程可以看出,當大二層網絡的節(jié)點設備接收到二層單播報文時,不需 要對該二層單播報文進行大二層協(xié)議封裝,而是根據該二層單播報文的目的MAC地址在硬 件上查詢對應的MAC轉發(fā)表項,并根據查詢到的MAC轉發(fā)表項將該二層單播報文以native (原生)形式對該報文進行轉發(fā),當大二層組網技術和其他技術共存組網時,以802. IBr技術 與Trill技術共存組網為例,報文從802. IBr網絡進入Trill網絡時,僅需要去掉E-tag封 裝,而不需要進行Trill封裝,即可實現報文在Trill網絡內的轉發(fā);反向從Trill網絡進 入802. IBr網絡時,由于報文未進行Trill封裝,因此,只需對該報文進行802. IBr的E-tag 封裝,即可實現報文在802. IBr網絡內的轉發(fā),有效規(guī)避了芯片中一個pipeline中無法同 時處理先去掉E-tag封裝(Trill封裝),再換成Trill封裝(E-tag封裝)的流程的缺陷,在 不需額外配鉻回環(huán)口的前提下,實現了大二層組網技術和其他技術共存組網的報文轉發(fā)。
[0085] 為了更清楚地說明本發(fā)明實施例,下面以圖2所示的Trill組網架構為例,說明本 發(fā)明實施例提供的報文轉發(fā)技術的具體實現過程。
[0086] 如圖2所示,為本發(fā)明實施例提供的一種的Trill組網的架構示意圖,其中:
[0087] 各接入層設備(S卩access節(jié)點)的nickname分別為nickname-1、 nickname-2^ ......、nickname_n ;
[0088] 各核心層設備(即 core 節(jié)點)的 nickname 分別為 nickname-gl、nickname_g2、 nickname_g3 和 nickname_g4 ;
[0089] 各接入層設備上的MAC地址如下:
[0090] nickname-1 (即 nickname 為 nickname-1 的設備,下同)上有 VLANl/macl、VLAN2/ mac2、VLAN3/mac3 ;
[0091] nickname-4 上有 VLANl/mac4、VLAN2/mac5、VLAN3/mac6 ;
[0092] nickname-(n_l)上有 VLANlO/mac 10 ;
[0093] nickname-n 上有 VLANl/mac7、VLAN2/mac8、VLAN3/mac9 ;
[0094] L3網關在各個核心層設備上,各核心層設備上都有VLAN1、VLAN2和VLAN3。以 nickname-gl 為例,其上的 L3 接口的 MAC 地址為:VLANl/mac-vl、VLAN2/mac-v2、VLAN3/ mac-v3〇
[0095] Trill域內所有RB上均配鉻有L21 SIS協(xié)議,各RB通過L21 SIS協(xié)議計算Trill域 的nickname單播路由表和組播表,且該nickname單播路由表和組播表僅在軟件上保留,不 下發(fā)給硬件。其中,圖2所示組網中,nickname-1生成的到部分其他節(jié)點的單播路由表可 以如表1所示:
[0096] 表 1
[0097]
【權利要求】
1. 一種報文轉發(fā)方法,應用于多個節(jié)點設備基于大二層網絡協(xié)議組建的大二層網絡 中,其特征在于,該方法包括 : 各個節(jié)點設備通過一可達所述大二層網絡中的所有節(jié)點設備的廣播樹,將新學習到的 本地MAC地址以及所屬VLAN通告給其他節(jié)點設備,所述本地MAC地址包括從本設備連接的 用戶網絡側學習到的MAC地址; 所述節(jié)點設備從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié)點設備新學習到 的第一MAC地址以及所屬第一VLAN后,根據所述其他節(jié)點設備的大二層網絡標識,查詢預 先基于所述大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所述其他節(jié)點設備對應的出接 口,進而生成所述第一MAC地址對應的原始MAC地址轉發(fā)表項,其中,所述原始MAC地址轉 發(fā)表項中的VLAN為所述第一VLAN、目的MAC地址為所述第一MAC地址、出接口為所述所述 其他節(jié)點設備對應的出接口; 所述節(jié)點設備接收到單播數據報文后,根據所述單播數據報文的目的MAC地址及所屬VLAN,在所述原始MAC地址轉發(fā)表項中進行匹配,并通過匹配表項的出接口直接轉發(fā)所述 單播數據報文而不進行大二層網絡協(xié)議封裝。
2. 如權利要求1所述的方法,其特征在于,所述根據所述其他節(jié)點設備的大二層網絡 標識,查詢預先基于所述大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所述其他節(jié)點設 備對應的出接口,包括 : 以所述其他節(jié)點設備的大二層網絡標識為目的節(jié)點設備,從所述大二層網絡轉發(fā)表 中,查找到所述其他節(jié)點設備的大二層網絡標識對應的轉發(fā)表項; 若查找到的轉發(fā)表項中僅包括一個出接口,則將查找到的出接口,作為所述其他節(jié)點 設備對應的出接口; 若查找到的轉發(fā)表項中包括兩個以上的出接口,則將該兩個以上的出接口形成一個聚 合端口,并將該聚合端口作為所述其他節(jié)點設備對應的出接口。
3. 如權利要求2所述的方法,其特征在于,所述通過匹配表項的出接口直接轉發(fā)所述 單播數據報文而不進行大二層網絡協(xié)議封裝,包括: 若匹配表項的出接口為聚合端口,則通過HASH算法選擇所述聚合端口的一個成員端 口,并通過所選擇的成員端口,直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議封裝。
4. 如權利要求1所述的方法,其特征在于,還包括: 各個節(jié)點設備還通過所述廣播樹,將發(fā)生老化的本地MAC地址以及所屬VLAN通告給其 他節(jié)點設備; 節(jié)點設備從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié)點設備處發(fā)生老化的 第二MAC地址以及所屬VLAN,并從所述原始MAC地址轉發(fā)表項中,刪除所述第二MAC地址以 及所屬VLAN所對應的轉發(fā)表項。
5. 如權利要求1所述的方法,其特征在于,各個節(jié)點設備針對自身不同的接口與VLAN 的組合,分別配鉻一對應的MAC地址池,用于維護在該對應接口上學習到的歸屬于對應 VLAN的本地MAC地址; 各個節(jié)點設備在新學習到本地MAC地址時,若對應MAC地址池中未包含有該新學習到 的本地MAC地址時,則將新學習到的本地MAC地址增加到MAC地址池中,以及,在本地MAC 地址發(fā)生老化的一段預設時間后,將老化的本地MAC地址從對應MAC地址池中刪除; 各個節(jié)點設備,進一步在MAC地址池中增加了新學習到的本地MAC地址時,通過所述廣 播樹,將新學習到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備;以及,在MAC地址池 中刪除了老化的本地MAC地址時,通過所述廣播樹,將老化的本地MAC地址以及所屬VLAN 通告給其他節(jié)點設備。
6. 如權利要求1所述的方法,其特征在于,該方法還包括: 在節(jié)點設備上設鉻VLAN的廣播域范圍,其中,所述廣播域范圍包括該節(jié)點設備上允許 該VLAN通過的用戶側端口和該節(jié)點設備上的位于該VLAN裁剪樹上的大二層網絡側接口, 所述裁剪樹是基于VLAN對所述廣播樹進行分發(fā)樹的剪枝得到的; 節(jié)點設備接收到待廣播數據報文后,確定所述待廣播數據報文所屬VLAN,并在該VLAN的廣播域范圍所包括的除接收端口外的其他端口上,直接轉發(fā)所述待廣播數據報文而不進 行大二層網絡協(xié)議封裝,其中,所述待廣播數據報文包括未知單播報文、廣播數據報文和未 知組播報文。
7. 如權利要求6所述的方法,其特征在于,在所述大二層網絡的網絡拓撲變化,導致大 二層網絡轉發(fā)表和/或VLAN裁剪樹發(fā)生更新后,該方法還包括: 所述節(jié)點設備在大二層網絡轉發(fā)表中的轉發(fā)表項的出接口發(fā)生更新時,更新對應的原 始MAC地址轉發(fā)表項的出接口; 所述節(jié)點設備在大二層網絡轉發(fā)表中的轉發(fā)表項被刪除時,確定被刪除的轉發(fā)表項的 目的節(jié)點設備以及歸屬于該目的節(jié)點設備的本地MAC地址,進而刪除該目的節(jié)點設備的本 地MAC地址對應的原始MAC地址轉發(fā)表項; 所述節(jié)點設備在VLAN裁剪樹發(fā)生更新后,根據更新后的VLAN裁剪樹,重新設鉻對應VLAN的廣播域范圍。
8. -種大二層網絡設備,作為節(jié)點設備應用于多個節(jié)點設備基于大二層網絡協(xié)議組建 的大二層網絡,其特征在于,該大二層網絡設備包括: 地址管理模塊,用于通過一可達所述大二層網絡中的所有節(jié)點設備的廣播樹,將所述 大二層網絡設備新學習到的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備,所述本地 MAC地址包括從本設備連接的用戶網絡側學習到的MAC地址; 表項維護模塊,用于在所述大二層網絡設備從所述廣播樹上接收其他節(jié)點設備通告的 所述其他節(jié)點設備新學習到的第一MAC地址以及所屬第一VLAN后,根據所述其他節(jié)點設備 的大二層網絡標識,查詢預先基于所述大二層網絡協(xié)議生成的大二層網絡轉發(fā)表,確定所 述其他節(jié)點設備對應的出接口,進而生成所述第一MAC地址對應的原始MAC地址轉發(fā)表項, 其中,所述原始MAC地址轉發(fā)表項中的VLAN為所述第一VLAN、目的MAC地址為所述第一MAC 地址、出接口為所述所述其他節(jié)點設備對應的出接口; 報文轉發(fā)模塊,用于在所述大二層網絡設備接收到單播數據報文后,根據所述單播數 據報文的目的MAC地址及所屬VLAN,在所述原始MAC地址轉發(fā)表項中進行匹配,并通過匹配 表項的出接口直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議封裝。
9. 如權利要求8所述的大二層網絡設備,其特征在于,所述表項維護模塊具體用于,通 過以下方式實現根據所述其他節(jié)點設備的大二層網絡標識,查詢預先基于所述大二層網絡 協(xié)議生成的大二層網絡轉發(fā)表,確定所述其他節(jié)點設備對應的出接口: 以所述其他節(jié)點設備的大二層網絡標識為目的節(jié)點設備,從所述大二層網絡轉發(fā)表 中,查找到所述其他節(jié)點設備的大二層網絡標識對應的轉發(fā)表項; 若查找到的轉發(fā)表項中僅包括一個出接口,則將查找到的出接口,作為所述其他節(jié)點 設備對應的出接口; 若查找到的轉發(fā)表項中包括兩個以上的出接口,則將該兩個以上的出接口形成一個聚 合端口,并將該聚合端口作為所述其他節(jié)點設備對應的出接口。
10. 如權利要求9所述的大二層網絡設備,其特征在于,所述報文轉發(fā)模塊具體用于, 通過以下方式實現通過匹配表項的出接口直接轉發(fā)所述單播數據報文而不進行大二層網 絡協(xié)議封裝: 若匹配表項的出接口為聚合端口,則通過HASH算法選擇所述聚合端口的一個成員端 口,并通過所選擇的成員端口,直接轉發(fā)所述單播數據報文而不進行大二層網絡協(xié)議封裝。
11. 如權利要求8所述的大二層網絡設備,其特征在于, 所述地址管理模塊還用于,通過所述廣播樹,將發(fā)生老化的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備; 所述表項維護模塊還用于,從所述廣播樹上接收其他節(jié)點設備通告的所述其他節(jié)點設 備處發(fā)生老化的第二MAC地址以及所屬VLAN,并從所述原始MAC地址轉發(fā)表項中,刪除所述 第二MAC地址以及所屬VLAN所對應的轉發(fā)表項。
12. 如權利要求8所述的大二層網絡設備,其特征在于,該大二層網絡設備針對自身不 同的接口與VLAN的組合,分別配鉻一對應的MAC地址池,用于維護在該對應接口上學習到 的歸屬于對應VLAN的本地MAC地址; 所述地址管理模塊具體用于,在新學習到本地MAC地址時,若對應MAC地址池中未包 含有該新學習到的本地MAC地址時,則將新學習到的本地MAC地址增加到MAC地址池中,以 及,在本地MAC地址發(fā)生老化的一段預設時間后,將老化的本地MAC地址從對應MAC地址池 中刪除;在MAC地址池中增加了新學習到的本地MAC地址時,通過所述廣播樹,將新學習到 的本地MAC地址以及所屬VLAN通告給其他節(jié)點設備;以及,在MAC地址池中刪除了老化的 本地MAC地址時,通過所述廣播樹,將老化的本地MAC地址以及所屬VLAN通告給其他節(jié)點 設備。
13. 如權利要求8所述的大二層網絡設備,其特征在于,所述報文轉發(fā)模塊還用于, 在節(jié)點設備上設鉻VLAN的廣播域范圍,其中,所述廣播域范圍包括該節(jié)點設備上允許 該VLAN通過的用戶側端口和該節(jié)點設備上的位于該VLAN裁剪樹上的大二層網絡側接口, 所述裁剪樹是基于VLAN對所述廣播樹進行分發(fā)樹的剪枝得到的; 接收到待廣播數據報文后,確定所述待廣播數據報文所屬VLAN,并在該VLAN的廣播域 范圍所包括的除接收端口外的其他端口上,直接轉發(fā)所述待廣播數據報文而不進行大二層 網絡協(xié)議封裝,其中,所述待廣播數據報文包括未知單播報文、廣播數據報文和未知組播報 文。
14. 如權利要求13所述的大二層網絡設備,其特征在于, 所述表項維護模塊還用于,在所述大二層網絡的網絡拓撲變化,導致大二層網絡轉發(fā) 表發(fā)生更新后,若大二層網絡轉發(fā)表中的轉發(fā)表項的出接口發(fā)生更新,更新對應的原始MAC 地址轉發(fā)表項的出接口;若大二層網絡轉發(fā)表中的轉發(fā)表項被刪除,確定被刪除的轉發(fā)表 項的目的節(jié)點設備以及歸屬于該目的節(jié)點設備的本地MAC地址,進而刪除該目的節(jié)點設備 的本地MAC地址對應的原始MAC地址轉發(fā)表項; 所述報文轉發(fā)模塊還用于,在所述大二層網絡的網絡拓撲變化,導致VLAN裁剪樹發(fā)生 更新后,根據更新后的VLAN裁剪樹,重新設鉻對應VLAN的廣播域范圍。
【文檔編號】H04L12/741GK104378296SQ201310357090
【公開日】2015年2月25日 申請日期:2013年8月15日 優(yōu)先權日:2013年8月15日
【發(fā)明者】宋玉兵 申請人:杭州華三通信技術有限公司