marvell 交换芯片DSA(分布式交换架构)功能

Marvell DSA(分布式交换架构)                       
                        		by  韩大卫@吉林师范大学

***************
  

Marvell DSA(分布式交换架构)技术使得设备之间通过级联的方式, 组成一个大型交换网络, 最大程度上加速报文的转发和处理. 在此系统中, 最多允许31个设备相连, 相连设备间的端口需要配置为级联端口, 这样端口间传输的报文会被芯片打上一个DSA 的标记(类似于VLAN), DSA Tag中主要信息有:


Vlan-ID , Souce ID(用于标记报文原始出处), 

TrgDev(目的设备), TrgPort(目的端口), SrcDev(源设备), SrcPort(源端口)等.


所以首先要将级联系统中的每一个设备配置一个唯一的级联设备号(Hardware Device ID).0-31. 


将指定端口配置为级联端口, 此时该端口同时应该关闭Ingess PCL, Bridge Engine, Policer engine, TTI lookups 和Route等功能. 设备对报文的处理, 仅根据报文中DSA Tag 的相关信息. 进而最大程度上加快报文的转发速度.

关于DSA Tag 的产生:  在一个设备中, 一个网络接口接收到报文, 并将其转发到其他端口, 如果某端口配置为DSA mode(级联接口). 在报文进入此级联接口时会被设备打印上DSA标记, DSA Tag 里的内容根据该设备的各种配置而定, 此后会一直携带此DSA Tag转发到所有可能进入的级联设备. 当报文由级联接口转发到网络接口时,  DSA Tag会自动转换为IEEE 802.1Q格式的报文. 

NOTE:

DSA Tag 可以分为DSA Extend mode和 DSA Regular mode. 

DSA Extend mode  为8个字节, Marvell定义为两个word, Word 0 和word 1. DSA  Regular mode 为4个字节, 只有一个word. DSA Extend mode会携带更多的信息. 现大多数Marvell Prestera/Cheetah/xcat/lion 系列交换芯片均支持 DSA Extend mode. 如果一个配置为  DSA Extend mode的级联接口与一个配置为DSA  Regular mode的级联接口相连,  在传输报文时, 报文中DSA Tag会在两者间自动转换.

在级联系统中, 对于报文的转发, 根据报文有无已知出口路径而分两种情况, 


一, 如在设备中存在有直接转发该报文的路径, 比如有该报文中目的MAC与出接口的对应关系的FDB表, 或者有PCL来指定报文的出接口, 那么此时报文根据设备中 “ Dev Map Table” 中目的设备与指定出接口的对应关系来转发至该出接口. 此报文可以当作在级联系统中的单播报文.



单播的报文中示例如下:


13:51:27.575755 00:16:31:fe:e7:e8 > 12:13:18:cc:dd:ff, ethertype Unknown (0xc100), length 68: 
	0x0000:  1213 18cc ddff 0016 31fe e7e8 c100 3001 ........1.....0.
	0x0010: 1010 0101 0800 4500 0028 2b75 0000 4006  ......E..(+u..@.
	0x0020:  b9f0 c0a1 0a0a c0a1 0a1e 0014 04b0 1cbe  ................
	0x0030:  45aa 07a7 22fe 5000 0200 86a8 0000 0000  E...".P.........
	0x0040:  0000 0000  

DSA Tag 为:  c100 3001 1010 0101 

含义如下:

Word 0: c100 3001 :


[31:30]TagCommand	:      forwarding

[28:24]SrcDev		:       00001 	        ------->	报文来自设备1

[23:19]SrcPort		:	0000	        ------->	来自设备1 的Port 0

[15:13]UP		:	001		------->	User Priority 1

[12]			:	1		------->	DSA Extend 类型

[11:0]			:	1		------->	VLAN-ID 为 1


Word 1: 1010 0101 


[28]EgressFilter		1:		------->		报文为已知路径的单播报文.

[24:20]Source ID		00001:		------->	1	:	Souce ID 为 1

[10:5]TrgPort			0010000:	------->	8	:	目的port 为 8

[4:0]TrgDev			00001:	        ------->	1	: 	目的dev	为 1



这样,  在dev 0的级联接口接收到此报文后, 根据dev 0 内部的Dev Map Table配置找到对应出接口, 转发报文.


NOTE:

Source ID 

Source ID 为一个 5bit的数字, 用于在级联系统中标识一个设备, 建议与Hardware Device ID配置一致, 这样可以通过此Source ID 来看出报文来自哪个设备从而加以处理.默认值为0.

如果将ge 0 的”端口默认Source ID” 使能, 报文中的Source ID 为ge 0的默认Source ID配置. 


对于级联系统中的单播报文, 可通过配置Dev Map Table来决定报文的走向, 例如, 对于上面的报文, 


在设备中配置DEV MAP Table,--------------> 配置连接 Dev1 的接口为 8

这样, 上面的报文会被转发到ge 8.



二, 如果在设备中, 对此报文没有直接的出口路径, 那么便在级联系统中广播, 广播的报文示例如下:

14:19:12.911557 00:16:31:fe:e7:e8 > 12:13:18:cc:dd:ff, ethertype Unknown (0xd000), length 76: 
	0x0000:  1213 18cc ddff 0016 31fe e7e8 d000 3001 ........1.....0.
	0x0010: 0010 1fff c100 3001 1010 0101 0800 4500  ......0.......E.
	0x0020:  0028 e032 0000 4006 0533 c0a1 0a0a c0a1  .([email protected]......
	0x0030:  0a1e 0014 04b0 19f8 d415 66eb f4b8 5000  ..........f...P.
	0x0040:  0200 ca03 0000 0000 0000 0000

Word 0 : d000 3001


[31:30]TagCommand	:  forwarding

[28:24]SrcDev		:   10000 	------->	报文来自设备16

[23:19]SrcPort		:   0000	------->	来自设备1 的Port 0

[15:13]UP		:	001		------->	User Priority 1

[12]			:	1		------->	DSA Extend 类型

[11:0]	        	:	1		------->	VLAN-ID 为 1

Word 1 : 0010 1fff

[28]EgressFilter		0:		------->		报文为知路径的多播报文.

[24:20]Source ID		00001:		------->	1	:	Souce ID 为 1

[10:5]TrgPort			1111111:	------->	8	:	目的端口为所有端口

[4:0]TrgDev			11111:	        ------->	1	: 	目的dev	为所有设备



对于级联系统中的多播报文, 可使用Source ID Group 来决定报文的出口,


比如, 对于上述报文, 做如下配置:

一, 将接口 16 添加到 Soure ID group 1 中 

二,  将接口 25 在 Soure ID group 1 中删除


这样, 同在 VLAN 1 下的ge 16和xe 25, 只有ge 16可以收到报文, 进而在级联系统中进行广播.

另外, Marvell 定义了一种 Fast Failover(快速故障处理) 的机制. 


当级联系统中某一个设备出现故障时, 为保证链路畅通, Marvell允许用户定义弟二个出接口, 当设备默认出接口有问题时, 会自动切换到弟二个出接口.


NOTE:


Dev Map Table , Source ID Group , Vlan 几个表的作用范围:

作用范围依次变大:

 Dev Map Table  ---->  Source ID Group --------> Vlan



首先, 要保证级联接口在报文的Vlan中.

对于要在级联系统中没有已知路径(广播)的报文, 使用Source ID Group来决定报文出口.

对于在级联系统中有已知路径(单播)的报文, 在满足Source ID Group情况下, 由Dev Map Table决定报文出口. 



根据Marvell 提供的配置, 可以决定是否Source ID可以决定过滤DSA单播报文, 默认功能是使能的(因为单播的范围在广播范围中), 所以DSA单播报文, 需要先满足Source ID Group, 再根据Dev Map Table进行转发.



NOTE:

当两个设备作为级联时, 整个级联系统作为一个设备来学习目的设备/目的接口 与报文中MAC的对应关系.例如如果dev 0 的ge 0 进入报文经过ge 8发出, 最后由dev 11 的 ge 18转发到目的地, 之后该地址发送回应报文.  

那么dev 0 自动学习的结果是:



	VID		MAC				 Interface	Type	  	DstDev

	1		00:16:31:ff:31:11	  	18		dynamic	        11


	VID		MAC				Interface	Type	  	DstDev

	1		30:16:31:ff:3a:ee	  	0		dynamic	        0




如果不是作为级联系统, 那么dev 0 的学习结果仅为自身的出接口:


	VID		MAC				Interface	Type	  	DstDev

	1		00:16:31:ff:31:11	  	8		dynamic	        0








********* ********************
  Thanks for review
******************************

你可能感兴趣的:(DSA,tag,marvell,分布式交换架构)