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字段,设置是否打开动态内存分配。