经过第一代的交换机项目后,博主也算对交换机有了更深的认识,但是第一代的Feature过于单一,架构简单,和市场化的交换机功能完全脱节。而在学习Switch Core的过程中,也没有找到什么完善的中文学习资料,所以博主准备进一步完善以太网交换机的项目,希望凭微薄之力,为想学习的同学们多整理一些资料。
第二代交换机有更丰富的feature,更贴近真正使用的功能,除rtl代码,详细设计文档外,还会包括验证环境、验证代码,最后项目完成后,会全部开源供大家学习,顺利的话,希望还能上FPGA进行原型验证。
为了便于称呼,我们将对第二代交换机项目取名为Atom,也意为之后一切项目的开始。
Atom Feature
考虑到对CPU暂时不熟悉,所以Atom没有设置控制端口,也没有独立的CPU承担固件功能。Atom定位于百兆Switch Core,将支持以下feature:
数据交换能力达到400Mbps,即4 Port x 100Mbps
支持2K MAC地址的存储与查询(包括MAC地址、Multicast table、VLAN table)
支持SM3或SHA-1的HASH算法
支持2MB的数据缓存区
支持基于端口的VLAN、基于tag的VLAN、基于流量类型的VLAN
支持全双工10/100 Mbps的MII接口
发送端、接收端MAC支持可配置的SM2/AES数据流加解密
支持802.3x Flow Control
支持QoS,基于Port优先级或基于帧优先级进行仲裁输出
支持多播、组播包的发送
支持基于QCN的拥塞管理
支持DPI深度包检测,进行流量类型区分,防火墙功能
支持Flush功能:全局Flush或者优先级Flush
支持风暴控制
支持基于L2层的流量筛选
支持Packet重标记
支持流量统计
支持流量重定向
Atom架构
Atom仍将支持4Port,接口也保留双工的10M/100MHz的MII,通过4个MAC接收/发送数据,支持SPI接口访问寄存器模块,对第一代交换机的MAC table进行扩展,还支持了Multicast table、VLAN table等。
Atom共分为9个模块:
MAC:分为RMAC和TMAC,包括L2 pause frame功能以及Switch Core v1的基本功能,支持SM2/AES加解密(可选)暂不实现完整的 MACsec IP;
PF(Packet Filter):负责入口处的L2、L3 Packet过滤,带有DPI(深度包检测功能);
PM(Packet Modifier):负责出口处Packet header内容的修改;
DB(Data Buffer):Atom的Packet缓存区,内部按优先级分为多条链表,所有Packet都缓存于此;
ENG(Switch Engine):负责管理Packet的自学习、老化、查询等操作,并根据查询结果进一步返回给ENG;
TKM(Token Manager):采用令牌桶算法,管理令牌数量;
QCN(Quantized Congestion Notification):实现QCN算法,进行拥塞控制;
TBM(Table Manager):实现SM-3/SHA-1的Hash算法,处理Hash冲突,负责管理多个Table;
CSR(Control and Status Register):通过SPI读写Atom所有控制、统计寄存器,并将寄存器连接到各模块;
由于本人和团队都是第一次独立进行规模化的项目设计,难免缺乏经验,在架构和设计方面若有不足之处,可以及时与我们沟通讨论,我们一定认真听取建议!!!
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !