




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、bcm53284跨vlan組播復制研究報告一. bcm53284跨vlan組播復制原理1.1概述在robo系列的前兒代交換芯片上,均沒有針對跨vlan組播復制的機制,所以并不能完全 實現該功能。其缺陷就表現在跨vlan的組播包在從用戶側接口發(fā)出去時只能是一份.而不能 做到復制多份,且每份還帶上不同用戶vlan信息。而在bcm53284芯片上,就真正有了實 現跨vlan組播復制的硬件機制。所以可以很好的實現該功能,能在一個用戶側端口上復制 出多份帶不同用戶vlan id信息的組播數據包。而這個關鍵的硬件機制就是兩張表:multicast group virtual port id mapping
2、 table 和 virtual port vid mapping table. 這兩張表都用到了一 個新的概念:vport(虛擬端口).通過它可以將組播包和它對應的用戶vlan連接起來。1.2 multicast group virtual port id mapping table組播組到vport映射表有7424(29 * 256)條表項.平均分配給芯片上的29個接口。每個 接口分配256條表項。查表時以(port id, mgid)為索引。其屮mgid為組播組在組播表中的 表項索引,mgid的取值范圍是0,255.該表反映了從某個出接口出去的來自某個組播組的 包與vport的對應關系。
3、通過這張映射表,芯片可以為每一個發(fā)出去的組播包分配若干個 vport,上限是16個.每分配一個vport,芯片就會復制一份相應的組播包。組播組索引mgid是由sdk來分配的。原則上要求rfl組播包的目的組播mac和igmp snoop proxy vlan這二元組來確定一個組播組索引。組播組到vport映射表的表項結構如下所示: bit 15: mgvpid_15. when it is 1, this indicates packet replication on vport 15.bit 1: mgvpid_1. when it is 1, this indicates packet re
4、plication on vport 1.bit 0: mgvpid_0. when it is 1, this indicates packet replication on vport 0.fieldngvpid_0mgvpidjmgvpidjmgvpidjmgvpidhgvpi0.5mgvpid_5hgvpidjmgvpidjmgvpi09mgvpid.fohgvpi dllmgvpi d12dbhgffldjimgvpid.15bits11114511ij1)11121jn15indicate packet replication on vport x; 1 mean enable a
5、nd 0 mean disablemulticast group virtual port id mapping table查表流程示例:當芯片收到一個來自組播代理vlan的組播數據包,通過查找mac表,確定了它的組播組 索引mgid為100,就到組播表項100處查找組播成員接口位圖,假設有兩個成員接口 eth 3 口,5 口對應的位圖置1 了,那么芯片會分別向這兩個接口轉發(fā)該組播包。當向3 口轉發(fā)時, 就會根據 port id=2(芯片中的 port id 以 0 為起點),mgid=100 來查找 multicast group virtual port id mapping表。也就是查找
6、索引id為2*256+100=612的表項。而從eth 5 口轉發(fā)的組 播包就會查找索引id=4*256+100=1124的表項。假設組播組到vport映射表的表項612中bit 5和bitlo為1,就表示芯片會為這個組播 包分配兩個vport,分別為vport5和vportlo.然后芯片會根據vport5和vportlo查下面要提 到的virtual port vid mapping表,從而確定對應的用戶vlan id,組播包發(fā)出去時就會帶上對 應的用戶vlan ido1.3 virtual port vid mapping tablevport到vlan id映射表有29條表項,每個接口分
7、配一條表項。查表時以port id為索引。 表項結構如下所示: bits 191:180: vid15. vid (vlan id) of vport (virtual port) 15bits 23:12: vid1. vid of vport 1bits 11:0: vido. vid of vport 0virtual port vid mapping table通過vport到vlan id映射表,就可以確定vport和vid的對應關系。查表流程示例:接上而示例,組播包要從eth 3 口發(fā)出去,且已確定為其分配了 vport5和vportlo,這時 就會查找virtual port v
8、id mapping表,找到索引為2 (對應eth 3 口)的表項。在該項中讀取 vport 5 對應的 vlan id(bits 71:60)和 vport 10 對應的 vlan id(bits 131:120)。假設 vport5 的 vlanid值為50,vportlo的vlanid值為100,那么芯片將該組播包從eth 3 口發(fā)出去時就會是2 份,一份帶上vlan 50的vlan tag, 份帶上vlan 100的vlan tag.這樣就實現了從用戶側接口 出去的組播包能被復制多份,每份帶上一個用戶vlan信息的功能。1.4實現步驟:在了解上述查表機制后,就可以在bcm53284上實
9、現跨vlan組播復制功能了。步驟如下:1. 首先在協議層通過igmpsnoop任務,將組播信息寫入到芯片的mac表和組播表: 在協議屮根據proxy vlan z組播mac這兩個參數,利用算法分配一個空閑的組播組索引 mcast indexo將mcast index, proxy vlan及組播mac寫入到arl表中.然后在組播表mcast index表項處設置該組播組的成員接口。2. 設置 multicast group virtual port id mapping 表根據用戶側接口號和組播組索引確定要設置的表項,根據在該用戶接口需要復制的用戶 vlan份數,在表項中使能相應的數量的vpo
10、rt.3. 設置 virtual port vid mapping 表根據用戶側接口號確定要設置的表項,根據上面的vport,在表項屮相關的字段寫入vport 對應的vlan id值。這樣,當芯片收到一個來自proxy vlan的組播數據包后,通過查找mac表和組播表,可 以確定組播組索引和成員接口,然后根據它們查multicast group virtual port id mapping表 以確定芯片為該組播包分配了哪些vport,最后再查virtual port vid mapping表,確定這些 vport對應的vlan id。最后芯片會用這些vlan id會替代proxy vlan
11、id,復制相應份數的組播 包,從成員端口發(fā)送出去。二.問題背景及修改思路問題1:由 bcm53284 的 multicast group virtual port id mapping 表結構可以看出,一個用戶端口最 多只能支持256條組播索引,而且索引號必須是0,255o而芯片的組播表條目是4k。也就是 說,在這4k條組播組中,只有前256條可以實現跨vlan組播復制。如果芯片收到的某個組 播數據包其對應的組播索引大于255,芯片就不會去查multicast group virtual port id mapping表,也就不會在轉發(fā)出去時將proxy vlan替換成用戶vlan 了。解決方
12、案:因為芯片硬件限制,只能支持256個組播組條目做跨vlan組播復制,所以只能從sdk軟 件上做調整,將需要做跨vlan復制的組播組記錄到glgmpsnooprepgroup鏈表屮。當sdk 需要將該組播組信息寫入到組播表時,就會給這個組播組分趾一個位于0,255之間的組播 表索引。如果該區(qū)i'可已經滿了,就在組播表中找一個普通表項(其對應的組播組沒有記錄在 glgmpsnooprepgroup中),將其移到0,255之外,這樣就可以空出一個索引給這個組播組了。 為此,設計了網管命令:multicast replication group (a.b.c.d)由該命令指定的組播ip對應的
13、組播組就具有高優(yōu)先級,會保證分配給它的組播組索引位于 0,255之間。然后在以下函數中做了判斷處理:int bcm robo mcast addr addfint unit, bcm mcast addr t *mcaddr)if (lsrepgroup(mcaddr->mac) = ok) && (mcindex >= 256)/*找一個普通的索引,移出0,255區(qū)間,為入參組播表項騰出空間。*/for (i = 0; i < 256; i+)if (lsrepgroup(bcm53284mcasttablei.mac) != ok)n ormalmcl n
14、dex = i;drv_fp_verb("nr bcm_robo_mcast_addr_add: normalmcindex %d", n ormalmcindex);break;嚴移動normalmcindex表項到后血去*/ 訐(normalmcindex < 256) for (loop = 256; loop < bcm53284_mcast_table_size; loop卄) 訐(!l2mc_usedsset(unit, loop)n ewnormalmcl ndex = loop;drv fp verb(hbcm robo mcast addr a
15、dd: newnormalmcindex %dn"/ newnormalmclndex); break;/*將該普通組播表項寫入到新的位置newnormalmcindexo*/bcmf_error_return(drv_services(u nit)->mcast_to_marl) (unit, (uint32 *)&marl_entry, (uint32 *)&newmcaddr);bcmf_error_return(drv_services(unit)>mcast_bmp_set) (unit, (uint32 *)&marl_entry, t
16、_pbm,drv_mcast_index_add);/*刪除舊位置normalmcindex處的組播表項,以實現該普通組播 表項的后移bcmf_error_return(bcm _l2_addr_delete(unit/ bcm53284mcasttablenormalmclndex.mac, bcm53284mcasttablenormalmcl ndex. vid);廠舊的組播表項統(tǒng)計計數減1*/l2mc_used_clr(unit, normalmcindex);mein dex = n ormalmcl ndex;elsedrv_fp_verb("nr no availabl
17、e rep multi group space !");問題2:由bcm53284的virtual port vid mapping表結構可以看出,一個端口只支持16個用戶vlan. 按照協議的默認流程,端口先收到某個用戶vlan的igmp report包,就會自動把這個用戶 vlan寫入到virtual port vid mapping表.這樣,先來的用戶vlan就可以做復制,后來的用戶 vlan因為表項已滿的原因,而無法復制組播包。而如果這個后來的用戶vlan是比較重要的 vlan,需要做組播復制,那就無法滿足要求了。解決方案:需要一種機制,可以讓用戶來控制讓哪些用戶vlan參與
18、跨vlan組播復制。這需要定義一 個鏈表glgmpsnoopuservlanlist,用來保存重要的用戶vlan.然后在sdk準備填寫virtual port vid mapping表時,做一個判斷,只有記錄在glgmpsnoopuservlanlist中的用戶vlan才可以 寫入到表項中。而沒有記錄的用戶vlan不讓寫入表項中,也即不讓其做跨vlan組播復制。為此,設計了網管命令:multicast user-vlan vlanlist用戶通過該命令來配置需要參與跨vlan組播復制的重要的用戶vlan.然后在以下函數中做了判斷處理:status usp_sdk_switch_add_l2mcast_member(void *var)/*只有cli上配置的用戶vlan才可以寫入到virtual port vid mapping表中。*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋租賃托付合同協議匯編
- 汽車構造 課件 10潤滑系統(tǒng)
- 新媒體月度工作總結
- 家長會小學生發(fā)言稿200
- 物理學應用解讀
- 教師共讀一本書發(fā)言稿
- 小學一年級班主任發(fā)言稿
- 親子閱讀家長發(fā)言稿
- 大一新生發(fā)言稿
- 城鎮(zhèn)房屋買賣合同范本匯編
- 《色彩構成——色彩基礎知識》PPT課件
- 煤礦供電系統(tǒng)及供電安全講座方案課件
- 綠色建筑及材料分析及案列
- 鍍層的結合力
- 霍尼韋爾DDC編程軟件(CARE)簡介
- 實用中西醫(yī)結合診斷治療學
- 論《說文解字》中的水文化
- 幕墻工程技術標范本
- 德龍自卸車合格證掃描件(原圖)
- [國家公務員考試密押題庫]申論模擬925
- 初級電工教學大綱與教學計劃
評論
0/150
提交評論