Broadcom以太網交換芯片培訓


 

目錄

1、交換芯片架構............................................................................................................. 2

2、L2轉發流程............................................................................................................... 3

2.1 L2轉發原理........................................................................................................ 3

2.2 L2轉發相關的表項............................................................................................. 5

2.2.1 port表..................................................................................................... 5

2.2.2 egress port表.......................................................................................... 6

2.2.3 L2地址表................................................................................................. 6

2.2.4 VLAN表................................................................................................... 7

3、L3轉發流程............................................................................................................... 8

4、L2組播轉發流程...................................................................................................... 10

5、L3組播轉發流程...................................................................................................... 10

6、流分類處理流程....................................................................................................... 13

 

本文以broadcom56504/56300交換芯片為重點,介紹一下交換芯片的工作原理。

1、交換芯片架構

交換芯片由GE/XE接口(MAC/PHY)模塊、CPU接口模塊、輸入輸出匹配/修改模塊、MMU模塊、L2轉發模塊、L3轉發模塊、安全模塊、流分類模塊等模塊組成,其結構如圖1所示:

圖1 交換芯片的組成

 

56504包含24個GE端口,4個10G端口,10G端口既可以用於堆疊,也可以用於上聯/級聯。

56504交換芯片與CPU的接口稱為CMIC接口。交換芯片與CPU通過PCI總線連接。其他類型交換芯片與CPU的接口可以是:SPI+MII、I2C+MII、系統總線+MII、SMI+MII等。交換芯片的包處理流程如圖2所示:

 

 

圖2 交換芯片的包處理流程簡圖

 

  包由端口進入交換芯片之后,首先進行包頭字段匹配,為流分類做准備;然后經過一個安全引擎進行包過濾;符合安全的包進行L2交換或者L3路由,並經過流分類處理器對匹配的包做相關動作(比如丟棄、限速、修改VLAN等);對於可以轉發的包根據802.1P或DSCP放到不同隊列的buffer中,調度器根據優先級或者WRR等算法進行隊列調度,在端口發出該包之前執行流分類修改動作,最終從相應端口發送出去。

2、L2轉發流程

2.1 L2轉發原理

對於交換芯片來說,L2轉發是一個最基本的功能。L2功能主要包括ingress過濾、MAC學習和老化、根據MAC+VLAN轉發、廣播與洪泛、生成樹控制等基本功能。

       L2轉發的具體流程如圖3所示:

 

 

圖3 L2轉發流程

 

從端口進入交換芯片的包首先檢查TAG,對於tagged包,判斷是否是802.1p的包,(802.1p的包vid為0),對於untagged的包和802.1p的包,根據系統配置加上tag(這些配置包括:基於MAC的vlan、基於子網的vlan、基於協議的vlan和基於端口的vlan)。經過這一步以后,到交換芯片內部的包都變成802.1Q的tagged包了(vid為1-4094,4095保留),如果設置了ingress過濾,就會檢查本端口是否在該vid對應的VLAN中,對於本端口不在該vid對應的VLAN中的包就丟棄。對於沒有設置ingress過濾,或者設置ingress過濾但本端口在該vid對應的VLAN中的包進行STP端口狀態檢查,對於BPDU(網橋協議數據單元)以外的包,只有端口處於forwarding狀態,才允許包進入。然后進行原MAC地址檢查,以原MAC+VID的哈希為索引查找L2 TABLE,如果沒有找到,就把這個表項(原MAC+VID)以及對應的端口寫到L2 TABLE中,這個過程稱為MAC地址學習。當然地址學習的方法有很多種,可以是硬件學習,也可以是軟件學習,可以根據PORT表中的CMI字段的配置來進行。

下一步進行目的MAC地址檢查:目的MAC地址為廣播地址(0xffffffff)的包,在vlan內廣播出去;目的MAC地址為組播地址的包,進行組播流程的處理;對於單播包,查找L2 TABLE,如果沒有找到,就在vlan內進行洪泛;如果找到,檢查表項中的L3 bit是否設置,如果設置了L3 bit,就進行L3流程的轉發;否則就轉發到L2 TABLE表項中的端口去,在egress方向,也有egress過濾設置(默認是使能的),如果egress端口不在vlan中也是不能轉發的。至此,L2轉發流程完成了。

與地址學習相反的過程是地址老化。地址老化的機制是:ASIC內部有個定時器,稱為age timer,命令行可以對這個寄存器進行設置,每次查找L2 TABLE時(包括原地址查找和目的地址查找,可以配置),如果命中,就會設置hit標志。當老化時間到后,ASIC把hit標志清除,當下一個老化時間到后,ASIC把hit為0的地址設置為無效,這就是為什么實際地址老化的時間為1~2倍agingTime的原因。

 

2.2 L2轉發相關的表項

2.2.1 port表

 

 

 

圖4 port表

 

Port表是一個非常重要的表,有很多與端口相關的控制都在這里設置。每個端口對應一個表項,按端口號進行索引。下面介紹一下重要的設置:

1) PVID:設置PORT_VID

2) 缺省優先級:設置PORT_PRI

3) 流分類使能:設置FILTER_ENABLE

4) VLAN轉換使能:設置VT_ENABLE和VT_MISS_DROP

5) Ingress過濾使能:設置EN_IFILTER

6) 信任COS還是信任DSCP:對於IPV4:TRUST_DSCP_V4=0:信任COS;TRUST_DSCP_V4=1:信任DSCP,對於IPV6:同樣設置TRUST_DSCP_V6。

7) Ingress方向mirror使能:設置MIRROR

8) MAC地址學習方式:設置CML

9) IP組播是否使用VLAN信息:設置IPMC_DO_VLAN

10) L3轉發使能:設置V4L3_ENABLE和V6L3_ENABLE

11) 是否丟棄BPDU:設置DROP_BPDU

12) 控制是否轉發帶tag和不帶tag的包:設置PORT_DIS_TAG和PORT_DIS_UNTAG

13) Pause幀控制:設置PASS_CONTROL_FRAMES

14) 基於子網的VLAN使能:設置SUBNET_BASED_VID_ENABLE

15) 基於MAC的VLAN使能:設置MAC_BASED_VID_ENABLE

16) 設置堆疊口:HIGIG_PACKET

17) 設置NNI口:NNI_PORT

18) 修改優先級使能:MAP_TAG_PACKET_PRIORITY

19) 堆疊口modid設置:MY_MODID

20) Out tpid設置:OUTER_TPID

21) 基於MAC和基於子網的VLAN優先級設置:VLAN_PRECEDENCE

22) 是否允許單臂橋功能:PORT_BRIDGE

23) IP組播位圖設置:IGNORE_IPMC_L2_BITMAP和IGNORE_IPMC_L3_BITMAP

2.2.2 egress port表

 

 

圖5 egress port表

 

EGR_PORT是一組寄存器,每個端口一個,用於EGRESS方向的控制,有幾個重要設置介紹如下:

1) 設置egress端口類型:PORT_TYPE=0,UNI端口;PORT_TYPE=1,NNI端口 (用戶側接口和網絡側接口, UNI就是面向客戶側,NNI面向網絡側。對PTN來說,UNI就是客戶過來的業務,沒有打上PW/LSP等標簽;NNI則打上PW和LSP標簽內容)

2) 設置egress過濾:EN_EFILTER=1

2.2.3 L2地址表

 

 

圖6 L2地址表

 

56504的L2地址表大小為16K,5630X的L2地址表大小為8K,地址表使用MAC+VID的hash值作為索引查表。實際上56504的L2地址表hash值為4K,每個hash值對應4條地址,這樣最多可以保存4條hash沖突的地址。地址表中每個表項都保存了MAC_ADDR和VLAN_ID。MAC學習的時候使用原MAC+VID的hash查表,把表中的MAC+VID與包中的MAC+VID進行比較,如果完全相等,表示找到了。然后看端口(TGID_PORT)是否相等,如果不相等表示地址發生了遷移,對於動態學習的地址需要更新port;如果相等表示命中,更新hit標志。其他幾個重要的功能介紹如下:

1) 設置靜態地址:STATIC_BIT=1

2) 設置L3轉發標志:L3=1

3) 設置本地址的包都轉發到CPU去:CPU=1

4) 設置本地址匹配的包丟棄:SRC_DISCARD=1、DST_DISCARD=1

5) 設置本地址匹配的包對某些端口阻塞:MAC_BLOCK_INDEX

6) 設置本地址匹配的包鏡像:MIRROR=1

7) 設置組播索引:L2MC_PTR

8) 地址有效標志:VALID=1

2.2.4 VLAN表

Vlan表分為ingress和egress兩個部分,分別對應入口控制和出口控制。

 

 

圖7 ingress vlan表

 

Ingress Vlan表中主要包含了端口列表,用於ingress filter功能。PFM是用於控制組播洪泛的開關。PFM=0,組播在vlan內洪泛;PFM=1,注冊的組播按組播表轉發,未注冊的組播在vlan內洪泛;PFM=2,注冊的組播按組播表轉發,未注冊的組播丟棄。STG用於標識本vlan所屬的生成樹組。

 

 

 

 

圖8 egress vlan表

Egress vlan表中除了PFM和STG外,還包含了出口方向的端口位圖,以及哪些端口以untag的方式發送本vlan的包。

 

3、L3轉發流程

 

 

圖9 L3轉發流程

 

如果查目的MAC地址表的時候發現L3bit置位了,就進入到L3轉發流程。與L2交換相比,L3交換可以實現跨VLAN轉發,而且它的轉發依據不是根據目的MAC地址,而是根據目的IP。L3轉發的流程是:首先對L3頭部進行校驗,校驗和錯的包直接丟棄;然后進行原IP地址查找,如果主機路由表中沒有找到,會上報給CPU,CPU會進行相應的處理,並更新接口表;下一步進行目的IP地址查找,如果主機路由表中沒有找到,就會在子網路由表中進行查找,在子網路由表中進行最長子網匹配的查找算法,如果在子網路由表中還沒有找到,也送給CPU進行處理,如果在主機路由表或子網路由表中找到了,就會得到下一跳的指針。如果ECMP使能的話,會得到ECMP的指針和ECMP的個數,從而根據hash算法得到一個下一跳指針。下一條表項中包含了下一跳的MAC地址和接口表的索引。在包轉發出去的時候,用下一跳的MAC地址替換掉包的目的MAC地址。用接口表中的MAC地址和VLAN替換掉包的原MAC地址和VLAN。 

與L3有關的幾個重要的表:

  

圖10 L3單播主機路由表

  

 

圖11 L3子網路由表 

 

圖12 ECMP表

 

 

圖13 EGRESS 下一跳表 

 

 圖14 接口表

圖15 INGRESS 下一跳表

4、L2組播轉發流程

在L2轉發流程中,查找目的MAC+VID的時候,如果表項的目的MAC是一個組播地址,該表項有一個組播指針指向組播表,組播表中有一個端口位圖,表示哪些端口屬於該組播組。組播組中的端口位圖與VLAN中的端口位圖相與的結果是實際轉發的端口位圖。靜態配置的或協議動態添加的組播地址通過SSP寫到MAC地址表中,組播成員通過SSP寫到組播表中。L2組播表的結構如下: 

 

圖16 L2組播表

5、L3組播轉發流程

L3組播支持有源樹和共享樹。所謂有源樹是指根據源IP地址和組地址來確定一個組播組,而共享樹是指僅根據組地址來確定一個組播組。芯片也支持反向路徑檢查(Reverse Path Forwarding check),所謂反向路徑檢查是指通過檢查源IP地址確定源端口,從而不要向源端口轉發的技術。

       L3組播的轉發流程是,先查L2表,對於組播地址而且是L3 bit置位的,查L3表。L3表給出IPMC_INDEX。根據這個索引查L3_IPMC表,L3_IPMC表給出L2_BITMAP和L3_BITMAP。對於L2_BITMAP,按照L2組播流程轉發;對於L3_BITMAP,根據IPMC_INDEX和BITMAP得到IPMC_GROUP的VLAN_INDEX,最后根據VLAN_INDEX查找IPMC_VLAN表,IPMC_VLAN表包含了VLAN的位圖,芯片在進行L3組播的時候,對VLAN的位圖中的每個成員進行組播復制。

 

 

圖17 L3組播表

 

 

圖18 L3組播復制 

L3單播和組播的轉發流程綜合起來,如下圖所示:

 

圖19 L3單播和組播的轉發流程

 

IPMC轉發相關的表的結構如下:   

 

圖20 L3 TABLE 

L3 TABLE表項大小8K(5650X)/2K(5630X)。 

圖21 IPMC TABLE 

IPMC TABLE表項大小1K。

 

圖22 IPMC _GROUP TABLE 

IPMC _GROUP TABLE表項大小1K。

 

圖23 IPMC _VLAN TABLE

 

IPMC _VLAN TABLE表項大小2K。

 

6、流分類處理流程

在5650X/5630X中,流分類是通過CFP實現的,CFP是ContentAware Filter Processor的縮寫。所謂ContentAware就是對packet的內容進行智能匹配的技術。5650X/5630X中的流分類分為5個階段,流程如圖:

 

 

圖24 CFP流程

這5個部分分別是智能協議識別選擇器、CAM查找引擎、策略引擎、meter和統計引擎、動作裁決引擎。在ingress端口,智能協議識別選擇器對進來的包的前128bit按照協議字段進行選擇和標記,CAM查找引擎按照用戶給的key匹配協議選擇器的內容,如果找到了,就執行策略引擎的動作,並可以實驗meter和統計引擎進行限速、標記顏色和統計。5650X有16個CAM查找引擎,5630X有8個CAM查找引擎,它們可以並行執行,執行的動作如果有沖突的話,由動作裁決引擎進行裁決。 

與協議內容識別選擇器有關的表是:

 

圖25 協議內容識別選擇器

 

圖26 FP_TCAM表

下面這個是策略引擎表項:

圖27 FP_TCAM_PLUS_POLICY表 

下面這個是meter表和counter表:

 

圖28 FP_METER表

 

圖29 FP_COUNTER表 

動作裁決的優先級如下:

1. DROP 

2. Else REPLACE

3. Else REDIRECT

4. Then EGRESSMASK

5. Then COPY_TO_CPU


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM