bcm53314笔记

更新时间:2024-03-01 14:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Bcm53314笔记

结构

1、 模块化、管道

2、

3、 Intelligent parser:检查来自Gbe 和 CMIC的包,头128bit 4、 L2交换:选择VLAN type、查找VLAN、L2单播、L2组播 5、 CAP(FP):可用于Qos、ACL、DOS防御

6、 Buffer Management:Mirror、trunk、Admission Control 7、 Traffic Management:Queuing、Scheduling、Shaping 8、 Modification:可以由tunneling产生

9、 Gigabit Ethernet Port Interface Controller (GPIC) block:可连接SGMII、SerDes 10、 MMU:有一个512KB Cell Buffer Pool (CBP),支持IBP、HOL、pause

IBP:背压,输入流量过大发pause帧 HOL:输出超过limit时丢包

Shaping:输入流量超过limit则发pause帧 11、 look up table:内存表,在on chip memory,不在cpu内存空间 12、 搜索引擎:两种搜索引擎:Hash Search Engine和CAM Seacher Engine,Hash Search Engine用

于L2表和VLAN表,CAM Search Engine用于策略路由、ACL,可查找包字段 13、 每端口MAC限制:防止MAC地址攻击,每端口学习的MAC地址数达到限制后丢包or发到

CPU。 14、 可以通过软件手动增加/删除MAC地址,遵循地址限制,除非是静态地址或者组播地址。LAG

按照实际成员端口来学习 15、 端口被加进trunk组前腰删除所有L2 entry

16、 CAP:

17、 18、 19、 20、 53314的FP(CAP)有4个slice,每个512条规则

物理slice被映射到虚拟slice,虚拟slice在虚拟slice 组里 有一些计数器用来支持MIB 53314支持内部cpu和CMIC

21、

22、

Packet Flow

1

2、超大帧!!!13K!!!

3、先经过parser抽取输入逻辑和CAP所需的字段,再检查tag 4、double tag:Stacked VLAN也称QinQ 或Double VLAN。其实现为在802.1q协议标签前再次封装802.1q协议 标签,其中一层标识用户系统网络(customer network),一层标识网络运营网络(service provider network),将其扩展实现用户线路标识。

5、VLAN解析->源地址学习->目的地址查找->如果是组播包,查找L2MC表 6、通过PCI接口连接外部CPU

7、可以从CPU端口收发包,收发过程与其他Gbe端口一样,可能发往逻辑端口、stacking端口、丢包、或者发回cpu端口

L2 特征和操作

1、 地址学习:学习未知SA

2、 包老化:丢弃MMU里存在超过指定时间的包

3、 地址老化:支持软硬件老化,软件可以增加、删除、搜索和增加静态地址 4、 地址状态移动:同一个SA转移到另一个port,需relearn 5、 L2MC:线速,如果在L2表找到对应项,该表项有一个指针指向L2MC表,L2MC表返回port bitmap

用作DA

6、 L2_USER_ENTRY:通过软件设置,静态地址

7、 802.1Q:给不带标记包或VID=0的包加标记、改变标记、选择性丢包、可以识别GVRP组播地址

01-80-C2-00-00-21并把它转发到cpu、去掉untag端口发出去的包的tag 8、 GVRP:一个通过组播向其他端口传递端口VLAN信息的协议

9、 STP:根桥、根端口、计算路径开销、裁剪路径,如果拓扑结构改变则重新计算 10、 BPDU:携带STP信息的包 11、 每个VLAN指定一个生成树组表,表里的条目记载端口状态。2’b00 = disable 2’b01 = blocking

2’b10 = learning/listening 2’b11 = forwarding

VLAN

1、 support IEEE 802.1Q tagged, MAC-based, IP subnet-based, protocol-based, and port-based VLANs

2、 TPID(Tag Protocol Identifier,标签协议标识)VLAN Tag中的一个字段,IEEE 802.1q协议规定该字段的取值为0x8100。 用来表示本数据帧是带有VLAN Tag的数据。该字段长度为16bit。

3、 如果包TPID与设置的不一致(PORT_TAB/IPORT_TAB.OUTER_TPID),则认为是untagged包,如果一致,检查VID是否为0,0则加上riority tag

4、 VLAN顺序:PORT表:VLAN_PRECEDENCED? 0 = MAC-based VLAN has precedence over subnet-based VLANS? 1 = Subnet-based VLANS has precedence over MCA-based VLANS 5、 MAC-based VLAN:根据源MAC地址分配VID

6、 Protocol Based VLAN:根据以太网协议(frame type/ethertype)来分配VID 7、 Port-Based VLAN:根据端口分配VID(默认)

8、

9、 双标签:如上图,双标签分别是S-TAG(服务标记)和C-TAG(客户标记)。客户标记是用户自身的VLAN标记,服务标记是ISP在传输中使用的标记

10、 bcm53314为ISP提供两种方法来区分用户:一种是透明的局域网服务:用S-TAG封装带C-TAG的用户数据;另一种是映射服务(VLAN转换):根据输入端口和VID来决定SPVLAN,可以带双TAG或者用S-TAG代替C-TAG

11、

12、 Double-tag下,有两种可能的地址学习方式:一是根据C-TAG的广播域学习,那样就会有很多重叠的地址(bcm53314不支持这个),另一种方法是根据S-TAG的广播域来学习,忽略用户VLAN

13、 VLAN转换:在VLAN转换模式下,对输入包用VID和端口号作为索引查VLAN_XLATE表,如果找到对应项,根据VLAN_XLATE.ADD_VID位来增加VLAN tag或代替原有tag。对输出包则查EGR_VLAN_XLATE表,把SPVID替换成CVID和优先级

14、

UNI向NNI输入:

包进入输入端口 PORT_TABLE.NNI_PORT=0? NNI端口 yes 是UNI TPID=VLAN_CTRL.INNER.TPID? no Yes untagged tagged 分配S-TAG信息 CVID=0? no Yes 分配S-TAG信息 Priority tagged 分配S-TAG信息 15、

包从输入端口获得S_TAG信息,进入输出端口后,根据这些信息加S-TAG,S-TAG各字段值从以下方法得到:

? TPID: S-TAG的TPID根据EGR_VLAN_CONTROL_1[egress port].OUTER_TPID_SEL,从EGR_VLAN_CONTROL_1[egress port].OUTER_TPID_INDEX 或

EGR_VLAN[S-VID].OUTER_TPID_INDEX获得,2-bit OUTER_TPID_INDEX用来索引EGR_OUTER_TPID表来获取TPID值

? S-VID:来自输入端口

? S-PRI and S-DE:来自输入端口的包优先级和CNG被映射为3位S-PRI和1位S-DE,通过EGR_PRI_CNG_MAP表。如果EGR_VLAN_CONTROL_1[egress port].CFI_AS_CNG[outer TPID index] = 1,使用来自EGR_PRI_CNG_MAP 表的S-DE。否则,来自输入端口的外层CFI 值用作S-DE。 ? Outer CFI=0,因为没有外层CFI

NNI向UNI输入:

包进入输入端口 PORT_TABLE.NNI_PORT=1? yes 是UNI no 外TPID= ING_OUTER_TPID? 内TPID= VLAN_CTRL.INNER_TPID? Yes Yes 单标签 双标签 No

不带标签 CVID=0? no Yes PORT_TABLE.PORT_DIS_UNTAG=1? 分配S-TAG信息 Priority tagged Yes

No 分配S-TAG信息 扔掉 发到输出端口

NNI发往UNI,输出(1):

来自输入端口的包 有C-TAG? Yes No EGR_VLAN_CONTROL_1[egress port].REMOVE_INNER_TAG = 1? EGR_SRC_PORT[local ingress port].ADD_INNER_TAG = 1 No Yes 去掉C-TAG Yes No 加C-TAG 保留C-TAG 不加C-TAG EGR_VLAN[S-VID].UT_PORT_BITMAP[egress port] = 1? Yes 去掉S-TAG 下一步

NNI发往UNI,输出(2):

上一步 EGR_VLAN[S-VID].UT_PORT_BITMAP[egress port] = 0 and EGR_VLAN_CONTROL_1[egress port].VT_ENABLE = 1 查表EGR_VLAN_XLATE Yes 找到匹配项? No 更改最外层的TAG的下列字段:VID、PRI、CFI、TPID 扔掉或去掉最外层TAG或改TPID (视寄存器配置而定)

UNI发往UNI, 输入过程

? 与UNI发往NNI的输入过程相同

UNI发往UNI, 输出过程

?与NNI发往UNI的输出过程相同

NNI发往UNI, 输入过程

? 与NNI发往UNI的输入过程相同 UNI发往UNI, 输出过程

?与UNI发往NNI的输出过程相同

VLAN Mirroring

UNI 输入镜像

输入: 包输入UNI端口转发向MTP 输出: 向MTP输出,不修改包

NNI 输入镜像

输入: 包输入UNI端口转发向MTP 输出: 向MTP输出,不修改包

Management VLAN(管理VLAN)

网友3:native vlan本质来说,就是不带vlan ID的vlan,无论是802.1q或者isl。因为不带vlan ID,如何交换机都可以接受和传递它的包,无论是不支持3层的还是一个hub。

而在此基础上提出了managerment vlan。这个概念其实是源于以前有isl和802.1q共存环境,因为这时候,因为部分vlan的prune修剪。全部交换机都可以传输的就是native vlan,这个vlan就变成了管理vlan。

NNI:把管理包当作单S-TAG

UNI:用S-VID代替管理VLAN的VID

? 在UNI输入端口:管理VLAN的TPID需要配置成芯片的内部TPID。使得管理包到达UNI的时候被当作C-tagged包 VLAN FP 或 ingress VLAN translation必须被配置为把管理VID转换成S-VID。

? 在NNI输入端口:管理VLAN tag的TPID需要配置成允许的外层TPID之一使得管理包到达NNI端口时被当作S-tagged包处理。

? 在UNI输出端口:对于管理VID,EGR_VLAN.UT_PORT_BITMAP应该被配置为零,来保护管理VLAN的tag不被去掉。而且,基于每个端口的EGR_VLAN_CONTROL_1.VT_MISS_DROP位和

VT_MISS_UNTAG都应该为0,避免万一VLAN转换失败时丢弃管理包和去掉管理包的tag。然而,这样做会导致其他在输出VLAN转换表里查找不到的非管理包不被扔掉和不被去掉tag。这不是想要的效果。因此我们需要确保非管理包在输出VLAN转换表里能查找到。因此输出VLAN转换表必须配置成以下其中一种:

-管理包在表里总是能找到

-管理包的VID被转换成相同的值

? 在NNI输出端口:对于管理VID, EGR_VLAN.UT_PORT_BITMAP应该被配置为零,来保护管理VLAN的tag不被去掉。EGR_VLAN_CONTROL_1.OUTER_TPID_SEL 应该设置成1,这样外层TPID就以EGR_VLAN.OUTER_TPID_INDEX为索引,从管理VLAN的EGR_OUTER_TPID寄存器获得。

缓存管理(Buffer Management Mechanisms)

Ingress Backpressure

1、 输入背压,用作流控

2、 IBPPKTCOUNT和IBPCELLCOUNT记录输入数量(包或cell) 3、 IBPBKSTATUS表示背压状态

4、 IBPCELLSETLIMIT or IBPPKTSETLIMIT设置限制值 5、 当超过限制值,端口进入背压状态。

6、 端口进入背压状态,发送值为0xFFFF的pause帧。当解除背压状态,发送值为0x00的pause帧

7、

PAUSE 测量(Pause Metering)

1、 用来做输入限速

2、 有一个漏桶结构,如图

3、

4、 每个包到达时,相应个数的标记会增加到桶里,每个标记代表0.5bit。每7.8125微秒自动减去

REFRESHCOUNT个标记。因此,假设REFRESHCOUNT=0x61A,每秒减去0x61A × (1000000÷7.8125)= 199936000个标记,因为每个标记0.5bit,约等于1Mbps。也就是说带宽100M。 5、 每发出一个cell,桶更新一次,MMU检测到有一定数据流,通知输入端口进行更新。 6、 当BUCKET_COUNT到达DISCARD_THD后,丢包,直至低于RESUME_THD。

HOL保护

线头阻塞(Head-of-line blocking, HOL)是一种出现在缓存式通信网络交换中的一种现象。交换通常由缓存式输入端口、一个交换架构(Switch Fabric)以及缓存式输出端口组成。当在不同的输入端口上到达的包被指向相同的输出端口的时候就会出现线头阻塞。由于输入缓存以及交换设计的FIFO特性,交换架构在每一个周期中只能交换缓存头部的包。如果某一缓存头部的包由于拥塞而不能交换到一个输出端口,那么该缓存中余下的包也会被线头包所阻塞,即使这些包的目的端口并没有拥塞。

1、 支持基于cell和packet的保护机制,两种机制同时生效,都可以配置。

2、

3、 4、 5、 Cell基于每个队列总缓存空间,packet基于每个队列指定的包数量

这种机制的目的是:支持有损的缓存管理、管理Cos粒度和输出端口的缓存资源 通过丢包实现这一功能,当输入端发生拥塞时,新到的包丢包。

通过MISCCONFIG寄存器的DYNAMIC_MEMORY_EN字段,设置是否打开动态内存分配。

6、 7、

8、

静态分配:COSLCCOUNT.LCCOUNT为当前队列cells数,超过LWMCOSCELLSETLIMIT.寄存器的CELLSETLIMIT时进入HOL状态,低于CELLRESETLIMIT解除HOL状态 动态分配:LWMCOSCELLSETLIMIT.寄存器的CELLSETLIMIT指定每个队列的静态分配的cell数目,这个值必须比cell总数(4096)少,然后剩下部分作为所有队列共享的动态分配数目。每个cell代表128字节

TOTALDYNOVERLIMIT表示动态内存是否可分配,若超过TOTALDYNCELLLIMIT,变成true;若低于TOTALDYNCELLRESETLIMITSEL,变false

拥塞位(congestion Bits)

1、 拥塞位通过DSCP表或者CAP计量引擎设置 2、 拥塞位用来表示红绿黄三种颜色。

3、 CNGCOSPKTLIMIT寄存器提供一个阈值限制每个输出端口或队列的速率。

4、 CNGCOSPKTSETLIMIT0用来比较红色包,CNGCOSPKTSETLIMIT1用来比较黄色包。当

COSPKTCOUNT超过限制,丢包。

sRED (SIMPLE RANDOM EARLY DETECTION)

1、 通过随机丢包来保护TCP同步

2、 通过概率性丢弃有颜色的包实现活跃的队列管理,实现sRED

3、 活跃的队列管理是一种算法,这种算法尝试预先丢包或标记某些帧。目的是发现严重的拥塞情况并提前采取措施,使TCP源有助于拥塞后退

4、 实现颜色识别、概率性丢包,提前丢弃指定颜色的包避免缓存满。

5、 每次包到达都检测队列深度,如果小于某个较低的值,队列没有或有较小的拥塞。如果超过某个较大的值,队列很拥塞,丢包。如果在两个值之间,队列拥塞适中,通过计算得出一个丢包概率

DIFFERENTIATED SERVICES QOS(区分服务Qos)

区分服务模型是一种能够区分QoS需求的多业务模型(一种计算机联网体系结构)。它指定了一种简单、可伸缩、粗粒度的机制来分类、管理网络业务流,并在现代IP网络上提供了服务质量保证。例如,DiffServ可以用于为关键网络流量(例如语音和视频)提供低延时、保证型业务,同时又为非关键业务(例如web流量和文件传输)提供了尽力而为的业务保证。然而,与综合服务模型不同,使用区分服务的应用在发送数据之前不需要显式地通知路由器。

对于区分服务,网络根据每一个报文指定的QoS来提供一个特定类型的服务。这种指定可以使用多种方式实现,例如,使用IP报文中的IP优先级比特或者源和目的地址。网络使用QoS规范来分类、标记、整形、监管流量,并执行智能化的排队。

1、 IEEE 802.1D定义了8个级别的优先级,优先级7为最高优先级,优先级信息被携带在一个3bot的VLAV tag字段里并应用于所有端口。

2、 Bcm53314有4个队列。对于tagged包,优先级可能来自VLAN tag或过滤机制。对于untagged包,优先级来自ARL(VLAN地址表)或过滤机制。

3、 包在输入端口被映射到优先级队列,在输出端口根据各种调度方式来调度队列

4、

5、 最大、最小带宽测量,保证最大、最小带宽

6、 这种机制的其中一个用途就是把队列分成不同调度组。有以下几组:MinNotMet、MaxNotMet、MaxExceeded 7、 队列最小带宽测量:

8、 实现原理:这是一个漏的桶结构,包到达时加标记(token),每7.8125微秒减去一个refreshcount的标记

9、 每个队列最小带宽设置范围为64 Kbps到16 Gbps。

10、 最大突发大小(MIN_HI_THD_SEL) 在4KB到16MB之间

11、 如果当前桶装载量超过MIN_LO_THD_SEL,则 IN_PROFILE_FLAG为true,表示满足最小带宽。否则为false,不满足。

12、 MIN_LO_THD_SEL影响最小带宽测量的操作时间表,如果MIN_LO_THD_SEL设置的很小,队列很快被标记达到最小带宽,减少队列在MinNotMet的时间。减少调度策略分配给队列的优先时间 13、 队列最大带宽测量:

14、 实现原理:这是一个漏的桶结构,包到达时加标记(token),每7.8125微秒减去一个refreshcount的标记

15、 每个队列最大带宽设置范围为64 Kbps到16 Gbps。 16、 MAX_THD_SEL值在4K到16MB之间

17、 如果当前桶装载量超过MAX_THD_SEL,队列服务停止 18、 基于队列的最大输出带宽机制同样适用在整个输出端口

19、 优先级队列的调度方式有四种SP、RR、WRR、WDRR。

20、 SP是严格优先级调度,即总是优先转发队列3的数据包,直到队列3的数据包转发完毕,才开始转发队列2的数据包,队列2的数据包转发完毕才转发队列1的数据包,最后转发队列0的数据包。 21、 RR是轮询的调度方式,交换机在转发数据包时,从高优先级队列到低优先级队列依次轮询转发数据包,每个队列转发一个数据包。

22、 WRR是指带权优先级轮询,交换机在转发数据包时,根据权的配置从高优先级队列到低优先级队列轮询转发数据包,先从高优先级转发权个数的数据包,在转发次高优先级的权个数数据包,直到最低优先级队列转发完,又从高优先级开始转发,以此推类。

23、 WDRR是带权的欠账轮询调度方式,即队列3的权值为4,那么在某一轮,它可以转发5个数据包,而下一轮,它只有转发3个数据包的额度。

24、 SP+WRR:在WRR模式中,权重为0的队列被严格优先处理,所有权重为0的队列处理完后,才按WRR方式处理其他队列。

单速率三色标记(SrTCM)和双速率三色标记(TrTCM)

单速率三色标记(Single Rate Three Color Marker)

摘要

本文主要描述单速率三色标记(Single Rate Three Color Marker,srTCM),它可被用于Diffserv流量调节器(traffic conditioner)中。SrTCM测量信息流,并根据三种流量参数(提交信息速率,Committed Information Rate, CIR;提交组量大小Committed Burst Size,CBS;超量组量大小Excess Burst Size,EBS)对包进行标记,这三个参数我们分别称为绿,黄和红标记。如果包没有超过CBS就是绿的,如果超过CBS但未超过EBS就是黄的,如果超过EBS就是红的。

1. 介绍

SrTCM测量信息流,并根据三种流量参数(提交信息速率,Committed Information Rate, CIR;提交组量大小Committed Burst Size,CBS;超量组量大小Excess Burst Size,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。 // 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=745&d=gfm38k 3. Meter工作

Meter的动作由模型和两个标记桶(C和E)表示,这两个标记共享通用速率CIR。C的最大值是CBS,而E的最大值是EBS。起始时(T=0)C和E的值为最大值。Tc(0) = CBS, Te(0) = EBS,以后每秒钟Tc和Te每秒钟以下面的规则更新CIR次:

if (Tc

如果srTCM在色盲模式下,大小为B字节的包在t时间到达,则:

If (Tc(t)-B >= 0) {

包为绿色,if (Tc

If (Te(t)-B >= 0) {

包为黄色,if (Te

包为红色。

而在非色盲情况下,则:

If(包被预标记为绿色,而且Tc(t)-B >= 0){ 包为绿色,if (Tc

If(包被预标记为绿色或黄色,而且Te(t)-B >= 0){ 包为黄色,if (Te

包为红色时不对Tc和Tc进行操作。

在实际实现中可能会对上面的过程有所更改。Mark工作主要是反映了meter的结果。此服务可以对不同颜色的包进行不同的处理,例如可以抛弃红色的包,因为它已经超过了规定的参数值。

1、 ContentAware测量引擎对带宽进行监测和控制。

2、 每个数据流有一个profile,如果数据流的特征与profile吻合,则为n-profile。否则out-of-profile。 3、 Bcm53314支持单速率三色标记(SrTCM)和和双速率三色标记(TrTCM)(上面一大段文字有介绍) 4、 测量引擎对数据流进行颜色标记后由策略引擎对已标记的包进行带宽控制

广播风暴

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被当作TGID 4、TRUNK_GROUP表有8个条目,每个条目都有MODID和PORTID,用来选择一个作为发包的端口。 5、TRUNK_GROUP表又一个3位的RTAG字段,用来选择选路策略,通过选路策略计算出一个哈希值,这个哈希值再找到具体端口,实现选路

6、

7、有以下这些选路策略:

8、

9、如果不是一个IP包,会自动选择SA、DA这种哈希算法

10、如果是非单播包,哈希值索引到16个NONUCAST_TRUNK_ BLOCK_MASK寄存器之一。这个寄存器用来选出trunk组里的一个端口。通过这个寄存器生成掩码,与转发表mask出一个新转发表。

11、

端口镜像(Mirror)

1、 支持以下mirror:输入mirror、输出mirror、输入和输出mirror、基于MAC的mirror、通过stack的mirror

2、 在以上所有情况下,在NONUCAST_TRUNK_ BLOCK_MASK基础上支持4个输入MTP(Mirror-to-port)和4个输出MTP

3、 Mirror_Control register的M_ENABLE位置位,打开mirror功能。Mirror支持以下功能 4、 输入MTPs和输出MTPs 可以是不同或同一个端口 5、 最多8个MTPs

6、 MTP端口可以是逻辑端口(聚合端口)

7、 不检查VLAV成员,必须是所有VLAN成员 8、 输入的包不修改直接转发

9、 输出包打上VLAN标记再转发

10、 在单端口上允许交换和镜像同时进行,接收到交换和镜像的拷贝。

11、 如果包是被输入和输出镜像,那么输入和输出的拷贝将发送到MTP端口 12、 发送到输入端口的包未经修改

13、 发送到输出端口的包被修改(如果有的话)

打开输入镜像

相应的输入端口PORT[ingress].MIRROR = 1.

相应端口的MIRROR_CONTROL register的IM_MTP_INDEX指针指向MTP端口的IM_MTP_INDEX表

IM_MTP_INDEX表记录MODULE_ID和PORT_TGID(聚合组ID)

打开输出镜像

EMIRROR_CONTROL寄存器里相应的输出被镜像端口置位。

镜像端口在 Mirror_Control Register里的EM_MTP_INDEX设置。用户通过 设置EM_MTP_INDEX 表里的MODULE_ID和PORT_TGID字段设置MTP

端口安全

支持以下端口安全的应用:

1、 端口堵塞(port blocking):即使是相同VLAN,也可以阻止指定端口向其他端口发包。通过Egress_Mask寄存器设置

2、 MAC堵塞(MAC blocking):阻止指定MAC地址向端口发数据,最多可以指定32个MAC地址 3、 每个流堵塞:CAP的动作可以根据指定数据类型阻止包从指定端口发送

4、 广播、组播、DLF控制:每个输入端口可以阻止广播、组播和DLF包向指定端口发送。在端口安全应用上,可以防止包发往VLAN内的端口,包括CPU端口,例如防止DLF包上CPU

硬件协议检查

可以通过硬件对协议进行检查,以提供安全应用,例如防止DOS攻击,硬件检查允许用户扔掉以下情况的包:

? SIP = DIP for IPv4/IPv6 packets ? TCP_SYN Flag = 0

? TCP packets with control flags = 0, and sequence number = 0.

? TCP packets with FIN, URG and PSH bits set, and sequence number = 0. ? TCP packets with SYN and FIN bits are set.

? TCP source port number = TCP destination port number.

? First TCP fragment does not have the full TCP header (less than 20 bytes). ? TCP header has fragment offset value as 1.

? UDP Source Port number = UDP Destination Port number.

? CMP ping packets payload is larger than the programmed value of ICMP maximum size. ? Fragmented ICMP packets.

以上设置通过DOS_Control寄存器设置

CMIC packet DMA

1、DMA引擎:允许用户从CPU(PCI缓存)传送数据到端口,反之亦然。 2、CPU发数据时,设备进行DMA读取。CPU收数据时,进行DMA写

3、在CPU发送路径里包被写入输入管道(IP),在CPU接收路径,包从输出管道(EP)读取 4、Bcm53314支持4个DMA通道,他们可以各自同时读写

5、DMA控制器以32bit为边界传输数据,不管cell的字节个数,DMA控制器以32bit操作PCI的内存空间。

6、DMA控制器总是以128字节大小为一个cell向IP(ingress pipeline)发送包

7、包以128字节为一个cell大小从CMIC发往IP,因为数据传输以32bit为边界,传输一个cell要32个beats。

8、包以32字节为一个cell大小从EP(egress pipeline)发往CMIC,因为数据传输以32bit为边界,传输一个cell要8个beats。第一个cell可以多发8个beats来传送状态信息 9、本地或外部CPU可以向53314插入包,芯片把它当做一般从端口收到的包处理。可能会对它解封装、转发、封装、加tag、丢弃、发回CPU等操作

sFlow流监测

1、 除了支持标准的MIB(RMON、SMON、SNMP)S外,还支持RFC3176 SFlow流监测 2、 sFlow采用达到一定准确度的随机包采样方法来描述数据流的特征

3、 sFlow由代理器和分析器组成,bcm53314有一个内建的代理器,分析器在软件的应用层实现。Bcm53314的代理器采用基于时间的随机采样方法对数据流采样。样本包以sFloe数据包格式发往软件分析器。

4、 独立监测输入和输出数据流,在SFLOW_ING_THRESHOLD和SFLOW_EGR_THRESHOLD寄存器分别有16bit的阈值位

5、 每个端口有24bit随机数,也有随机数种子字段,可配置。

6、 当enable,16位阈值加上8位0后与24位随机数比较,如果随机数小于或等于阈值,则对这个包采样。

7、 样本包有优先级。基于CPU_CONTROL_2.CPU_SFLOW_PRI 。 DMA Control Block Descriptor 里的REASON字段指明包是因为sFlow而发往CPU。CPU_SFLOW_SRC(bit 5) for ingress sFlow and/or CPU_SFLOW_DST (bit 6) for egress sFlow 8、 包采样速率从0%到0.4%(根据阈值)

Note:DMA Control Block Descriptor:硬件上设计了一个协议,这个协议规定了怎么控制DMA传输数据。软件要按照这个协议向这个东西写数据。然后硬件就会自己处理

自动DOS防护

1、 BCM53314支持检测以下类型的Denial of Service (DoS) 攻击类型,并且能够通过配置忽略这些攻击包

2、

本文来源:https://www.bwwdw.com/article/90ha.html

Top