Realtek交换芯片Vlan功能实现(基于838x、839x系列)

本文详细解析了S9999交换机在不同端口模式下(Access、Trunk、QinQ)的Vlan实现机制,包括报文Tag的识别流程、Ingress与Egress报文处理过程,以及单层与双层Tag报文在各类型端口间的处理差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1  S9999 Vlan的实现方式

1.1 普通端口之间的报文处理流程

S9999 在普通端口模式下(accesstrunk)在芯片内部使用Inner Vlan进行转发QinQ端口使用Outer Vlan进行转发。所有的端口,不论是access、trunk,还是QinQ模式的端口,Outer TPID掩码都配置为0x0,即不再识别报文的outer tag。

1.1.1 Ingress报文Tag识别流程

报文Tag识别流程如下图:

 

    从流程图中可以看出,当报文到达以后,首先匹配的O-TPID,之后是I-TPID,在现有的Vlan实现中,O-TPIDmask配置为0,即不会识别出报文的Outer Tag,认为报文都是Outer Untag的,之后在芯片内部为报文加上O-TPID

 

              

a . untag报文被识别成inner untag + outer untag类型的报文。报文进入芯片后被加上了Inner PVID和Outer PVID

b. single tag报文被识别成了inner tag + outer untag类型的报文,报文进入芯片内部以后被加上了Outer PVID

c.  double tag报文被识别成了inner tag + outer untag类型的报文,报文进入芯片内部后被加上了Outer PVID,原始报文中的TagB在芯片内部当做数据,不再走Vlan处理流程。

 

1.1.2 Access(Trunk)与Access(Trunk)类型的端口之间Untag报文与Single Tag的报文处理过程

  Vlan实现时,Access、Trunk口Ingress的Keep值为:

      IGR_P_ITAG_KEEP=0,

                   IGR_P_OTAG_KEEP=1

   Vlan实现时,Access、Trunk口Egress的Keep值为:

                  EGR_P_ITAG_KEEP=1

                  EGR_P_OTAG_KEEP=1

     Access与Trunk使用Inner Vlan转发,untag报文的inner vlan来自于端口的Inner PVID,single tag报文来自于原始报文的Vlan。这两种类型的报文在芯片类型的处理方式类似。

     报文经过VLAN Table Loopup、L2 Process之后,到达出端口,在出端口的时候,满足,Rx_Port.IGR_P_OTAG_KEEP=1&Tx_Port.Egr_P_OTAG_KEEP=1,报文在出口时,会再次剥掉Outer Vlan,和原始报文保持一致。

    

      在出端口的时候, Rx_Port.IGR_P_ITAG_KEEP=0&& Tx_Port.Egr_P_OTAG_KEEP=1,Inner Tag不能保持原始报文状态,会根据vlan中该端口的tag/untag状态去选择剥除vlan或者保留vlan

       

1.1.3   Access(Trunk)与Access(Trunk)类型的端口之间Double Tag的报文处理过程

    与Access、Trunk下single报文类似,double tag报文进入芯片之后,还是会由于Outer TPID的识别模式,而加上一层Outer PVID。

  

   TagA在内部当做Inner Tag,用于进行转发,TagB被当做数据处理,始终不会有变化。在Egress出,Outer VLAN(来自于O-PVID),根据KEEP值被剥除,TagA根据Vlan下的端口状态选择剥除或者不剥除。

 

1.2  QinQ端口与Trunk口之间的报文处理流程  

      Vlan实现时,QinQ端口Ingress的Keep值与一般模式有区别,为:

      IGR_P_ITAG_KEEP=1,

                IGR_P_OTAG_KEEP=0

   Vlan实现时,QinQ端口Egress的Keep值与一般模式相同,为:

                 EGR_P_ITAG_KEEP=1

                    EGR_P_OTAG_KEEP=1

    QinQ端口使用Outer Vlan转发,untag报文的inner vlan为来自于端口的Inner PVID,single tag报文来自于原始报文的Vlan。

    QinQ端口处理untag报文时,端口设置成outer vlan转发和inner vlan转发的效果是一样的,因为实现vlan时所以的端口的    Outer PVID和Inner PVID的值是一样的。

   QinQ端口处理single tag报文时,与其它端口在业务上的区别是,QinQ端口不能使用原始报文中的Vlan来进行转发,只能使用端口的PVID进行转发,原始报文的vlan在芯片内部识别成inner vlan,不能设置QinQ端口为Inner Vlan转发模式,所以QinQ端口必须设置成Outer Vlan转发模式。

 1.2.1  上行QinQ业务流

          上行QinQ业务流是指从QinQ端口到Trunk口的业务流。从QinQ端口进来的流分为两种,untag报文、single tag报文,对应的从Trunk口出去的报文为single tag、double tag报文。

           这两种类型的报文在芯片类型的处理方式类似。

          

 a.上行untag报文

 

       上行的untag报文会同时被打上Inner PVID、Outer PVID,此时使用内层Vlan转发与使用外层Vlan转发的效果是一样的。

       在从Trunk口出去的时候,Rx_Port.IGR_P_ITAG_KEEP=1&& Tx_Port.Egr_P_ITAG_KEEP=1,Inner Vlan会保持原有状态,被剥除。

       在从Trunk口出去的时候,Rx_Port.IGR_P_OTAG_KEEP=0&& Tx_Port.Egr_P_OTAG_KEEP=1,Outer Vlan,会根据vlan中该端口的tag/untag状态去选择剥除vlan或者保留outer vlan.

 

b.上行single tag报文

 

    

       QinQ端口特殊的地方在于,QinQ端口不能使用原始报文中的Vlan来进行转发,只能使用端口的PVID进行转发。

        当Single Tag报文进入到QinQ端口时,会打上O-PVID,由于配置了外层转发模式,所以QinQ端口的报文进入Vlan Table Lookup的时候会根据Outer Vlan(通过Outer PVID得到)来转发。

 

1.2.2  下行QinQ业务流

        

    a、下行single tag报文

        下行的single tag报文,进入到trunk口,被打上outer pvid,根据outer vlan进行转发,发送到QinQ端口,由于:

Rx_Port.IGR_P_OTAG_KEEP=1&& Tx_Port.Egr_P_OTAG_KEEP=1,Outer Vlan直接剥掉。由于:

        Rx_Port.IGR_P_ITAG_KEEP=0&& Tx_Port.Egr_P_ITAG_KEEP=1,Inner Vlan会根据vlan中该端口的tag/untag状态去选择剥除inner vlan。

       b、下行double tag报文

       TagA在内部当做Inner Tag,用于进行转发,TagB被当做数据处理,始终不会有变化。Trunk口设置成了Inner Vlan转发,会有以下处理流程:

      a、Inner Vlan也就是TagA所在的Vlan是Vlan-A

      b、我的端口是Port Num,该端口加入了Vlan-A吗?

      c、如果没有加入,丢弃该报文;如果加入了,则在该Vlan里面查找端口,会根据L2 Mac地址表查找,查找完以后,会发送到目的端口,如QinQ。到达QinQ端口以后,由于

           Rx_Port.IGR_P_OTAG_KEEP=1&& Tx_Port.Egr_P_OTAG_KEEP=1 Outer Vlan直接剥掉。由于:

           Rx_Port.IGR_P_ITAG_KEEP=0&& Tx_Port.Egr_P_ITAG_KEEP=1, Inner Vlan会根据vlan中该端口的tag/untag状态去选择剥除outer vlan,出去的时候,报文只带有TagB。

1.3  QinQ端口与Trunk口的对比

                                                                          Tag、报文处理

          出口 

入口

Trunk

QinQ

Trunk

Keep剥除Outer VlanInner Vlan转发

Keep剥除Outer VlanInner Vlan转发

QinQ

Keep剥除Inner VlanOuter Vlan转发

 

 

 

 RTL8370N-VB: Single-chip 8-port gigabit non-blocking switch architecture  Embedded 8-port 10/100/1000Base-T PHY  Each port supports full duplex 10/100/1000M connectivity (half duplex only supported in 10/100M mode)  Full-duplex and half-duplex operation with IEEE 802.3x flow control and backpressure  Supports 9216-byte jumbo packet length forwarding at wire speed  Supports Realtek Cable Test (RTCT) function  Supports 96-entry ACL Rules  Search keys support physical port, Layer2, Layer3, and Layer4 information  Actions support mirror, redirect, dropping, priority adjustment, traffic policing, CVLAN decision, and SVLAN assignment  Supports 5 types of user defined ACL rule format for 64 ACL rules  Optional per-port enable/disable of ACL function  Optional setting of per-port action to take when ACL mismatch  Supports IEEE 802.1Q VLAN  Supports 4K VLANs and 32 Extra Enhanced VLANs  Supports Un-tag definition in each VLAN  Supports VLAN policing and VLAN forwarding decision  Supports Port-based, Tag-based, and Protocol-based VLAN  Up to 4 Protocol-based VLAN entries  Supports per-port and per-VLAN egress VLAN tagging and un-tagging  Supports IVL, SVL, and IVL/SVL  Supports 4096-entry MAC address table with 4-way hash algorithm  Up to 4096 L2/L3 Filtering Database  Supports Spanning Tree port behavior configuration  IEEE 802.1w Rapid Spanning Tree  IEEE 802.1s Multiple Spanning Tree with up to 16 Spanning Tree instances  Supports IEEE 802.1x Access Control Protocol  Port-Based Access Control  MAC-Based Access Control  Guest VLAN  Supports Quality of Service (QoS)  Supports per port Input Bandwidth Control  Traffic classification based on IEEE 802.1p/Q priority definition, physical Port, IP DSCP field, ACL definition, VLAN based priority, MAC based priority, and SVLAN based priority  Eight Priority Queues per port  Per queue flow control  Min-Max Scheduling  Strict Priority and Weighted Fair Queue (WFQ) to provide minimum bandwidth  One leaky bucket to constrain the average packet rate of each queue  Supports rate limiting (64 shared meters, with 8kpbs granulation)  Supports RFC MIB Counter  MIB-II (RFC 1213)  Ethernet-Like MIB (RFC 3635)  Interface Group MIB (RFC 2863)  RMON (RFC 2819)  Bridge MIB (RFC 1493)  Bridge MIB Extension (RFC 2674)  Supports Stacking VLAN and Port Isolation with 8 Enhanced Filtering Databases  Supports IEEE 802.1ad Stacking VLAN  Supports 64 SVLANs  Supports 32 L2/IPv4 Multicast mappings to SVLAN  Supports 4 IEEE 802.3ad Link aggregation port groups  Supports OAM and EEE LLDP (Energy Efficient Ethernet Link Layer Discovery Protocol  Supports Loop Detection  Security Filtering  Disable learning for each port  Disable learning-table aging for each port  Drop unknown DA for each port  Broadcast/Multicast/Unknown DA storm control protects system from attack by hackers  Supports Realtek Green Ethernet features  Link-On Cable Length Power Saving  Link-Down Power Saving  Each port supports 3 parallel LED or scan LED or serial shift LED outputs  Supports I 2 C-like Slave interface or Slave MII Management interface to access configuration register  Supports 16K-byte EEPROM space for configuration  Integrated 8051 microprocessor  Supports SPI Flash Interface  25MHz crystal input  RTL8370N-VB: LQFP 128-pin E-PAD package
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值