bcm53314笔记.docx
《bcm53314笔记.docx》由会员分享,可在线阅读,更多相关《bcm53314笔记.docx(34页珍藏版)》请在冰豆网上搜索。
bcm53314笔记
Bcm53314笔记
结构
1、模块化、管道
2、
3、Intelligentparser:
检查来自Gbe和CMIC的包,头128bit
4、L2交换:
选择VLANtype、查找VLAN、L2单播、L2组播
5、CAP(FP):
可用于Qos、ACL、DOS防御
6、BufferManagement:
Mirror、trunk、AdmissionControl
7、TrafficManagement:
Queuing、Scheduling、Shaping
8、Modification:
可以由tunneling产生
9、》
10、GigabitEthernetPortInterfaceController(GPIC)block:
可连接SGMII、SerDes
11、MMU:
有一个512KBCellBufferPool(CBP),支持IBP、HOL、pause
IBP:
背压,输入流量过大发pause帧
HOL:
输出超过limit时丢包
Shaping:
输入流量超过limit则发pause帧
12、lookuptable:
内存表,在onchipmemory,不在cpu内存空间
13、搜索引擎:
两种搜索引擎:
HashSearchEngine和CAMSeacherEngine,HashSearchEngine用于L2表和VLAN表,CAMSearchEngine用于策略路由、ACL,可查找包字段
14、每端口MAC限制:
防止MAC地址攻击,每端口学习的MAC地址数达到限制后丢包or发到CPU。
15、可以通过软件手动增加/删除MAC地址,遵循地址限制,除非是静态地址或者组播地址。
LAG按照实际成员端口来学习
16、端口被加进trunk组前腰删除所有L2entry
17、;
18、CAP:
19、53314的FP(CAP)有4个slice,每个512条规则
20、物理slice被映射到虚拟slice,虚拟slice在虚拟slice组里
21、有一些计数器用来支持MIB
22、53314支持内部cpu和CMIC
23、
24、
PacketFlow
1、
2、超大帧!
!
!
13K!
!
!
¥
3、先经过parser抽取输入逻辑和CAP所需的字段,再检查tag
4、doubletag:
StackedVLAN也称QinQ或DoubleVLAN。
其实现为在协议标签前再次封装协议标签,其中一层标识用户系统网络(customernetwork),一层标识网络运营网络(serviceprovidernetwork),将其扩展实现用户线路标识。
5、VLAN解析->源地址学习->目的地址查找->如果是组播包,查找L2MC表
6、通过PCI接口连接外部CPU
7、可以从CPU端口收发包,收发过程与其他Gbe端口一样,可能发往逻辑端口、stacking端口、丢包、或者发回cpu端口
L2特征和操作
1、地址学习:
学习未知SA
2、包老化:
丢弃MMU里存在超过指定时间的包
3、地址老化:
支持软硬件老化,软件可以增加、删除、搜索和增加静态地址
4、地址状态移动:
同一个SA转移到另一个port,需relearn
5、!
6、L2MC:
线速,如果在L2表找到对应项,该表项有一个指针指向L2MC表,L2MC表返回portbitmap用作DA
7、L2_USER_ENTRY:
通过软件设置,静态地址
8、:
给不带标记包或VID=0的包加标记、改变标记、选择性丢包、可以识别GVRP组播地址01-80-C2-00-00-21并把它转发到cpu、去掉untag端口发出去的包的tag
9、GVRP:
一个通过组播向其他端口传递端口VLAN信息的协议
10、STP:
根桥、根端口、计算路径开销、裁剪路径,如果拓扑结构改变则重新计算
11、BPDU:
携带STP信息的包
12、每个VLAN指定一个生成树组表,表里的条目记载端口状态。
2’b00=disable2’b01=blocking2’b10=learning/listening2’b11=forwarding
VLAN
。
1、supportIEEEtagged,MAC-based,IPsubnet-based,protocol-based,andport-basedVLANs
2、TPID(TagProtocolIdentifier,标签协议标识)VLANTag中的一个字段,IEEE协议规定该字段的取值为0x8100。
用来表示本数据帧是带有VLANTag的数据。
该字段长度为16bit。
3、如果包TPID与设置的不一致(PORT_TAB/,则认为是untagged包,如果一致,检查VID是否为0,0则加上rioritytag
4、VLAN顺序:
PORT表:
VLAN_PRECEDENCED•0=MAC-basedVLANhasprecedenceoversubnet-basedVLANS•1=Subnet-basedVLANShasprecedenceoverMCA-basedVLANS
5、MAC-basedVLAN:
根据源MAC地址分配VID
6、ProtocolBasedVLAN:
根据以太网协议(frametype/ethertype)来分配VID
7、Port-BasedVLAN:
根据端口分配VID(默认)
8、
9、,
10、双标签:
如上图,双标签分别是S-TAG(服务标记)和C-TAG(客户标记)。
客户标记是用户自身的VLAN标记,服务标记是ISP在传输中使用的标记
11、bcm53314为ISP提供两种方法来区分用户:
一种是透明的局域网服务:
用S-TAG封装带C-TAG的用户数据;另一种是映射服务(VLAN转换):
根据输入端口和VID来决定SPVLAN,可以带双TAG或者用S-TAG代替C-TAG
12、
13、Double-tag下,有两种可能的地址学习方式:
一是根据C-TAG的广播域学习,那样就会有很多重叠的地址(bcm53314不支持这个),另一种方法是根据S-TAG的广播域来学习,忽略用户VLAN
14、VLAN转换:
在VLAN转换模式下,对输入包用VID和端口号作为索引查VLAN_XLATE表,如果找到对应项,根据位来增加VLANtag或代替原有tag。
对输出包则查EGR_VLAN_XLATE表,把SPVID替换成CVID和优先级
15、
16、
包从输入端口获得S_TAG信息,进入输出端口后,根据这些信息加S-TAG,S-TAG各字段值从以下方法得到:
|
•TPID:
S-TAG的TPID根据EGR_VLAN_CONTROL_1[egressport].OUTER_TPID_SEL,从EGR_VLAN_CONTROL_1[egressport].OUTER_TPID_INDEX或EGR_VLAN[S-VID].OUTER_TPID_INDEX获得,2-bitOUTER_TPID_INDEX用来索引EGR_OUTER_TPID表来获取TPID值
•S-VID:
来自输入端口
•S-PRIandS-DE:
来自输入端口的包优先级和CNG被映射为3位S-PRI和1位S-DE,通过EGR_PRI_CNG_MAP表。
如果EGR_VLAN_CONTROL_1[egressport].CFI_AS_CNG[outerTPIDindex]=1,使用来自EGR_PRI_CNG_MAP表的S-DE。
否则,来自输入端口的外层CFI值用作S-DE。
•OuterCFI=0,因为没有外层CFI
#
UNI发往UNI,输入过程
•与UNI发往NNI的输入过程相同
UNI发往UNI,输出过程
•与NNI发往UNI的输出过程相同
.
NNI发往UNI,输入过程
•与NNI发往UNI的输入过程相同
UNI发往UNI,输出过程
•与UNI发往NNI的输出过程相同
VLANMirroring
·
UNI输入镜像
输入:
包输入UNI端口转发向MTP
输出:
向MTP输出,不修改包
NNI输入镜像
输入:
包输入UNI端口转发向MTP
输出:
向MTP输出,不修改包
}
ManagementVLAN(管理VLAN)
网友3:
nativevlan本质来说,就是不带vlanID的vlan,无论是或者isl。
因为不带vlan
ID,如何交换机都可以接受和传递它的包,无论是不支持3层的还是一个hub。
而在此基础上提出了managermentvlan。
这个概念其实是源于以前有isl和共存环境,因为这时候,因为部分vlan的prune修剪。
全部交换机都可以传输的就是nativevlan,这个vlan就变成了管理vlan。
—
NNI:
把管理包当作单S-TAG
UNI:
用S-VID代替管理VLAN的VID
•在UNI输入端口:
管理VLAN的TPID需要配置成芯片的内部TPID。
使得管理包到达UNI的时候被当作C-tagged包VLANFP或ingressVLANtranslation必须被配置为把管理VID转换成S-VID。
•在NNI输入端口:
管理VLANtag的TPID需要配置成允许的外层TPID之一使得管理包到达NNI端口时被当作S-tagged包处理。
•在UNI输出端口:
对于管理VID,应该被配置为零,来保护管理VLAN的tag不被去掉。
而且,基于每个端口的位和VT_MISS_UNTAG都应该为0,避免万一VLAN转换失败时丢弃管理包和去掉管理包的tag。
然而,这样做会导致其他在输出VLAN转换表里查找不到的非管理包不被扔掉和不被去掉tag。
这不是想要的效果。
因此我们需要确保非管理包在输出VLAN转换表里能查找到。
因此输出VLAN转换表必须配置成以下其中一种:
-管理包在表里总是能找到
-管理包的VID被转换成相同的值
!
•在NNI输出端口:
对于管理VID,应该被配置为零,来保护管理VLAN的tag不被去掉。
应该设置成1,这样外层TPID就以为索引,从管理VLAN的EGR_OUTER_TPID寄存器获得。
缓存管理(BufferManagementMechanisms)
.
IngressBackpressure
1、输入背压,用作流控
2、IBPPKTCOUNT和IBPCELLCOUNT记录输入数量(包或cell)
3、IBPBKSTATUS表示背压状态
4、IBPCELLSETLIMITorIBPPKTSETLIMIT设置限制值
5、当超过限制值,端口进入背压状态。
6、端口进入背压状态,发送值为0xFFFF的pause帧。
当解除背压状态,发送值为0x00的pause帧
7、&
8、
PAUSE测量(PauseMetering)
)
1、用来做输入限速
2、有一个漏桶结构,如图
3、
4、每个包到达时,相应个数的标记会增加到桶里,每个标记代表。
每微秒自动减去REFRESHCOUNT个标记。
因此,假设REFRESHCOUNT=0x61A,每秒减去0x61A×(1000000÷=0个标记,因为每个标记,约等于1Mbps。
也就是说带宽100M。
5、每发出一个cell,桶更新一次,MMU检测到有一定数据流,通知输入端口进行更新。
6、当BUCKET_COUNT到达DISCARD_THD后,丢包,直至低于RESUME_THD。
}
HOL保护
线头阻塞(Head-of-lineblocking,HOL)是一种出现在缓存式通信网络交换中的一种现象。
交换通常由缓存式输入端口、一个交换架构(SwitchFabric)以及缓存式输出端口组成。
当在不同的输入端口上到达的包被指向相同的输出端口的时候就会出现线头阻塞。
由于输入缓存以及交换设计的FIFO特性,交换架构在每一个周期中只能交换缓存头部的包。
如果某一缓存头部的包由于拥塞而不能交换到一个输出端口,那么该缓存中余下的包也会被线头包所阻塞,即使这些包的目的端口并没有拥塞。
1、支持基于cell和packet的保护机制,两种机制同时生效,都可以配置。
2、Cell基于每个队列总缓存空间,packet基于每个队列指定的包数量
3、这种机制的目的是:
支持有损的缓存管理、管理Cos粒度和输出端口的缓存资源
4、)
5、通过丢包实现这一功能,当输入端发生拥塞时,新到的包丢包。
6、通过MISCCONFIG寄存器的DYNAMIC_MEMORY_EN字段,设置是否打开动态内存分配。
7、静态分配:
为当前队列cells数,超过LWMCOSCELLSETLIMIT.寄存器的CELLSETLIMIT时进入HOL状态,低于CELLRESETLIMIT解除HOL状态
8、动态分配:
LWMCOSCELLSETLIMIT.寄存器的CELLSETLIMIT指定每个队列的静态分配的cell数目,这个值必须比cell总数(4096)少,然后剩下部分作为所有队列共享的动态分配数目。
每个cell代表128字节
9、TOTALDYNOVERLIMIT表示动态内存是否可分配,若超过TOTALDYNCELLLIMIT,变成true;若低于TOTALDYNCELLRESETLIMITSEL,变false
~
拥塞位(congestionBits)
1、拥塞位通过DSCP表或者CAP计量引擎设置
2、拥塞位用来表示红绿黄三种颜色。
3、CNGCOSPKTLIMIT寄存器提供一个阈值限制每个输出端口或队列的速率。
4、CNGCOSPKTSETLIMIT0用来比较红色包,CNGCOSPKTSETLIMIT1用来比较黄色包。
当COSPKTCOUNT超过限制,丢包。
`
sRED(SIMPLERANDOMEARLYDETECTION)
1、通过随机丢包来保护TCP同步
2、通过概率性丢弃有颜色的包实现活跃的队列管理,实现sRED
3、活跃的队列管理是一种算法,这种算法尝试预先丢包或标记某些帧。
目的是发现严重的拥塞情况并提前采取措施,使TCP源有助于拥塞后退
4、实现颜色识别、概率性丢包,提前丢弃指定颜色的包避免缓存满。
5、每次包到达都检测队列深度,如果小于某个较低的值,队列没有或有较小的拥塞。
如果超过某个较大的值,队列很拥塞,丢包。
如果在两个值之间,队列拥塞适中,通过计算得出一个丢包概率
]
DIFFERENTIATEDSERVICESQOS(区分服务Qos)
区分服务模型是一种能够区分QoS需求的多业务模型(一种计算机联网体系结构)。
它指定了一种简单、可伸缩、粗粒度的机制来分类、管理网络业务流,并在现代IP网络上提供了服务质量保证。
例如,DiffServ可以用于为关键网络流量(例如语音和视频)提供低延时、保证型业务,同时又为非关键业务(例如web流量和文件传输)提供了尽力而为的业务保证。
然而,与综合服务模型不同,使用区分服务的应用在发送数据之前不需要显式地通知路由器。
对于区分服务,网络根据每一个报文指定的QoS来提供一个特定类型的服务。
这种指定可以使用多种方式实现,例如,使用IP报文中的IP优先级比特或者源和目的地址。
网络使用QoS规范来分类、标记、整形、监管流量,并执行智能化的排队。
1、IEEE定义了8个级别的优先级,优先级7为最高优先级,优先级信息被携带在一个3bot的VLAVtag字段里并应用于所有端口。
2、》
3、Bcm53314有4个队列。
对于tagged包,优先级可能来自VLANtag或过滤机制。
对于untagged包,优先级来自ARL(VLAN地址表)或过滤机制。
4、包在输入端口被映射到优先级队列,在输出端口根据各种调度方式来调度队列
5、
6、最大、最小带宽测量,保证最大、最小带宽
7、这种机制的其中一个用途就是把队列分成不同调度组。
有以下几组:
MinNotMet、MaxNotMet、MaxExceeded
8、队列最小带宽测量:
9、实现原理:
这是一个漏的桶结构,包到达时加标记(token),每微秒减去一个refreshcount的标记
10、每个队列最小带宽设置范围为64Kbps到16Gbps。
11、最大突发大小(MIN_HI_THD_SEL)在4KB到16MB之间
12、如果当前桶装载量超过MIN_LO_THD_SEL,则IN_PROFILE_FLAG为true,表示满足最小带宽。
否则为false,不满足。
13、"
14、MIN_LO_THD_SEL影响最小带宽测量的操作时间表,如果MIN_LO_THD_SEL设置的很小,队列很快被标记达到最小带宽,减少队列在MinNotMet的时间。
减少调度策略分配给队列的优先时间
15、队列最大带宽测量:
16、实现原理:
这是一个漏的桶结构,包到达时加标记(token),每微秒减去一个refreshcount的标记
17、每个队列最大带宽设置范围为64Kbps到16Gbps。
18、MAX_THD_SEL值在4K到16MB之间
19、如果当前桶装载量超过MAX_THD_SEL,队列服务停止
20、基于队列的最大输出带宽机制同样适用在整个输出端口
21、优先级队列的调度方式有四种SP、RR、WRR、WDRR。
22、SP是严格优先级调度,即总是优先转发队列3的数据包,直到队列3的数据包转发完毕,才开始转发队列2的数据包,队列2的数据包转发完毕才转发队列1的数据包,最后转发队列0的数据包。
23、RR是轮询的调度方式,交换机在转发数据包时,从高优先级队列到低优先级队列依次轮询转发数据包,每个队列转发一个数据包。
24、%
25、WRR是指带权优先级轮询,交换机在转发数据包时,根据权的配置从高优先级队列到低优先级队列轮询转发数据包,先从高优先级转发权个数的数据包,在转发次高优先级的权个数数据包,直到最低优先级队列转发完,又从高优先级开始转发,以此推类。
26、WDRR是带权的欠账轮询调度方式,即队列3的权值为4,那么在某一轮,它可以转发5个数据包,而下一轮,它只有转发3个数据包的额度。
27、SP+WRR:
在WRR模式中,权重为0的队列被严格优先处理,所有权重为0的队列处理完后,才按WRR方式处理其他队列。
%
单速率三色标记(SrTCM)和双速率三色标记(TrTCM)
"
单速率三色标记(SingleRateThreeColorMarker)
摘要
本文主要描述单速率三色标记(SingleRateThreeColorMarker,srTCM),它可被用于Diffserv流量调节器(trafficconditioner)中。
SrTCM测量信息流,并根据三种流量参数(提交信息速率,CommittedInformationRate,CIR;提交组量大小CommittedBurstSize,CBS;超量组量大小ExcessBurstSize,EBS)对包进行标记,这三个参数我们分别称为绿,黄和红标记。
如果包没有超过CBS就是绿的,如果超过CBS但未超过EBS就是黄的,如果超过EBS就是红的。
1.介绍
·
SrTCM测量信息流,并根据三种流量参数(提交信息速率,CommittedInformationRate,CIR;提交组量大小CommittedBurstSize,CBS;超量组量大小ExcessBurstSize,EBS)对包进行标记,这三个参数我们分别称为绿,黄和红标记。
如果包没有超过CBS就是绿的,如果超过CBS但未超过EBS就是黄的,如果超过EBS就是红的。
Meter工作在两种模式下:
在色盲模式下,它假设包是无色的;而在非色盲模式下,它假设包是被标记过颜色的。
至于包是如何被标记上颜色的,不是本文讨论的范围。
Maker根据Meter的结果对IP包进行着色,颜色被标记在DS域中。
在其它文章中还描述了双速率颜色标记法,在这种方法下,包根据双速率和双组大小进行标记。
2.配置
srTCM的配置是通过设置模式和设置CIR,CBS和EBS三个参数完成的。
CIR是用于表示每秒IP包的字节数的,字节数包括IP包头。
CBS和EBS也以字节为单位,CBS和EBS必须被设置,它们之一必须大于0,如果CBS或EBS的值大于0,它的值最好大于等于流中可能IP包的MTU。
(
Meter工作
Meter的动作由模型和两个标记桶(C和E)表示,这两个标记共享通用速率CIR。
C的最大值是CBS,而E的最大值是EBS。
起始时(T=0)C和E的值为最大值。
Tc(0)=CBS,Te(0)=EBS,以后每秒钟Tc和Te每秒钟以下面的规则更新CIR次:
if(Tcif(TeTc和Te保持不变。
如果srTCM在色盲模式下,大小为B字节的包在t时间到达,则:
If(Tc(t)-B>=0){
>
包为绿色,if(Tc
else
If(Te(t)-B>=0){
包为黄色,if(Te
else
包为红色。
而在非色盲情况下,则:
If(包被预标记为绿色,而且Tc(t)-B>=0){
包为绿色,if(Tc
|
else
If(包被预标记为绿色或黄色,而且Te(t)-B>=0){
包为黄色,if(Te
else
包为红色时不对Tc和Tc进行操作。
在实际实现中可能会对上面的过程有所更改。
Mark工作主要是反映了meter的结果。
此服务可以对不同颜色的包进行不同的处理,例如可以抛弃红色的包,因为它已经超过了规定的参数值。
&
1、ContentAware测量引擎对带宽进行监测和控制。
2、每个数据流有一个profile,如果数据流的特征与profile吻合,则为n-profile。
否则out-of-profile。
3、Bcm53314支持单速率三色标记(SrTCM)和和双速率三色标记(TrTCM)(上面一大段文字有介绍)
4、)
5、测量引擎对数据流进行颜色标记后由策略引擎对已标记的包进行带宽控制
|
广播风暴
@
1、支持每个端口的基于字节或包个数的限制,防止网络中形成广播风暴
2、可以限制三种包:
广播包、组播包、DLF包
3、每种包类型分别有计数器对接收的包进行计数,如果超过限制则丢包
|
增强的功能和操作
链路聚合
\
1、支持最多32个trunk组,每个trunk组最多8个成员端口
2、成员端口在TRUNK_BITMAP表里设置,trunk组在TRUNK_GROUP表里设置
3、进入GbE端口的包返回一个MODID和PORTID,MODID用来与目的芯片的MODID比较,PORTID用来分队列。
如果PORTID的高位被置位,那么MODID和PORTID被当作TGI