-
先了解PC对接收数据的工作流:
-
交换机接收数据的工作流:
-
MAC地址的学习
-
一般情况下,MAC地址表是设备根据接收的数据帧中的源MAC地址自动学习而建立,MAC地址表包含MAC地址、VLAN、Port、Type等信息
-
二层设备在收到数据帧时,才会触发MAC地址表项的学习和刷新
-
当一台目的主机加入多个VLAN时,在MAC地址转发表项中就会存在相同的MAC地址拥有多个不同VLAN ID的情况
-
MAC地址表项的老化过程
-
缺省老化时间 = 300s;
aging-time = 0表示动态MAC地址表项不老化[SW1]**display mac-address aging-time** # 使用该命令查看当前mac地址表项老化时间 Aging time: **300 seconds**
-
-
-
交换机收到数据包的流程
-
VLAN
Some Basics
- 通常情况下,主机并不需要知道自己属于哪个VLAN,主机硬件通常也不能识别带有VLAN标记的帧,因此主机发送和接收的帧都是untagged帧;
- 交换设备接收到报文后,根据配置规则(如接口信息)判断出报文所属的VLAN后,再进行处理;
- 如果报文需要通过另一台交换机转发,则该报文必须通过干道链路透传到对端交换设备上。为了保证其它交换设备能够正确处理报文中的VLAN信息,在干道链路上传输的报文必须都打上了VLAN标记;
链路类型 (Link Type)
- Access
- 接收
- 不带tag的报文:接收该报文,并打上缺省的VLAN ID
- 带tag的报文:当VLAN ID与缺省VLAN ID相同时,接收该报文;当VLAN ID与缺省VLAN ID不同时,丢弃该报文。
- 发送:先剥离帧的PVID Tag,然后再发送
- 接收
- Trunk
- 接收
- 不带tag的报文
- 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文;
- 打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文;
- 带tag的报文
- 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文;
- 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文;
- 不带tag的报文
- 发送
- 当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文;
- 当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文;
- 接收
- Hybrid
-
接收
- 不带tag的报文
- 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文;
- 打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文;
- 带tag的报文
- 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文;
- 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文;
接收报文时的操作主要由PVID和处理动作决定,通过
port hybrid pvid vlan *vlan_id*配置PVID,然后根据untagged列表和tagged列表来合计允许通过的VLAN ID - 不带tag的报文
-
发送:当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag
port hybrid untagged vlan&port hybrid tagged vlan是配置发送帧时的动作
-
由于设备所有的接口都默认加入VLAN1,因此当网络中存在VLAN1的未知单播、组播或者广播报文时,可能会引起广播风暴。对于不需要加入VLAN1的接口及时退出VLAN1,避免环路。
-
Example - 1
[注]SW1 | SW2的Ethernet0/0/2和Ethernet0/0/3都配置access接口,Ethernet0/0/1配置trunk接口
-
使用PC1访问PC3,Ethernet0/0/2接收到主机发送的untagged报文,打上Ethernet0/0/2的
PVID=2,那么Ethernet0/0/2完成接收操作; -
在SW1内部,查询MAC地址表是否存在目的地址为PC4的MAC地址表项
-
如果是第一次进行访问或MAC地址表项老化,这时MAC地址表不存在PC4的MAC地址表项,则SW1会将数据发送到所有属于VLAN2的接口
-
对管理员来说,使用
display vlan查看,我们可以知道哪些接口属于VLAN2[SW1]display vlan The total number of vlans is : 3 -------------------------------------------------------------------------------- U: Up; D: Down; TG: Tagged; UT: Untagged; MP: Vlan-mapping; ST: Vlan-stacking; #: ProtocolTransparent-vlan; *: Management-vlan; -------------------------------------------------------------------------------- VID Type Ports -------------------------------------------------------------------------------- 2 common UT:Eth0/0/2(U) TG:Eth0/0/1(U) --------------------------------------------------------------------------------
-
-
如果表项已存在**[如下]**,则SW1会查看MAC地址表的
VLAN列和Port列,依据接口Ethernet0/0/1下的配置规则进行操作,接口属于VLAN2,则将数据从Ethernet0/0/1发出因为Ethernet0/0/1为trunk接口且
PVID=1,所以发出数据时会打上tag,即VID=2[SW1]display mac-address MAC address table of slot 0: ------------------------------------------------------------------------------- MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID VSI/SI MAC-Tunnel ------------------------------------------------------------------------------- 5489-981d-139a 2 - - Eth0/0/1 dynamic 0/- 5489-9831-5a7e 2 - - Eth0/0/2 dynamic 0/- ------------------------------------------------------------------------------- Total matching items on slot 0 displayed = 2
-
-
SW2收到tagged数据,发送
tag=2在允许通过的列表中,接收数据 -
在SW2内部,查询MAC地址表是否存在目的地址为PC4的MAC地址表项
-
如果表项不存在,则会把数据泛洪到除接收端口外属于VLAN2的端口
<SW2>display vlan The total number of vlans is : 3 -------------------------------------------------------------------------------- U: Up; D: Down; TG: Tagged; UT: Untagged; MP: Vlan-mapping; ST: Vlan-stacking; #: ProtocolTransparent-vlan; *: Management-vlan; -------------------------------------------------------------------------------- VID Type Ports -------------------------------------------------------------------------------- 2 common UT:Eth0/0/2(U) TG:Eth0/0/1(U) -------------------------------------------------------------------------------- -
如果表项存在,则SW2就会把报文从Ethernet0/0/1
因为Ethernet0/0/1是access接口,则access接口发出报文时会剥离tag转发
<SW2>display mac-address MAC address table of slot 0: ------------------------------------------------------------------------------- MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID VSI/SI MAC-Tunnel ------------------------------------------------------------------------------- 5489-981d-139a 2 - - Eth0/0/2 dynamic 0/- 5489-9831-5a7e 2 - - Eth0/0/1 dynamic 0/- ------------------------------------------------------------------------------- Total matching items on slot 0 displayed = 2
-
-
PC4接收到从SW2发来的untagged数据
-
-
Example - 2 [Hybrid使用场景]
-
Hybrid接口使用场景
-
使用灵活QinQ时;
-
使用其它方式划分VLAN时(除基于接口)
- 基于子网划分VLAN
- 基于MAC地址划分VLAN
-
实现不同VLAN并且相同网段进行互访时
-
-
Lab - 实现不同VLAN并且相同网段进行互访
-
PC或服务器与SW之间的链路都是传输的untagged数据
- PC发送给SW1的数据是untagged,这时SW1是接收数据,hybrid口接收untagged数据先打上tag = PVID,要是PVID在允许列表中就发到交换机内部,则首先PVID必须在untagged列表或tagged列表中
- 由于服务器回访的数据到达SW1后,是带tagged数据,这时要发往PC,就必须进行剥离tag的操作,那么就需要将服务器所在VLAN添加到untagged列表中。
- 综上所述,PC所在VLAN和服务器所在VLAN都需要加入untagged列表中
**[SW1]** # interface Ethernet0/0/2 port hybrid pvid vlan 10 port hybrid untagged vlan 10 100 # interface Ethernet0/0/3 port hybrid pvid vlan 20 port hybrid untagged vlan 20 100 # **[SW2]** # interface Ethernet0/0/2 port hybrid pvid vlan 100 port hybrid untagged vlan 10 20 100 # # 将vlan 10或vlan 20配置到tagged list也是可以通信的 # 即 # interface Ethernet0/0/2 | 3 # port hybrid pvid vlan 10 | 20 # port hybrid untagged vlan 100 # port hybrid tagged vlan 10 | 20 -
交换机之间的链路正常使用trunk,使用tagged数据进行转发
**[SW1]** # interface Ethernet0/0/1 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 10 20 100 # **[SW2]** # interface Ethernet0/0/1 port link-type trunk undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 10 20 100 # # 同理,将vlan 100配置到tagged list也是可以通信的 # 即 # interface Ethernet0/0/2 # port hybrid pvid vlan 100 # port hybrid untagged vlan 10 20 # port hybrid tagged vlan 100
-
-
三层交换机
- 大多数三层交换机采用ASIC硬件芯片来完成转发,ASIC芯片内部集成了IP三层转发的功能
- 路由器的三层转发主要依靠CPU进行,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节
不同网络的主机之间互访时的行为
同网段PC互访
源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC作为报文的目的MAC进行报文发送。位于同一VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作二层交换转发。
不同网段PC互访
当PC1要访问与它处于不同网段的PC2时,PC1会向10.1.1.1/24来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,网关返回ARP应答,告诉PC1自己的MAC地址,然后PC1将网关的MAC地址作为下一次访问20.1.1.2/24时的目的MAC地址。但是报文中,源IP和目的IP是不会改变,源IP地址仍然是PC1的IP地址,目的地址仍是PC2的IP地址。
-
在PC1上查看ARP缓存
PC>arp -a Internet Address Physical Address Type 10.1.1.1 **4C-1F-CC-9D-7A-24** dynamic -
在LSW1上查看Vlanif10的MAC地址
<Gateway>display interface Vlanif 10 Vlanif10 current state : UP Line protocol current state : UP Last line protocol up time : 2021-03-07 13:30:51 UTC-08:00 Description: Route Port,The Maximum Transmit Unit is 1500 Internet Address is 10.1.1.1/24 IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is **4c1f-cc9d-7a24** Current system time: 2021-03-07 13:37:47-08:00 Input bandwidth utilization : -- Output bandwidth utilization : --
PC1上访问20.1.1.2/24后,ARP缓存表指缓存了10.1.1.1的表项,即网关表项,包括网关LSW1的Vlanif10接口的MAC地址。所以这时LSW1作为三层交换机,作三层交换转发。
Resources
-
以前的笔记
-
华为产品文档
-
技术甜甜圈