104 KiB
第二章:虚拟局域网及生成树协议
作者:行癫
第一节:以太网交换基础
一:以太网协议
1.以太网协议
以太网是当今现有局域网(Local Area Network;LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法
以太网是建立在CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络

早期的以太网:
以太网是建立在CSMA/CD机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器HUB是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高
交换机组网:
交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代HUB成为主流的以太网设备。但是交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能
2.冲突域
冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、广播、广播),其余节点都可以收到

在共享网络,以太网络使用CSMA/CD技术,避免冲突问题。CSMA/CD的基本工作过程如下:
终端设备不停的检测共享线路的状态
如果线路空闲则发送数据
如果线路不空闲则一直等待
如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定
终端设备检测到这种不稳定之后,马上停止发送自己的数据
终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突
CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发
3.广播域
广播报文所能到达的整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文

全1MAC地址FF-FF-FF-FF-FF-FF为广播地址,所有节点都会处理目的地址为广播地址的数据帧,该数据帧所能到达的整个访问范围称为二层广播域,简称广播域
MAC (Media Access Control)地址,在网络中唯一标识一个网卡,每个网卡都需要并会有唯一的一个MAC地址
4.以太网卡
网络接口卡也称“网卡”,是计算机、交换机、路由器等网络设备与外部网络世界相连的关键部件

二:以太网帧
1.以太网帧格式
以太网技术所使用的帧称为以太网帧(Ethernet Frame),或简称以太帧
以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式

Ethernet Ⅱ以太帧:
DMAC:6字节,目的MAC地址,6字节,该字段标识帧的接收者
SMAC:6字节,源MAC地址,6字节,该字段标识帧的发送者
Type:2字节,协议类型。常见值
0x0800:Internet Protocol Version 4 (IPv4)
0x0806:Address Resolution Protocol (ARP)
IEEE 802.3 LLC以太帧:
逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成
DSAP:1字节,目的服务访问点,若后面类型为IP值设为0x06。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号
SSAP:1字节,源服务访问点,若后面类型为IP值设为0x06
Ctrl:1字节,该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成
Org Code三个字节都为0
Type字段的含义与Ethernet_II帧中的Type字段相同
数据帧的总长度为64-1518字节,这样设计的原因是什么?
以太网中,最小帧长为64字节,这是由最大传输距离和CSMA/CD机制共同决定的
规定最小帧长是为了避免这种情况发生:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,导致冲突
高层协议必须保证Data域至少包含46字节,这样加上以太网帧头的14字节和帧尾的4字节校验码正好满足64字的最小帧长,如果实际数据不足46个字节,则高层协议必须填充一些数据单元
而出于对传输效率和传输可靠性的折中考虑,使得以太网帧的最大长度为1518字节,对应IP数据包就是1500字节
较大的帧长度,数据的有效传输效率会更高;但是数据帧过长,传输时会占用共享链路过多的时间,对时延敏感应用造成极大的影响
因此最终选择了一个折中的长度:1518字节的数据帧长,对应1500字节的IP数据包长度,这就是最大传输单元MTU的由来
三:MAC地址
1.什么是MAC地址
MAC地址在网络中唯一标识一个网卡,每个网卡都需要并拥有唯一的一个MAC地址
一块网卡的MAC地址具有全球唯一性的

MAC地址是在IEEE 802标准中定义并规范的,凡是符合IEEE 802标准的以太网卡,都必须拥有一个MAC地址,用MAC地址来定义网络设备的位置。不同的网卡,MAC地址也不同
2.IP地址 VS MAC地址
每个以太网设备在出厂时都有一个唯一的MAC地址,但在设备接入网络时,会同时为每台主机再分配一个IP地址

每个以太网设备在出厂时都有一个唯一的MAC地址,那为什么还需要为每台主机再分配一个IP地址呢?或者说每台主机都分配唯一的IP地址了,为什么还要在网络设备 (如:网卡) 生产时内嵌一个唯一的MAC地址呢?
IP地址是根据网络的拓朴结构分配的,MAC地址是根据制造商分配的,若路由选择建立在设备制造商的基础上,这种方案是不可行的
当存在两层地址寻址时,设备更灵活,易于移动和维修
总结:
IP地址的作用是唯一标识网络中的一个节点,可以通过IP地址进行不同网段的数据访问
MAC地址的作用是唯一标识一个网卡,可以通过MAC地址进行同网段的数据访问
3.MAC地址表示
一个MAC地址有48bit,6Byte
MAC地址通常采用16进制表示

4.MAC地址构成及分类
OUI:厂商代码,由IEEE分配,3 Byte,24bit
制造商分配:3 Byte 24bit

MAC地址可以分为3种类型:
单播MAC地址:也称物理MAC地址,这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址
单播MAC地址用于标识链路上的一个单一节点
目的MAC地址为单播MAC地址的帧发往一个单一的节点
单播MAC地址可以作为源或目的地址
注意:单播MAC地址具有全球唯一性,当一个二层网络中接入了两台具有相同MAC地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无法相互通信),且其他设备与它们之间的通信也会存在问题
广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终端设备
广播MAC地址可以理解为一种特殊的组播MAC地址
其具体格式为:FFFF-FFFF-FFFF
目的MAC地址为广播MAC地址的帧发往链路上的所有节点
组播MAC地址:除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表局域网上的一组终端
组播MAC地址用于标识链路上的一组节点
目的MAC地址为组播MAC地址的帧发往一组节点
组播MAC地址不能作为源地址,只能作为目的地址
单播以太帧:
简称:单播帧
目的MAC地址为单播MAC地址的帧

第一种是单播,指从单一的源端发送到单一的目的端
每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端
广播以太帧:
简称:广播帧
目的MAC地址为广播MAC地址的帧

表示帧从单一的源发送到共享以太网上的所有主机
广播帧的目的MAC地址为十六进制的FF-FF-FF-FF-FF-FF,所有收到该广播帧的主机都要接收并处理这个帧
广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能
当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式
组播以太帧:
简称:组播帧
目的MAC地址为组播的MAC地址的帧

组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧
组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式
四:以太网交换机
1.园区网典型架构

一个典型的园区数据网络由路由器、交换机、防火墙等设备构成,通常会采用多层架构,包括:接入层、汇聚层、核心层和出口层
2.以太网二层交换机

以太网二层交换机:
在园区网络中,交换机一般来说是距离终端用户最近的设备,用于终端接入园区网,接入层的交换机一般为二层交换机
二层交换设备工作在TCP/IP对等模型的第二层,即数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上的
以太网三层交换机:
不同局域网之间的网络互通需要由路由器来完成。随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越大,而路由器由于自身成本高、转发性能低、接口数量少等特点无法很好的满足网络发展的需求。因此出现了三层交换机这样一种能实现高速三层转发的设备
3.交换机工作原理

二层交换机工作在数据链路层,它对数据帧的转发是建立在MAC地址基础之上的。交换机不同的接口发送和接收数据是独立的,各接口属于不同的冲突域,因此有效地隔离了网络中的冲突域
二层交换设备通过学习以太网数据帧的源MAC地址来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC地址表),通过其目的MAC地址来查找MAC地址表决定向哪个接口转发
MAC地址表
每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口编号之间的映射关系

MAC地址表记录了交换机学习到的其他设备的MAC地址与接口的对应关系。交换机在转发数据帧时,根据数据帧的目的MAC地址查询MAC地址表。如果MAC地址表中包含与该帧目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含该帧目的MAC地址对应的表项时,交换机将采取泛洪方式在除接收接口外的所有接口发送该报文
交换机的3种数据帧处理行为
交换机对于从传输介质进入某一端口的帧的处理行为一共有3种

交换机对帧的处理行为一共有三种:泛洪(Flooding),转发(Forwarding),丢弃(Discarding)
泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意,“所有其它的端口”是指除了这个帧进入交换机的那个端口以外的所有端口)
转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意,“另一个端口”不能是这个帧进入交换机的那个端口)
丢弃:交换机把从某一端口进来的帧直接丢弃
泛洪

如果从传输介质进入交换机的某个端口的帧是一个单播帧,交换机会去MAC表查这个帧的目的MAC地址。如果查不到这个MAC地址,则交换机将对该单播帧执行泛洪操作
如果从传输介质进入交换机的某个端口的帧是一个广播帧,交换机不会去查MAC地址表,而是直接对该广播帧执行泛洪操作
场景一:主机1想要访问主机2,发送单播数据帧,交换机收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧
场景二:主机1想要访问主机2,但不知道对应的MAC地址,则会发送ARP请求报文,该报文为广播数据帧,交换机收到后,则会泛洪该数据帧
转发

如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去MAC表查这个帧的目的MAC地址。如果查到了这个MAC地址表,则比较这个MAC地址在MAC地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果不是,则交换机执行转发操作(将该帧送至该帧目的MAC地址在MAC地址表中对应的那个端口,并从那个端口发送出去)
主机1想要访问主机2,发送单播数据帧,交换机收到后,在MAC地址表中查到了对应的表项,则会点对点转发该数据帧
丢弃

如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去MAC表查这个帧的目的MAC地址。如果查到了这个MAC地址表,则比较这个MAC地址在MAC地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果是,则交换机将对该帧执行丢弃操作
主机1想要访问主机2,发送单播数据帧,交换机1收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧
交换机2收到该数据帧后,发现目的MAC地址对应的端口就是接收数据帧的端口,则会丢弃该数据帧
交换机MAC地址学习
初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空

主机1想要发送数据给主机2(假设已知对端的IP地址和MAC地址),会封装数据帧,包含自己的源IP地址和源MAC地址;交换机收到后会查自己的MAC地址表,发现没有对应表项,则收到的数据帧是“未知单播帧”

由于收到的数据帧是“未知单播帧”,因此交换机会泛洪该数据帧;同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中
注意:MAC地址表中动态学习的表项并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到更新的表项将被删除,这个生存周期被称作老化时间。例如华为S系列交换机的老化时间缺省值是300秒

广播网络中的所有主机均会收到该数据帧,但是只有主机2会处理(因为目的MAC地址是主机2)
主机2会回复数据帧给主机1,也是单播数据帧

交换机收到该单播数据帧后,会查看自己的MAC地址表,发现有对应的表项,则将数据从对应的端口转发出去;同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中

五:同网段数据通信全过程

数据封装过程

主机1在发送数据报文前,需要先进行报文封装,包括源目IP地址、源目MAC地址等
初始状态

主机1为了进行报文封装,会查本地的ARP缓存表。初始状态下,主机1的ARP缓存是空的
而刚上电的交换机,初始状态下,交换机的MAC地址表也是空的
数据帧泛洪

主机1发送ARP请求报文,请求目的MAC地址
交换机收到的数据帧后查MAC地址表,发现没有对应表项,则向所有非接收端口,泛洪该数据帧
学习MAC地址

交换机将收到的数据帧的源MAC地址和对应端口记录到MAC地址表中
目标主机回复

主机2收到ARP请求报文后,会进行相应的处理,并发送ARP响应报文,回复主机1
交换机收到的数据帧后查MAC地址表,发现有对应表项,则向对应端口转发该数据帧;并且交换机将收到的数据帧的源MAC地址和对应端口记录到MAC地址表中
最终,主机1收到主机2的ARP响应报文后,就会将对应的IP地址和MAC地址记录到自己的ARP缓存中,并封装自己的报文,访问主机2
第二节:VLAN原理与配置
一:什么是VLAN
1.传统以太网问题

广播域:
如图是一个典型的交换网络,网络中只有终端计算机和交换机。在这样的网络中,如果某一台计算机发送了一个广播帧,由于交换机对广播帧执行泛洪操作,结果所有其他的计算机都会收到这个广播帧
把广播帧所能到达的整个访问范围称为二层广播域,简称广播域 (Broadcast Domain)。显然,一个交换网络其实就是一个广播域
网络安全问题和垃圾流量问题:
如图:如果PC1向PC2发送了一个单播帧。此时SW1、SW3、SW7的MAC地址表中存在关于PC2的MAC地址表项,但SW2和SW5不存在关于PC2的MAC地址表项。那么,SW1和SW3将对该单播帧执行点对点的转发操作,SW7将对该单播帧执行丢弃操作,SW2和SW5将对该单播帧执行泛洪操作。最后的结果是,PC2虽然收到了该单播帧,但网络中的很多其他非目的主机,同样收到了不该接收的数据帧
显然,广播域越大,网络安全问题和垃圾流量问题就越严重
2.虚拟局域网

为了解决广播域带来的问题,人们引入了VLAN (Virtual Local Area Network),即虚拟局域网技术:
通过在交换机上部署VLAN,可以将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域,由此可以有效地提升网络的安全性,同时减少垃圾流量,节约网络资源
VLAN的特点:
一个VLAN就是一个广播域,所以在同一个VLAN内部,计算机可以直接进行二层通信;而不同VLAN内的计算机,无法直接进行二层通信,只能进行三层通信来传递信息,即广播报文被限制在一个VLAN内
VLAN的划分不受地域的限制
VLAN的好处:
灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活
限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力
增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信
提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作
二:VLAN基本原理
1.如何实现VLAN

Sw1与Sw2同属一个企业,该企业统一规划了网络中的VLAN,其中VlAN10用于A部门,VLAN20用于B部门,A、B部门的员工再Sw1和Sw2上都有接入
PC1发出的数据经过Sw1和Sw2之间的链路到达了Sw2,如果不加处理,后者无法判断该数据所属的VlAN,也不知道应该将这个数据输出到本地哪个VLAN中
VLAN标签(VLAN Tag)

如图所示,SW1识别出某个帧是属于哪个VLAN后,会在这个帧的特定位置上添加一个标签。这个标签明确地标明了这个帧是属于哪个VLAN的。其他交换机(如SW2)收到这个带标签的数据帧后,就能轻而易举地直接根据标签信息识别出这个帧属于哪个VLAN
IEEE 802.1Q定义了这种带标签的数据帧的格式。满足这种格式的数据帧称为IEEE 802.1Q数据帧,也称VLAN数据帧
VLAN数据帧

在一个VLAN交换网络中,以太网帧主要有以下两种形式
有标记帧(Tagged帧):IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag)的数据帧
无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的数据帧
VLAN数据帧中的主要字段
TPID:2字节,Tag Protocol Identifier(标签协议标识符),表示数据帧类型
取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃
各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时,为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致
PRI:3 bit,Priority,表示数据帧的优先级,用于QoS
取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧
CFI:1 bit,Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网
CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装
在以太网中,CFI的值为0
VID:12 bit,VLAN ID,表示该数据帧所属VLAN的编号
VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094
交换机利用VLAN标签中的VID来识别数据帧所属的VLAN,广播帧只在同一VLAN内转发,这就将广播域限制在一个VLAN内
如何识别带VLAN标签的数据帧
数据帧的Length/Type = 0x8100
注意:计算机无法识别Tagged数据帧,因此计算机处理和发出的都是Untagged数据帧;为了提高处理效率,交换机内部处理的数据帧一律都是Tagged帧
VLAN的实现
Sw1和Sw2之间的链路要承载多个VLAN的数据,需要一种基于VLAN的数据”标记“手段,以便对不同VLAN的数据帧进行区分
IEEE 802.1Q标准(也被称为Dot1Q)定义了标记方法,该标准对传统的以太网数据帧进行修正,在帧头中插入8021Q Tag,而在该Tag中,便可以写入VLAN信息
VLAN的划分方式
计算机发出的数据帧不带任何标签。对已支持VLAN特性的交换机来说,当计算机发出的Untagged帧一旦进入交换机后,交换机必须通过某种划分原则把这个帧划分到某个特定的VLAN中去
VLAN的划分包括如下5种方法:
基于接口划分:根据交换机的接口来划分VLAN
网络管理员预先给交换机的每个接口配置不同的PVID,当一个数据帧进入交换机时,如果没有带VLAN标签,该数据帧就会被打上接口指定PVID的标签,然后数据帧将在指定VLAN中传输
基于MAC地址划分:根据数据帧的源MAC地址来划分VLAN
网络管理员预先配置MAC地址和VLAN ID映射关系表,当交换机收到的是Untagged帧时,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
基于IP子网划分:根据数据帧中的源IP地址和子网掩码来划分VLAN
网络管理员预先配置IP地址和VLAN ID映射关系表,当交换机收到的是Untagged帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
基于协议划分:根据数据帧所属的协议(族)类型及封装格式来划分VLAN
网络管理员预先配置以太网帧中的协议域和VLAN ID的映射关系表,如果收到的是Untagged帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
基于策略划分:根据配置的策略划分VLAN,能实现多种组合的划分方式,包括接口、MAC地址、IP地址等
网络管理员预先配置策略,如果收到的是Untagged帧,且匹配配置的策略时,给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
基于接口的VLAN划分

划分原则:
将VLAN ID配置到交换机的物理接口上,从某一个物理接口进入交换机的、由终端计算机发送的Untagged数据帧都被划分到该接口的VLAN ID所表明的那个VLAN
特点:
这种划分原则简单而直观,实现容易,是目前实际的网络应用中最为广泛的划分VLAN的方式
当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属可能会发生变化
缺省VLAN,PVID (Port VLAN ID):
每个交换机的接口都应该配置一个PVID,到达这个端口的Untagged帧将一律被交换机划分到PVID所指代的VLAN
默认情况下,PVID的值为1
基于MAC地址的VLAN划分

划分原则:
交换机内部建立并维护了一个MAC地址与VLAN ID的对应表。当交换机接收到计算机发送的Untagged帧时,交换机将分析帧中的源MAC地址,然后查询MAC地址与VLAN ID的对应表,并根据对应关系把这个帧划分到相应的VLAN中
特点:
这种划分实现稍微复杂,但灵活性得到了提高
当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属不会发生变化(因为计算机的MAC地址没有变)
但这种类型的VLAN划分安全性不是很高,因为恶意计算机很容易伪造MAC地址
3.以太网二层接口类型

Access接口
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用
Trunk接口
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端
Hybrid接口
Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP;华为设备默认的接口类型是Hybrid
Access接口

Access接口特点:
仅允许VLAN ID与接口PVID相同的数据帧通过
Access接口接收数据帧:
当Access接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后对得到的Tagged帧进行转发操作(泛洪、转发、丢弃)
当Access接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否与PVID相同。如果相同,则对这个Tagged帧进行转发操作;如果不同,则直接丢弃这个Tagged帧
Access接口发送数据帧:
当一个Tagged帧从本交换机的其他接口到达一个Access接口后,交换机会检查这个帧的Tag中的VID是否与PVID相同:
如果相同,则将这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去
如果不同,则直接丢弃这个Tagged帧
Trunk接口
对于Trunk接口,除了要配置PVID外,还必须配置允许通过的VLAN ID列表,其中VLAN 1是默认存在的
Trunk接口特点:
Trunk接口仅允许VLAN ID在允许通过列表中的数据帧通过
Trunk接口可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)
Trunk接口接收数据帧:
当Trunk接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在允许通过的VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧
当Trunk接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在允许通过的VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧
Trunk接口发送数据帧:
当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中 的VID不在允许通过的VLAN ID列表中,则该Tagged帧会被直接丢弃
当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中 的VID在允许通过的VLAN ID列表中,则会比较该Tag中的VID是否与接口的PVID相同:
如果相同,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去
如果不同,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去
Access接口与Trunk接口举例

在本例中,SW1和SW2连接主机的接口为Access接口,PVID如图所示。SW1和SW2互连的接口为Trunk接口,PVID都为1,此Trunk接口的允许通过的VLAN ID列表也如图所示
Hybrid接口

对于Hybrid接口,除了要配置PVID外,还存在两个允许通过的VLAN ID列表,一个是Untagged VLAN ID列表,另一个是Tagged VLAN ID列表,其中VLAN 1默认在Untagged VLAN列表中。这两个允许通过列表中的所有VLAN的帧都是允许通过这个Hybrid接口的
Hybrid接口特点:
Hybrid接口仅允许VLAN ID在允许通过列表中的数据帧通过
Hybrid接口可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag、某些VLAN的帧不带Tag
与Trunk最主要的区别就是,能够支持多个VLAN的数据帧,不带标签通过
Hybrid接口接收数据帧:
当Hybrid接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在Untagged或Tagged VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧
当Hybrid接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在Untagged或Tagged VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧
Hybrid接口发送数据帧:
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中 的VID既不在Untagged VLAN ID列表中,也不在Tagged VLAN ID列表中,则该Tagged帧会被直接丢弃
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中 的VID在Untagged VLAN ID列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中 的VID在Tagged VLAN ID列表中,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去
Hybrid接口举例

在本例中,SW1和SW2连接主机的接口以及互连的接口均为Hybrid接口,PVID如图所示,Hybrid接口的允许通过的VLAN ID列表也如图所示
各类接口添加或剥除VLAN标签的处理过程总结如下:
当接收数据帧时:
当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收
当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收
当发送数据帧时:
Access接口直接剥离数据帧中的VLAN标签
Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签
Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签
因此,Access接口发出的数据帧肯定不带Tag;Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签;Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag
2.VLAN的应用
基于接口的VLAN的划分:
基于MAC地址的VLAN的划分:
3.VLAN的配置示例
vlan命令用来创建VLAN并进入VLAN视图,如果VLAN已存在,直接进入该VLAN的视图
undo vlan用来删除指定VLAN
缺省情况下,将所有接口都加入到一个缺省的VLAN中,该VLAN标识为1
命令:
vlan vlan-id
vlan-id:指定VLAN ID。整数形式,取值范围是1~4094。 ▫ vlan batch { vlan-id1 [ to vlan-id2 ] }
batch:指定批量创建VLAN。
vlan-id1 to vlan-id2:指定批量创建的VLAN ID,其中:
vlan-id1表示第一个VLAN的编号。
vlan-id2表示最后一个VLAN的编号。vlan-id2的取值必须大于等于vlanid1,它与vlan-id1共同确定一个VLAN范围。
如果不指定to vlan-id2参数,则只创建vlan-id1所指定的VLAN。
vlan-id1和vlan-id2是整数形式,取值范围是1~4094
命令:port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] | all }
vlan-id1 [ to vlan-id2 ]:指定Trunk类型接口加入的VLAN,其中:
vlan-id1表示第一个VLAN的编号。
to vlan-id2表示最后一个VLAN的编号。vlan-id2的取值必须大于等于vlan-id1的取值。
vlan-id1和vlan-id 2为整数形式,取值范围是1~4094
all:指定Trunk接口加入所有VLAN。
命令:port trunk pvid vlan vlan-id,设置Trunk类型接口的缺省VLAN
vlan-id:指定Trunk类型接口的缺省VLAN编号。整数形式,取值范围是1~4094。
命令:port hybrid untagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }
vlan-id1 [ to vlan-id2 ]:指定Hybrid类型接口加入的VLAN,其中:
vlan-id1表示第一个VLAN的编号。
to vlan-id2表示最后一个VLAN的编号。vlan-id2的取值必须大于等于vlan-id1的取值。
vlan-id1和vlan-id 2为整数形式,取值范围是1~4094。
all:指定Hybrid接口加入所有VLAN。
命令:port hybrid tagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }
vlan-id1 [ to vlan-id2 ]:指定Hybrid类型接口加入的VLAN,其中:
vlan-id1表示第一个VLAN的编号。
to vlan-id2表示最后一个VLAN的编号。vlan-id2的取值必须大于等于vlan-id1的取值。
vlan-id1和vlan-id 2为整数形式,取值范围是1~4094。
all:指定Hybrid接口加入所有VLAN。
命令:port hybrid pvid vlan vlan-id,设置Hybrid类型接口的缺省VLAN。
vlan-id:指定Hybrid类型接口的缺省VLAN编号。整数形式,取值范围是1~4094。
案例一:基于接口划分VLAN
配置思路:
创建VLAN并将连接用户的接口加入VLAN,实现不同业务用户之间的二层流量隔离
配置SW1和SW2的各接口类型以及通过的VLAN,实现相同业务用户通过SW1和SW2通信
创建VLAN
配置Access接口和Trunk接口
验证配置
命令:display vlan命令用来查看VLAN的相关信息
输出信息:
Tagged/Untagged Port:手动加入本VLAN的接口,分为Tagged和Untagged方式
VID或VLAN ID:VLAN编号
Type或VLAN Type:VLAN类型,common指普通VLAN
Ports:加入该VLAN的接口
案例二:基于接口划分VLAN
配置思路:
创建VLAN并将连接用户的接口加入VLAN,实现不同业务用户之间的二层流量隔离
配置SW1和SW2的各接口类型以及通过的VLAN,实现主机和服务器之间通过SW1和SW2通信
Hybrid接口的基础配置
验证配置
VLAN的基础配置命令
命令:mac-vlan mac-address mac-address [ mac-address-mask | mac-address-mask-length ]
mac-address:指定与VLAN关联的MAC地址
mac-address-mask:指定MAC地址掩码
mac-address-mask-length:指定MAC地址掩码长度
命令:mac-vlan enable,用来使能接口的MAC VLAN功能
案例三:基于MAC地址划分VLAN
配置思路:
创建VLAN
配置各以太网接口以正确的方式加入VLAN
配置主机1、主机2、主机3的MAC地址与VLAN关联,实现根据报文中的源MAC地址确定VLAN
创建VLAN,并关联MAC地址和VLAN
加入VLAN,并使能MAC VLAN功能
配置接口为Hybrid接口:在Access接口和Trunk接口上,只有基于MAC划分的VLAN和PVID相同时,才能使用MAC VLAN功能。所以基于MAC地址划分VLAN推荐在Hybrid口上配置
验证配置
命令:display mac-vlan { mac-address { all | mac-address [ mac-address-mask | mac-address-mask-length ] } | vlan vlan-id },用来查看基于MAC地址划分VLAN的配置信息
all:显示所有MAC地址VLAN划分信息
mac-address mac-address:显示指定MAC地址的VLAN划分信息
mac-address-mask:MAC地址掩码
mac-address-mask-length:MAC地址掩码长度
vlan vlan-id:显示指定MAC-VLAN的配置信息
输出信息:
MAC Address:MAC地址
MASK:MAC地址的掩码
VLAN:基于MAC地址划分的VLAN
Priority:指定MAC地址对应VLAN的802.1P优先级
第三节:生成树
一:生成树技术概述
1.技术背景
二层交换机网络的冗余性与环路

随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如图,接入层交换机单链路上联,则存在单链路故障,也就是如果这根上联链路发生故障,交换机下联用户就断网了。另一个问题的单点故障,也就是交换机如果宕机,交换机下联用户也就断网了
为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题
人为错误导致的二层环路

在现实中,除了冗余链路会引起环路,还有一些人为错误导致的环路
2.二层环路带来的问题

问题一:广播风暴
根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧
本例中,SW3收到了一个广播帧将其进行泛洪,SW1和SW2也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SW3,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断
问题二:MAC地址表漂移
交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的
本例中,SW3收到一个广播帧泛洪,SW1从GE0/0/1接口接收到广播帧后学习且泛洪,形成MAC地址5489-98EE-788A与GE0/0/1的映射;SW2收到广播帧后学习且泛洪,SW1再次从GE0/0/2收到源MAC地址为5489-98EE-788A的广播帧并进行学习,5489-98EE-788A会不断地在GE0/0/1与GE0/0/2接口之间来回切换,这被称为MAC地址漂移现象
3.初始生成树协议
在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP
STP通过构造一棵树来消除交换网络中的环路
运行STP算法,判断网络中存在环路的地方并阻断冗余链路,将环路网络修剪成无环路的树型网络,从而避免了数据帧在环路网络中的增生和无穷循环
生成树能够动态响应网络拓扑变化调整阻塞接口
如图,交换机上运行STP协议,会通过报文监控网络的拓扑结构,正常情况下是将SW3上的一个接口进行阻塞(Block),从而打破环路,当监控到SW1与SW3之间出现链路故障,则恢复阻塞端口进入转发状态
二层及三层环路
常见环路主要分为二层环路和三层环路
二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环
三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发
4.生成树协议在园区网络中的应用位置

生成树协议应用于园区网络的二层网络中,进行链路备份和消除环路
二:STP概述
1.STP的基本概念
桥ID

在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先
如图,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥
根桥

树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念
对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化
网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定
网桥协议数据单元(BPDU,Bridge Protocol Data Unit)生成树协议是一种桥嵌套协议,在IEEE 802.1d规范里定义,可以用来消除桥回路。它的工作原理是这样的:生成树协议定义了一个数据包,叫做桥协议数据单元BPDU(Bridge Protocol Data Unit)
Cost

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小

RPC

从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0
Port ID

运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色
BPDU

BPDU有两种类型:配置BPDU和TCN BPDU
配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知
BPDU的报文格式

配置BPDU的比较原则

STP操作:
选举一个根桥
每个非根交换机选举一个根端口
每个网段选举一个指定端口
阻塞非根、非指定端口
STP中定义了三种端口角色:指定端口,根端口和预备端口
指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口
根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口
如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞
配置BPDU的转发过程

交换机在刚启动时都认为自己是根桥,互相发送配置BPDU进行STP运算
2.STP的计算过程
选举根桥

什么是根桥
根桥是STP树的根节点
要生成一棵STP树,首先要确定出一个根桥
根桥是整个交换网络的逻辑中心,但不一定是它的物理中心
当网络的拓扑发生变化时,根桥也可能发生变化
选举过程:
STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己为根桥。因此,此时BPDU中的根桥ID为各自设备的网桥ID
当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID
交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥
如图:根桥的选举先比较优先级,交换机SW1、2、3的优先级相等,则比较MAC地址,也优选最小的,所以SW1的BID最小,因此SW1为根桥,SW2和SW3为非根桥
根桥的角色可抢占。当有更优的BID的交换机加入网络时,网络会重新进行STP计算,选出新的根桥
选举根接口

什么是根端口
一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口
在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的BPDU。因此,在所有非根桥上选举一个距离根桥“最近”的端口(根端口),在网络收敛后,根端口将不断的收到来自根桥的BPDU
即:根端口保证了交换机与根桥之间工作路径的唯一性和最优性
注意:一个非根桥设备上,最多只能有一个根端口
选举过程:
交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行PK
首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口
当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口
当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口
当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口
选举指定接口

什么是指定端口
网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口
因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU
注意:一般情况下,根桥上不存在任何根端口,只存在指定端口
选举过程:
指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID
首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口
若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口
若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口
非指定接口被阻塞

什么是非指定端口
在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备端口
阻塞非指定端口
STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)
一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了
注意:
非指定端口可以接收并处理BPDU
根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧
思考题一:识别以下拓扑中的根桥及各种接口角色

如图,首先选举根桥,三台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥
其次选举根端口,SW2上GE0/0/1距离根桥最近,RPC最小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/1也为根端口
然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW3的配置BPDU,比较BID,SW2比SW3的BID更优,所以SW2的GE0/0/2端口为指定端口
最终非根端口,非指定端口的SW3的GE0/0/2端口为预备端口
思考题二:识别以下拓扑中的根桥及各种接口角色

如图,首先选举根桥,四台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥
其次选举根端口,SW2上GE0/0/1距离根桥最近,RPC最小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/2也为根端口,SW4的两个端口RPC相同,然后比较SW4的G0/0/1对应的交换机SW2的BID与G0/0/2对应的交换机SW3的BID,谁小谁优先,最终选举出SW4的GE0/0/1端口为根端口
然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW4的配置BPDU,比较RPC,SW2比SW4的RPC更小,所以SW2的GE0/0/2端口为指定端口,同理可得SW3的GE0/0/1端口为指定端口
最终非根端口,非指定端口的SW4的GE0/0/2端口为预备端口
思考题三:识别以下拓扑中的根桥及各种接口角色

如图,首先选举根桥,两台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥
其次选举根端口,SW2上两个端口RPC相同,再比较两个接口对端的BID也相同,然后比较两个端口对端的PID,SW2的G0/0/1的对端PID:128.1,SW2的G0/0/2的对端PID:128.2,越小越优先,所以SW2的G0/0/1为根端口
然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/1和GE0/0/2端口为指定端口
最终非根端口,非指定端口的SW2的GE0/0/2端口为预备端口
3.STP的接口状态

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量
Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态
Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量
4.根桥故障

根桥故障:
在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文
如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文
如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥
端口状态:
SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发
收敛时间:
根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间
5.直接链路故障

直连链路故障:
当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路
当网络稳定时,交换机SW2检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态
端口状态:
备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态
直连链路故障,备用端口会经过30s后恢复转发状态
6.非直接链路故障

非直接链路故障后,SW3的备用端口恢复到转发状态,非直接故障会导致50s左右的恢复时间
非直连故障
在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文
若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到的BPDU报文失效
此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥
在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU
因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色
端口状态:
SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发
收敛时间:
非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间
7.拓扑改变导致MAC地址表错误

在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下,MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项
本例中,SW2中的MAC地址表项定义了通过端口GigabitEthernet 0/0/1可以到达主机A,通过端口GigabitEthernet 0/0/3可以到达主机B。由于SW3的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SW2后,SW2会继续通过端口GigabitEthernet 0/0/3转发该数据帧

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项
拓扑变更以及MAC地址表项更新的具体过程如下:
SW3感知到网络拓扑发生变化后,会不间断地向SW2发送TCN BPDU报文
SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文
SW2向根桥转发TCN BPDU报文
SW1把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)
最多等待15 s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作
二:生成树协议基本配置



1.STP的基础配置
第三节:快速生成树协议
一:快速生成树概览
1.STP的不足
STP虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的
STP的不足:
STP没有细致区分端口状态和端口角色,不利于初学者学习及部署
STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢
STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络
2.STP对计时器的依赖
STP采用计时器防止临时环路,当STP选举出端口角色后,即便角色为指定端口和根端口,仍然需要等待两个Forward Delay时间(30s)才能进入转发

在运行STP的环境下,终端或服务器接入后,由于端口需要从Disabled状态依次切换到Blocking、Listening、Learning及Forwarding状态,此时主机A在接入后,需要等待两个Forward Delay时间才能访问网络服务

3.STP重收敛过程慢

被阻塞的端口会从Blocking状态,依次切换到Listening及Learning状态,最终进入Forwarding状态
直连链路故障,端口状态转换,延时30s后进入

由于被阻塞端口上不再收到更优的BPDU,因此20s后端口开始从Blocking状态依次切换到Listening、Learning及Forwarding状态
非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay时间
非直连故障:
当网络正常时,SW3的被阻塞端口会定期收到来自根桥的BPDU
当SW1与SW2之间的链路发生故障时,SW2能够第一时间检测到故障发生,此时它认为自己成为新的根桥,于是向SW3发送自己的配置BPDU(根桥ID为自己的桥ID)
SW3的被阻塞端口将收到上述配置BPDU,但该BPDU并不比当前端口所缓存的配置BPDU更优,因此SW3忽略该配置BPDU
当Max Age计时器超时后,SW3端口上缓存的配置BPDU老化,SW3开始向SW2发送配置BPDU,该配置BPDU由根桥SW1发送的配置BPDU触发,其中的根桥ID字段值为SW1的桥ID
SW2收到上述配置BPDU后,解析该报文并认定SW1为根桥,于是将其连接SW3的端口切换为根端口
4.RSTP概述
RSTP对STP的改进:
通过端口角色的增补,简化了生成树协议的理解及部署
端口状态的重新划分
配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色
配置BPDU的处理发生变化
快速收敛
增加保护功能
RSTP在园区网络中的应用位置:

端口角色:

RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口
根端口和指定端口的作用同STP中定义,Alternate端口和Backup端口的描述如下
从配置BPDU报文发送角度来看:
Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口
Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口
从用户流量角度来看:
Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口
Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路
端口状态:
Discarding状态:不转发用户流量也不学习MAC地址
Learning状态:不转发用户流量但是学习MAC地址
Forwarding状:既转发用户流量又学习MAC地址

配置BPDU - RST BPDU
RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色
除了保证和STP格式基本一致之外,RSTP作了如下变化:
Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃
Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU

RST BPDU与STP配置BPDU报文格式不同点,包括:BPDU类型和Flag字段
BPDU类型,1 Byte,RST BPDU的类型值为0x02
标志,1 Byte,包括:
bit 7:TCA,表示拓扑变化确认
bit 6:Agreement,表示同意,用于P/A机制
bit 5:Forwarding,表示转发状态
bit 4:Learning,表示学习状态
bit 3和bit 2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口
bit 1:Proposal,表示提议,用于P/A机制
bit 0:TC,表示拓扑变化
配置BPDU的处理(一):

拓扑稳定后,配置BPDU报文的发送方式:
RSTP对配置BPDU的发送方式进行了改进
在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照Hello Time规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行
STP拓扑稳定后,根桥按照Hello Time规定的时间间隔发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP计算复杂且缓慢
配置BPDU的处理(二):

更短的BPDU超时时间:
如果一个端口在超时时间(即三个周期,超时时间=Hello Time×3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败
STP需要先等待一个Max Age
配置BPDU的处理(三):

处理次优BPDU
当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较
当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较
STP协议只有指定端口会立即处理次优BPDU
STP:
STP只有指定端口会立即处理次优BPDU,其他端口会忽略次优BPDU,等到Max Age计时器超时后,缓存的次优BPDU才会老化,然后发送自身更优的BPDU,进行新一轮的拓扑收敛
RSTP:
RSTP处理次优BPDU报文不再依赖于任何定时器(即不再依赖于BPDU老化)解决拓扑收敛,同时RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛
快速收敛机制(一):

如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥

如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。因为Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路

在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口
边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态
但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡
边缘端口的UP和Down,不会引起网络拓扑的变动

Proposal/Agreement机制::
简称P/A机制
RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度
在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态
在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会进入到Forwarding状态。
注意:
事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发
而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口进入Forwarding状态的速度
**P/A机制详解 **

根桥SW1和SW2之间新添加了一条链路
在当前状态下,SW2的下游端口分别是Alternate端口、指定端口(处于Forwarding状态)和边缘端口

SW1和SW2之间的两个端口都先成为指定端口,发送RST BPDU

SW2与SW1互联的端口收到更优的RST BPDU后,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU
SW1的指定端口进入Discarding状态,发送Proposal位置位的RST BPSU

SW2收到根桥发送来的Proposal位置位的RST BPDU,开始将自己的所有端口进入同步状态
各端口同步后,下游端口(除边缘端口)均进入Discarding状态,上游根端口进入Forwarding状态并向SW1返回Agreement位置位的回应RST BPDU
注意:
SW2的下游端口同步过程:替代端口,状态不变;边缘端口,不参与计算;阻塞非边缘指定端口

SW1收到的Agreement位置位的RST BPDU是对刚刚自己发出的Proposal的回应,于是指定端口马上进入Forwarding状态

下游设备继续执行P/A协商过程
拓扑变更机制:
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态

一旦检测到拓扑发生变化,将进行如下处理:
为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址
同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU
其他交换设备接收到RST BPDU后,清空所有端口(除了收到RST BPDU的端口和边缘端口)学习到MAC地址,然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程,如此,网络中就会产生RST BPDU的泛洪
注意:
在STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,再由根桥来通知拓扑变更,泛洪TC置位的配置BPDU
在RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪
如上图所示:
SW3的根端口收不到从根桥发来的RST BPDU后,Alternate端口会快速切换为新的根端口,启动TC While Timer,并清空状态发生变化的端口学习到的MAC地址。然后向外发出TC置位的RST BPDU
SW2接收到RST BPDU后,会清空接收口以外所有端口学习到的MAC地址,同时开启计时器,并向外发送TC置位的RST BPDU
最终,RST BPDU会在全网泛洪
保护功能:

BPDU保护:
正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统
注意:
在交换设备上,通常将直接与用户终端(如PC机)或文件服务器等非交换设备相连的端口配置为边缘端口
如上图所示:
SW3与某主机互联,并设置该互联端口为边缘端口
后来该主机被恶意用户侵占,并伪造RST BPDU攻击SW3,因此边缘端口会收到RST BPDU,失去边缘端口特性,并进行生成树计算
根保护(Root保护):

对于启用根保护功能的指定端口,其端口角色只能保持为指定端口
一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态
根保护功能确保了根桥的角色不会因为一些网络问题而改变
注意:
由于维护人员的错误配置或网络中的恶意攻击,根桥有可能会收到优先级更高的RST BPDU,使得根桥失去根地位,从而引起网络拓扑结构的错误变动。这种拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞
如上图所示:
网络稳定时,SW1为根桥,向下游设备发送最优RST BPDU
如果SW2被恶意用户侵占,例如恶意修改SW2的桥优先级,使得SW2的桥优先级优于SW1,此时SW2会主动发送自己的RST BPDU
当SW1的指定端口收到该RST BPDU后,会重新进行生成树计算,而SW1也会失去根桥的地位,引起拓扑变动
环路保护:

在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路
直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态
注意:
在运行RSTP的网络中,根端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口
如图所示,当SW1和SW3之间的链路发生单向链路故障时,SW3由于根端口在超时时间内收不到来自上游设备的BPDU报文,Alternate端口切换成根端口,根端口切换成指定端口,从而形成了环路
防TC-BPDU攻击:

启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置
如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数
对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的
注意:
交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。如果有人伪造TC置位的RST BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多RST BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患
如上图所示:
如果SW3被恶意用户侵占,伪造大量TC置位的RST BPDU并向外发送。SW2收到这些RST BPDU后,会频繁执行MAC地址表项的删除操作,形成巨大负担
5.RSTP工作过程
RSTP拓扑收敛过程

每一台交换机启动RSTP后,都认为自己是“根桥”,并且发送RST BPDU,所有端口都为指定端口,处于Discarding状态
网络初始化时,网络中所有的RSTP交换机都认为自己是“根桥”,并设置每个端口都为指定端口,发送RST BPDU。其中SW1的桥ID最优,最终会被选举为根桥

上游链路的设备互联端口通过P/A机制,快速进入转发状态
SW2收到更优的RST BPDU后,经比较认为SW1才是当前根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RST BPDU
SW1的端口进入Discarding状态,发送Proposal位置位的RST BPDU。SW2收到后阻塞除边缘端口以外的所有其他端口(该过程称为同步过程)
SW2的各端口同步后,根端口立即进入Forwarding状态,并向SW1返回Agreement位置位的RST BPDU。SW1收到该报文后,会让指定端口立即进入Forwarding状态
注意:
每个认为自己是“根桥”的交换机生成一个RST BPDU报文来协商指定网段的端口状态,此RST BPDU报文Flag字段里面的Proposal位需要置位
当一个端口收到RST BPDU报文时,此端口会比较收到的RST BPDU报文和本地的RST BPDU报文。如果本地的RST BPDU报文优于接收的RST BPDU报文,则端口会丢弃接收的RST BPDU报文,并发送Proposal置位的本地RST BPDU报文来回复对端设备
如图,RSTP上游链路的设备互联端口收敛过程,以SW1与SW2为例

下游链路的设备互联端口会进行新一轮的P/A协商
SW2的下游端口设置为指定端口,持续发送Proposal位置位的RST BPDU
SW3的下游端口收到该BPDU后,发现不是本设备收到的最优BPDU,则会忽略,不会发送Agreement位置位的RST BPDU
SW2的下游端口一直收不到Agreement位置位的回应报文,等待2倍的Forward Delay后,进入转发状态
如图,RSTP下游链路的设备互联端口会进入慢收敛过程,以SW2与SW3为例
6.RSTP的基本配置
注意:
配置后,在stp tc-protection interval指定的时间内,设备只会处理stp tc-protection threshold指定数量的拓扑变化报文,对于其他的报文会延迟处理,所以可能会影响生成树的收敛速度。例如,时间设定为10秒,阈值设定为5,则设备收到拓扑变化报文后,在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理
7.案例一 RSTP的基础配置

在上述三台交换机上部署RSTP,以便消除网络中的二层环路
通过配置实现:
将SW1指定为根桥,SW2为备份根桥
与PC相连的端口不参与RSTP计算,将其设置为边缘端口
配置根保护和BPDU保护功能,实现对设备或链路的保护
SW1开启RSTP功能:
[SW1] stp mode rstp
[SW1] stp enable
[SW1] stp root primary
SW2开启RSTP功能:
[SW2] stp mode rstp
[SW2] stp enable
[SW2] stp root secondary
SW3开启RSTP功能:
[SW3] stp mode rstp
[SW3] stp enable
SW3开启边缘端口:
[SW3-Ethernet0/0/1] stp edged-port enable
SW1开启根保护功能:
[SW1-GigabitEthernet0/0/1] stp root-protection
[SW1-GigabitEthernet0/0/2] stp root-protection
SW3开启BPDU保护功能:
[SW3] stp bpdu-protection
第四节:实现VLAN间通信
一:技术背景
1.VLAN间通信
实际网络部署中一般会将不同IP地址段划分到不同的VLAN
同VLAN且同网段的PC之间可直接进行通信,无需借助三层转发设备,该通信方式被称为二层通信
VLAN之间需要通过三层通信实现互访,三层通信需要借助三层设备

常见的三层设备:路由器、三层交换机、防火墙等
将交换机与路由器的三层接口互联,由三层设备进行路由转发实现通信

二:使用路由器实现VLAN间通信
1.使用路由器物理接口

路由器三层接口作为网关,转发本网段前往其他网段的流量
路由器三层接口无法处理携带VLAN Tag的数据帧,因此交换机上联路由器的接口需要配置为Access
路由器的一个物理接口作为一个VLAN的网关,因此存在一个VLAN需要占用一个路由器物理接口
路由器作为三层转发设备其接口数量较少,方案的可扩展性太差
在二层交换机上配置VLAN,每个VLAN单独使用一个交换机接口与路由器互联
路由器使用两个物理接口,分别是VLAN 10及VLAN 20内PC的默认网关,使用路由器的物理接口实现VLAN间的通信
2.使用路由器子接口

子接口是基于路由器以太网接口所创建的逻辑接口,以物理接口ID+子接口ID进行标识,子接口同物理接口一样可以进行三层转发
子接口不同于物理接口,可以终结携带VLAN Tag的数据帧
基于一个物理接口创建多个子接口,将该物理接口对接到交换机的Trunk接口,即可实现使用同一个物理接口为多个VLAN提供三层转发
R1使用一个物理接口(GE0/0/1)与交换机SW1对接,并基于该物理接口创建两个子接口:GE0/0/1.10及GE0/0/1.20,分别使用这两个子接口作为VLAN 10及VLAN 20的默认网关
由于三层子接口不支持VLAN报文,当它收到VLAN报文时,会将VLAN报文当成是非法报文而丢弃。因此,需要在子接口上将VLAN Tag剥掉,也就是需要VLAN终结(VLAN Termination)
3.子接口处理流程
交换机连接路由器的接口类型配置为Trunk,根据报文的VLAN Tag不同,路由器将收到的报文交由对应的子接口处理

子接口终结VLAN的实质包含两个方面:
对接口接收到报文,剥除VLAN标签后进行三层转发或其他处理
对接口发出的报文,又将相应的VLAN标签添加到报文中后再发送
4.子接口配置实例

interface interface-type interface-number.sub-interface number命令用来创建子接口。sub-interface number代表物理接口内的逻辑接口通道。一般情况下,为了方便记忆,子接口ID与所要终结的VLAN ID相同
dot1q termination vid命令用来配置子接口Dot1q终结的单层VLAN ID。缺省情况,子接口没有配置dot1q终结的单层VLAN ID。arp broadcast enable命令用来使能终结子接口的ARP广播功能。缺省情况下,终结子接口没有使能ARP广播功能。终结子接口不能转发广播报文,在收到广播报文后它们直接把该报文丢弃。为了允许终结子接口能转发广播报文,可以通过在子接口上执行此命令
三:使用VLANIF技术实现VLAN间通信
1.三层交换机和VLANIF接口

二层交换机指的是只具备二层交换功能的交换机
三层交换机除了具备二层交换机的功能,还支持通过三层接口实现路由转发功能
VLANIF接口是一种三层的逻辑接口,支持VLAN Tag的剥离和添加,因此可以通过VLANIF接口实现VLAN间通信
VLANIF接口编号与所对应的VLAN ID相同,如VLAN 10对应 VLANIF 10
2.VLANIF配置实例

interface vlanif vlan-id命令用来创建VLANIF接口并进入到VLANIF接口视图。vlan-id表示与VLANIF接口相关联的VLAN编号。VLANIF接口的IP地址作为主机的网关IP地址,和主机的IP地址必须位于同一网段
3.VLANIF转发流程



4.三层通信过程解析
网络拓扑

连接逻辑图

注意:
NAPT(Network Address Port Translation,网络地址端口转换):将IP数据报文头中的IP地址、端口号转换为另一个IP地址、端口号的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能,NAPT支持多个内部地址映射到同一个公有地址上,可以实现使用一个公有地址支持内网多个内部地址同时访问外部网络
通信过程(1)

注意:
假设所有设备上都已存在相应的ARP或MAC表项
通信过程(2)

通信过程(3)

通信过程(4)

通信过程(5)

注意:
NAT(Network Address Translation,网络地址转换):将IP数据报文头中的IP地址转换为另一个IP地址