二层交换机转发原理

1

目录

1 802.1Q定义

1.1 LAN

1.2 VLAN

    1.2.1   VLAN定义

    1.2.2   802.1Q tag

2 二层转发流程

   当报文中的源mac在mac地址表中不存在时,会生成新的mac地址表项。

          5 出口vlan过滤

           6 出口vlan处理

      2.2 Vlan Table的内容

      2.3 PVID

     2.1 Mac地址表的学习

2.1 Mac地址表的洪泛

2.1 单播与广播

2.2 Mac地址表的查找

2.3 Mac地址表的老化

2.4 Mac地址表的迁移

2.6 Mac地址表的冲突

2.7 Mac地址表的特殊机制

2.5.1 Mac地址表的源查找

2.5.2 Mac地址表的Class ID

2.5.3 Mac地址表的源hit

3 IVL与SVL

4 Acces .Trunk.Hybird


1 定义

1.1 LAN

LAN(Local Area Network):局域网,同一个局域网内的终端可以通信。

1.2 VLAN

    1.2.1   VLAN定义

    VLAN(Virtual LAN):即虚拟局域网,这项技术可以根据功能、应用或者管理的需要将局域网内部的设备逻辑地划分到一个个网段中,从而形成一个个虚拟的工作组,并且不需要考虑设备的实际物理位置。 IEEE 颁布了 IEEE802.1Q 协议以规定标准化VLAN 的实现方案,交换机的 VLAN 功能即按照 802.1Q 的标准实现。VLAN 技术的特点在于可以根据需要动态的将一个大的局域网划分成许多不同的广播域。

        每个广播域即一个VLAN,VLAN和物理上的局域网有相同的属性,不同之处只在于VLAN是逻辑的而不是物理的划分,所以VLAN的划分不必根据实际的物理位置,而每个VLAN内部的广播、组播和单播流量都是与其它VLAN隔绝的。

    1.2.2   802.1Q tag

       802.1q定义了tag(标签),通过比较报文标签中VID与本端口中的VID信息来决定是否丢弃报文,来实现虚拟VLAN的功能。

     标签协议识别符(Tag Protocol Identifier, TPID):交换芯片通过该字段来判断是否为T带有Tag,如果为TAG报文,会将后续的2个字节解析成Priority和VID。通常情况下,这个字段为0X8100,表明通过0X8100来识别VID,另外常用的有0X9100/0X9200/0X8200等。

   交换芯片通常支持多个TPID的使用,能够同时将多种TPID值的报文识别成Tag报文。

    优先权代码点(Priority Code Point, PCP): 以一组3比特的域当作IEEE 802.1p优先权的参考,优先级通常应用于交换机QoS,当发生拥塞时,根据PCP来调度报文,除了PCP以外,IP报文中的DSCP和MPLS报文中的EXP都可以用来做优先级使用。

     CFI:为0表示MAC地址以标准格式进行封装,为1表示MAC地址以非标准格式进行封装。

     VID:长度为12bit,范围为0~4095。由于0和4095位保留值,所以VID的范围为1~4094。

2 二层转发流程

     如图所示,报文从E1端口进入以后,要经过以下步骤:

          1 PVID处理

             如果从端口收到的报文是untag报文,需要给报文加上一层Vlan Tag,其中的Vid就是端口PVID的值。

           为什么需要PVID呢?因为交换芯片内部处理的报文都是要带Vlan的,交换芯片的Mac地址学习、Vlan过滤都需要根据报文中的VID来完成。

          PVID的作用是端口给Untag报文打上的VLan ID。

           如果从端口收到的报文是tag报文,则无需PVID处理。 

        查看BCM的PVID信息如:
BCM.0> pvlan
Port ge0 default VLAN is 1
Port ge1 default VLAN is 1
Port ge2 default VLAN is 1
Port ge3 default VLAN is 100
Port ge4 default VLAN is 100
Port ge5 default VLAN is 100
Port ge6 default VLAN is 1
Port ge7 default VLAN is 1
Port ge8 default VLAN is 1000
Port ge9 default VLAN is 1
Port ge10 default VLAN is 555
Port ge11 default VLAN is 1
Port ge12 default VLAN is 1
Port ge13 default VLAN is 666
Port ge14 default VLAN is 1
Port ge15 default VLAN is 3000
Port ge16 default VLAN is 1

           2 入口Vlan过滤

             Vlan过滤功能由Vlan表来完成,Vlan表的内容描述某个Vlan包含了哪些端口以及报文从该端口发出时,是否剥掉tag。

             例如,从端口E1收到的报文Vlan为1000(或者说untag报文打上了PVID 1000),但VLan表中的VLan 100中没有E1端口,就会把该报文丢弃(过滤),如果VLan表中的VLan 100中有E1端口,则会进入后续的流程。            

查看BCM 的vlan信息:
BCM.0> vlan show 
vlan 198        ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN
vlan 199        ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN
vlan 200        ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN
vlan 300        ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged ge21 (0x0000000000000000000000000000000000000000000000000000000000400000) MCAST_FLOOD_UNKNOWN
vlan 400        ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN
vlan 555        ports ge10,ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400800), untagged ge10 (0x0000000000000000000000000000000000000000000000000000000000000800) MCAST_FLOOD_UNKNOWN
vlan 666        ports ge13,ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000404000), untagged ge13 (0x0000000000000000000000000000000000000000000000000000000000004000) MCAST_FLOOD_UNKNOWN
vlan 777        ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN
vlan 1000       ports ge8,ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400200), untagged ge8 (0x0000000000000000000000000000000000000000000000000000000000000200) MCAST_FLOOD_UNKNOWN
vlan 2000       ports ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000400000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN
vlan 3000       ports ge15,ge21,hg (0x00000000000000000000000000000000000000000000000000c4000000410000), untagged ge15 (0x0000000000000000000000000000000000000000000000000000000000010000) MCAST_FLOOD_UNKNOWN
vlan 4095       ports hg (0x00000000000000000000000000000000000000000000000000c4000000000000), untagged none (0x0000000000000000000000000000000000000000000000000000000000000000) MCAST_FLOOD_UNKNOWN

          3 mac地址学习

           mac地址学习是根据报文的源mac、源端口生成mac表项。

           mac地址表项描述了mac地址在哪个接口,mac地址表的作用是用于转发。

BCM下的mac地址表
BCM.0>  l2 show
mac=00:01:02:03:33:22 vlan=666 GPORT=0xe modid=2 port=14/ge13 Hit
mac=00:03:0e:23:55:75 vlan=666 GPORT=0xe modid=2 port=14/ge13 Hit
mac=00:03:0f:00:11:11 vlan=1000 GPORT=0x0 modid=255 port=0   Static Hit
mac=00:03:0f:00:11:11 vlan=666 GPORT=0x0 modid=255 port=0   Static
mac=00:03:0f:b1:10:12 vlan=666 GPORT=0xe modid=2 port=14/ge13 Hit
mac=24:69:68:7b:be:2a vlan=1000 GPORT=0x9 modid=2 port=9/ge8 Hit

   当报文中的源mac在mac地址表中不存在时,会生成新的mac地址表项。

           4 mac地址查找/洪泛/广播报文

            当报文中的目的mac为广播mac(即FF:FF:FF:FF:FF:FF)时,会向Vlan内的所有端口发送报文。

             当报文中的目的mac为单播mac时,会在mac地址表中查找该mac,如果能够找到,会把报文转发到对应的端口,如果不能找到,会向Vlan内的所有端口发送报文,这个过程称为洪泛。

             洪泛是指单播报文查找失败以后往各端口转发。

          5 出口vlan过滤

 

            这个过程是可选的,与入口VLan检查失败类似,出口检查失败以后,报文被丢弃。

 dump EGR_VLAN 100
EGR_VLAN.epipe0[100]: <VP_GROUP_BITMAP=0x0000000000000000,VALID=1,UT_PORT_BITMAP_W1=0,UT_PORT_BITMAP_W0=0x60,UT_PORT_BITMAP=0x0000000000000060,UT_BITMAP_W1=0,UT_BITMAP_W0=0x60,UT_BITMAP=0x0000000000000060,STG=1,RESERVED_0=0,REMARK_DOT1P=0,REMARK_CFI=0,PORT_BITMAP_W1=0xc40000,PORT_BITMAP_W0=0x68,PORT_BITMAP=0x00c4000000000068,OUTER_TPID_INDEX=0,FLEX_CTR_POOL_NUMBER=0,FLEX_CTR_OFFSET_MODE=0,FLEX_CTR_BASE_COUNTER_IDX=0,EVEN_PARITY=0,DOT1P_MAPPING_PTR=0>

           6 出口vlan处理

              报文从端口出去时,是否携带Vlan Tag实在出口Vlan完成的。

BCM.0> dump EGR_VLAN 1   
EGR_VLAN.epipe0[1]: <VP_GROUP_BITMAP=0x0000000000000000,VALID=1,UT_PORT_BITMAP_W1=0,UT_PORT_BITMAP_W0=0x1feb5de,UT_PORT_BITMAP=0x0000000001feb5de,UT_BITMAP_W1=0,UT_BITMAP_W0=0x1feb5de,UT_BITMAP=0x0000000001feb5de,STG=1,RESERVED_0=0,REMARK_DOT1P=0,REMARK_CFI=0,PORT_BITMAP_W1=0xc40000,PORT_BITMAP_W0=0x1feb5fe,PORT_BITMAP=0x00c4000001feb5fe,OUTER_TPID_INDEX=0,FLEX_CTR_POOL_NUMBER=0,FLEX_CTR_OFFSET_MODE=0,FLEX_CTR_BASE_COUNTER_IDX=0,EVEN_PARITY=0,DOT1P_MAPPING_PTR=0>

 UT表示Untag Port Bitmap.,表明报文出去时为untagged.

      2.1 端口入方向对报文的处理

                根据芯片TPID信息,识别报文中Vid,通常芯片支持多个TPID,报文携带的Vlan ID是多少是根据TPID字段的得到的。

      2.2 Vlan Table的内容

               mac=00:03:0f:ab:ba:b2 vlan=3000 GPORT=0x10 modid=2 port=16/ge15 Hit

               芯片支持的mac地址信息比命令行看到的信息要多,一般包含:

               mac 地址、vlan id、端口号(由modid/port两部分组成)、是否为静态、是否源命中.

      2.3 PVID

                 端口上配置的VID,给Untag报文加上的Tag。只有收到的报文不带Tag时,PVID才会发生作用。

     2.4 Mac地址表的学习

                根据报文中Mac地址源地址、端口号、vlan生成表项,后续其它端口收到的报文,目的地址与mac表中的内容相同时,往该端口转发。

     2.5 Mac地址表的洪泛

             当收到的报文的目的mac在mac地址表中查找失败时,会向所有端口发出。

     2.6 单播/广播/组播mac

             三类mac地址:单播mac、广播mac、组播mac。

     2.7 Mac地址表的老化

               mac地址表有老化机制,当一个长时间没有收到以mac地址表为源mac的报文的报文时,mac地址表项会删除。

       2.8 Mac地址表的迁移

             在mac地址存续期间,从其它端口收到同样的一个源mac相同的报文,这会导致原来的mac地址表被删除。所谓迁移,指的是端口改变了。

       2.9 Mac地址表的冲突

                 Mac地址表通常采用Hash算法

         2.5.1 Mac地址表的源查找

2.5.2 Mac地址表的Class ID

2.5.3 Mac地址表的源hit

3 IVL与SVL

4 Acces .Trunk.Hybird

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 二层交换机转发MAC机制主要是通过MAC地址表实现的。当一个数据包到达交换机时,交换机会检查该数据包中的源MAC地址,并将其与交换机的MAC地址表进行比对。如果该MAC地址已经存在于MAC地址表中,则交换机会将数据包转发到对应的端口。如果该MAC地址不存在于MAC地址表中,则交换机会向所有端口广播该数据包,以便寻找该MAC地址所在的设备,并将其添加到MAC地址表中。 当交换机接收到一个新的数据包时,它会先通过源MAC地址查找MAC地址表,如果该地址已经存在于表中,交换机就可以直接转发数据包到目标端口。如果该地址不存在于表中,交换机将会将该数据包向所有其他端口广播,以便找到目标MAC地址所在的设备。一旦找到目标设备,并将其MAC地址添加到表中,交换机就可以直接将数据包转发到对应的端口,而不需要再次广播。这种机制可以提高网络的速度和效率,避免了数据包的冲突和重复传输。 ### 回答2: 二层交换机是局域网中常用的网络设备,它的主要功能是通过MAC地址学习和转发数据包。二层交换机工作在数据链路层,它通过学习网络中各设备的MAC地址来建立转发表,以实现数据包的快速转发。 当二层交换机接收到一个数据包时,它首先会检查该数据包的目标MAC地址。如果交换机转发表中已经存在该目标MAC地址的条目,那么交换机会将数据包转发到相应的端口上。如果转发表中没有目标MAC地址的条目,交换机就会进入广播模式,将数据包发送到网络中的所有端口。 在数据包发送过程中,二层交换机会根据源MAC地址和输入端口将数据包的源MAC地址添加到转发表中。通过不断学习和更新转发表,交换机可以动态地构建网络中各设备的MAC地址和相应端口的映射关系。这样,当交换机再次接收到相同源MAC地址的数据包时,就能够根据转发表直接将数据包发送到目标端口,避免了广播模式的使用,提高了网络传输效率。 二层交换机转发MAC机制的实现原理相对简单,但在实际应用中起到了重要的作用。通过学习和转发MAC地址,交换机能够减少广播和冲突,提高了网络的可靠性和性能。同时,它也提供了更好的网络安全性,因为二层交换机只会将数据包转发到目标MAC地址所在的端口,而不会广播到所有端口,减少了不必要的信息泄露风险。 综上所述,二层交换机通过MAC地址学习和转发机制实现了高效的数据包传输,提高了局域网的性能和安全性。通过不断学习和更新转发表中的MAC地址,二层交换机能够快速准确地将数据包转发到目标设备,实现了网络通信的快速和可靠。 ### 回答3: 二层交换机转发MAC机制是通过学习和维护一个交换机的MAC地址表来实现的。 首先,当一个数据包到达二层交换机时,交换机会查看数据包的源MAC地址,并将其记录在MAC地址表中。这个过程称为学习。接着,交换机会根据目标MAC地址在MAC地址表中查找对应的端口,然后将数据包转发到目标端口上。如果目标MAC地址不存在于MAC地址表中,交换机会将数据包广播到所有端口上,以便寻找目标MAC地址所在的主机。 通过这种转发MAC的机制,二层交换机可以实现快速的数据包转发,因为它不需要检查IP地址,只需要查找和比较MAC地址。此外,还可以避免数据包在网络中传播,从而提高网络的安全性。 然而,二层交换机的MAC地址表是有限的。当地址表已满时,交换机会根据一定的策略来替换掉一些旧的MAC地址。这可能会导致一些数据包无法正确转发,引起网络故障。 总的来说,二层交换机转发MAC机制是一种基于学习和维护MAC地址表的方式,能够快速转发数据包,并提高网络的安全性。但应注意地址表的容量问题,以避免网络故障的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值