HCIA-以太网交换基础
以太网交换基础
以太网协议
以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议标准,该标注定义了在局域网中采用多个电缆类型和信号处理方法。
以太网是建立在CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。
冲突域
冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播)其余节点都可以收到。
在传统的以太网中,同一介质上的多个节点共享链路带宽,争用链路的使用权,这样就会发生冲突。
同一介质上的节点越多,冲突发生的概率越大。
交换机不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连地主机(或网络)之间不必担心流量大小对于数据发送冲突的影响。
广播域
广播报文所能到达地整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文。
在传统地以太网中,同一介质上的多个节点共享链路,一台设备发出的广播报文,所有设备均会收到。
交换机对广播波阿文会向所有的接口都转发,所以交换机的所有接口连接的节点属于一个广播域。
以太网帧
以太网技术所使用地帧称为以太网帧(Ethernet Frame)简称为以太帧。
以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3的格式。

MAC地址构成及分类
OUI(Organizationally Unique Identifier):厂商代码,由IEEE分配,3Byte,24bit。
MAC地址分为单播MAC地址、组播MAC地址和广播MAC地址

园区网典型架构
园区网络一般分为四层。

交换机工作原理

MAC地址表
每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口编号之间的映射关系。

交换机的三种数据帧处理行为
交换机对于传输介质进入某一端的帧的处理行为一共有3种。
泛洪:广播包,未知单播包,未知组播包
转发:已知单播包
丢弃。
工作原理
1.初始情况下,交换机的MAC地址表是为空的。在主机1知道主机2的MAC地址的情况下,对主机2发送数据帧。交换机接口接收到数据帧后,在MAC地址表中查询该数据帧的目的MAC地址,发现MAC地址表项中没有对应的MAC地址,这对交换机来说时未知单播帧。
2.交换机在MAC地址表中没有查到对应的表项,则交换机对单播帧执行泛洪操作。同时交换机将该数据帧的源MAC地址记录下来创建相应的MAC地址表项,与对应接口进行绑定。
3.交换机其他端口连接的主机也会收到数据帧,当发现不是发给自己的时候就会对数据帧进行丢弃。相应的主机2收到后处理数据帧,并向主机1回复,将回复的数据帧发送给交换机。
4.交换机接收到主机2的回复的时候会对主机2的MAC地址进行记录建立地址表项,并绑定数据帧的源端口。
5.当下一次主机1对主机2发送数据帧时对于交换机来说,主机1发送的就是已知单播帧,随后将数据帧转发给主机2的端口。
VLAN
以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质,当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。
在这种情况下出现了VLAN(Virtual Local Area Network)技术上解决以上问题。
传统以太网问题
在典型交换网络中,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。
广播域越大,产生的网络安全问题、垃圾流量问题就越严重。

VLAN的实现
Switch1与Switch2同属一个企业,该企业同一规划了网络中的VLAN。其中VLAN10用于A部门,VLAN20用于B部门。A、B部门的员工在Switch1和Switch2上都有接入。
PC1发出的数据经过Switch1和Switch2之间的链路到达了Switch2。如果不加处理,后者无法判断该数据所属的VLAN,也不知道应该将这个数据输出到本地哪个VLAN中。

VLAN标签(VLAN Tag)
要是交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。
IEEE 802.1Q协议规定,在以太网数据帧中加入4个字节的VLAN标签,又称VLAN Tag,简称Tag
VLAN数据帧

VLAN的划分方式
| VLAN划分方式 | VLAN10 | VLAN20 |
|---|---|---|
| 基于接口 | GE0/0/1,GE0/0/3 | GE0/0/2,GE0/0/4 |
| 基于MAC地址 | MAC1,MAC3 | MAC2,MAC4 |
| 基于IP子网划分 | 10.0.1.* | 10.0.2.* |
| 基于协议划分 | IP | IPv6 |
| 基于策略 | 10.0.1.*+GE0/0/1+MAC1 | 10.0.2.*+GE0/0/2+MAC2 |

以太网二层接口类型
| 接口类型 | 解释 |
|---|---|
| Access | 交换机上常用来连接用户PC、服务器等终端设备的接口。Access接口所连接的这些设备的网卡往往只收发无标记帧。Access接口只能加入一个VLAN。 |
| Trunk | Trunk接口允许多个VLAN的数据帧通过,这些数据帧通过802.1Q Tag实现区分。Trunk接口常用于交换机之间的互联,也用于连接路由器、防火墙等设备的子接口。 |
| Hybrid | Hybrid接口与Trunk接口类似,也允许多个VLAN的数据帧通过,这些数据帧通过802.1Q Tag实现区分。用户可以灵活指定Hybrid接口在发送某个(或某些)VLAN的数据帧时时否携带Tag。 |

VLAN配置
access接口配置
1 | vlan {1-4095} //创建vlan |
trunk接口配置
1 | vlan {1-4095} //创建vlan |
hybrid接口配置
1 | vlan {1-4095} |
生成树
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生二层环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而倒是用户通信质量较差,甚至通信中断。为了解决交换网络中的环路问题了,提出了生成树协议STP(Spanning Tree Protocol)。
运行STP协议的设备通过彼此交互信息发现网络中的环路,并没有选择的对某个接口进行阻塞,最终将环形网状结构修剪成五环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
技术背景
二层交换机网络的冗余性与环路
一个缺乏冗余性设计的网络,如果发生故障则下联设备将会断网,接入层交换机的上行只有单一的链路,并无冗余,如果发生故障那么下联的PC将会断网。

引入冗余性的同时也引入了二层环路,网络的冗余性增强了但是却出现了二层环路。

认为错误导致的二层环路
在现实中,一些二层环路可能是由于人为的疏忽导致的,例如错误地连接设备之间的互联线缆等。

另一些二层环路可能是由于人为的配置错误导致的,在本例中,网络管理员未将SW1与SW2之间的链路绑定到一个逻辑链路(聚合链路)上,从而引入了二层环路。

二层环路带来的问题
广播风暴
SW3收到BUM帧(Broadcast广播包,Unknown unicast未知单播,MuLicast组播)后就将其进行泛洪,SW1及SW2收到后进一步泛洪,如此反复导致整个昂罗资源被耗尽导致网络瘫痪不可用。

MAC地址漂移
以SW1为例,源MAC5489-98EE-788A会不断地在GE0/0/1和GE0/0/2接口之间来回切换,这被称为MAC地址漂移现象。

初识生成树协议
在网络中部署生成树后,交换机之间会进行生成树协议报文地交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞,从而打破环路。

生成树动态响应网络拓扑变化调整阻塞接口
交换机上运行的生成树协议会持续监控网络的拓扑结构,当网路拓扑接口发生变化时,生成树能感知这些变化,并且自动做出调整。
因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

STP概述
STP是一个用于局域网中消除环路的协议。
运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
STP在网络中运行后持续监控网络的状态,当网络中出现拓扑变更时,STP能够干事并且进行自动响应从而使得网络状态适应新的拓扑结构,波癌症网络可靠性。
由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。
STP的基本概念
桥ID
桥ID(Bridge ID,BID)。
IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成的。
每一台运行STP的交换机都拥有一个唯一的BID。
BID桥优先级占据高16bit,其余的低48bit是桥MAC地址。
在STP网路中,BID最小的设备会被选举为根桥。

根桥
STP的主要作用之一是在整个交换网络中计算一棵无环的“树”(STP树)。
根桥是一个STP交换网络中的“树根”。
STP最开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
在STP网络中,桥ID最小的设备会被选举为根桥。
在BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有的最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。
开销值Cost
每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。
接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
接口带宽越大,则Cost值越小。
用户也可以根据需要通过命令调整接口的Cost。

Cost计算方法
接口Cost是已经激活了STP的接口所维护的一个开销值,该值存在某人值,愈积口德速率有关联,并且设备使用不同的算法时,相同的接口速率对应不同的Cost值。

RPC(根路径开销)
根路径开销(Root Path Cost),在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
一台设备从某个接口到达根桥的RPC等于从根桥到设备沿途所有入方向接口的Cost累加。
在图中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。

PORT ID(接口ID)
运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定的场景下选举指定接口。
接口ID由两部分构成的,高4bit是接口优先级,低12bit是接口编号。
激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级。

BPDU(网桥协议数据单元)
BPDU(Bridge Prorocol Data Unit,网桥协议数据单元)
BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。
STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。
BPDU分为两种类型:配置BPDU(Configuration BPDU),TCN BPDU(Topology Change Notification BPDU)
配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。

配置BPDU转发过程

STP计算过程
选举根桥
在交换网络中选举一个根桥,STP在交换网络中开始工作后,每个交换机都会项网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID。
网络中拥有最小桥ID的交换机成为根桥。
在一个连续的STP交换网络中只会存在一个根桥。
根桥的角色是可以抢占的。
为了确保交换网络稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0。

选举根接口
在每台非根桥上选举一个接收最优配置BPDU的根接口(接收BPDU)。
每一台非根交换机都会在自己的接口中选举处于一个接口。
非根交换机上有且只会有一个根接口。
当非根交换机有多个接口接入网络中时,根接口是其收到最优配置的BPDU的接口。
可以形象地理解为,根接口是每台非根桥上“朝向”根桥地接口。
选举过程
- 交换机有多个端口接入网络,每个端口都会受到BPDU的报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行PK。
- 首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
- 当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小越优选,因此交换机会选上行设备PID最小的端口作为根端口。
- 当上行交换机的BID相同时,则比较本地交换机的PID,即比较本端交换机各端口各自的PID,值越小越优先,因此交换机会选端口PID最小的端口作为根端口。
选举指定接口
在每条链路上选举一个指定接口(转发BPDU),根接口选举出来之后,非根桥会使用其在该接口上接收到的最优BPDU进行计算,然后将计算得到的配置BPDU与除了根接口之外的其他所有接口所收到的配置BPDU进行比较:
- 如果前者更优,则该接口为指定接口;
- 如果后者更优,则该接口为非指定接口。
一般情况下根桥的所有接口都是指定接口。
选举过程:
指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。
- 首先比较根路径开销(RPC),值越小越优选,因此交换机会选本设备根端口RPC最小的端口作为指定端口。
- 若RPC相等,则比较链路两端交换机设备的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。
- 若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。

阻塞非指定接口
一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口。
STP操作的最后一步时阻塞网络中的非指定接口,这一步完成后网络中的二层环路就此消除。

STP的接口
接口状态
| 状态名称 | 状态描述 |
|---|---|
| 禁用(Disable) | 该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down |
| 阻塞(Blocking) | 该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习。 |
| 侦听(Listening) | 当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习。 |
| 学习(Learning) | 当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习。 |
| 转发(Forwarding) | 处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或者指定接口才能进入转发状态。 |
接口状态迁移

3号状态地转发延时器的时间为15s,防止临时环路。
拓扑改变导致MAC地址表错误

STP的基础配置命令
配置生成树工作模式
交换机支持STP、RSTP、MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。
1 | stp mode {stp|rstp|mstp} |
配置根桥(可选)
配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
1 | stp root primary |
备份根桥(可选)
配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
1 | stp root secondary |
配置交换机的STP优先级(可选)
缺省情况下,交换机的优先级取值是32768,更改的优先级值是4096的整数倍。
1 | stp priority vlaue |
配置接口路径开销(可选)
配置接口路径开销计算方法,缺省情况下,路径开销值的计算方法为IEEE 802.1t(do1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
1 | stp pathcost-standard{dot1d-1998|dot1t|legacy} |
设置当前接口的路径开销值
1 | stp cost cost-vlaue |
vlan间的通信
传统交换机二层组网中,默认所有网络处于同一个广播域,这带来了诸多问题。VLAN(Virtual Local Area Network)技术的提出,满足了二层组网隔离广播域需求,使得属于不同VLAN的网络无法互访,但不同VLAN之间又存在着相互访问的需求。
VLAN间通信
实际网络部署中一般会将不同IP地址段划分到不同的VLAN。
同VLAN且同网段的PC之间可直接进行通信,无需借助三层转发设备,该通信方式被称为二层通信。
VLAN之间需要三层通信实现互访,三层通信需借助三层设备。

常见的三层设备:路由器、三层交换机、防火墙等。
将二层交换机与路由器的三层接口互联,由三层设备进行路由转发来实现通信。
使用路由器物理接口通信
路由器三才能接口作为网关,转发本网段前往其他网段的流量。
路由器三层接口无法处理携带VLAN Tag的数据帧,因此交换机上联路由器的接口配置为Access。
路由器的一个物理接口作为一个VLAN网关,因此存在一个VLAN就需要一个路由器物理接口。
路由器作为三层转发设备其接口数量较少,方案的可扩展性太差。


SW1配置
1 | sys |
AR1配置
1 | sys |
联通性测试

使用路由器子接口
子接口(Sub-Interface)是基于路由器以太网接口所创建的逻辑路由器,以物理接口ID+子接口ID进行标识,子接口同物理接口一样可进行三层转发。
子接口不同于物理接口,可以终结携带VLAN Tag的数据帧。
基于一个物理接口创建多个子接口,该物理接口对接到交换机的Trunk接口,即可实现使用一个物理接口为多个VLAN提供三层转发服务。


SW1配置
1 | sys |
AR1配置
1 | sys |
联通性测试

使用三层交换机实现VLAN间通信

三层交换机需要配置ip地址的需要用到虚拟接口(vlanif)
SW1配置
1 | sys |
联通性测试

使用路由器做三层交换机实现vlan间通信

AR2配置
1 | sys |
SW1配置
1 | sys |
联通性测试

以太网链路聚合
随着业务的发展和园区网络规模的不断扩大,用户对于网络的带宽、可靠性要求越来越高。传统解决方案通过升级设备方式提高网络带宽,同时通过部署冗余链路并以STP(Spanning Tree Protocol生成树协议)协议实现高可靠。传统解决方案存在灵活度低、故障恢复时间长、配置复杂等缺点。
链路可靠性
为保证设备间链路可靠性,在设备间部署多条物理线路,为防止环路STP只保留一条链路转发流量,其余链路成为备份链路。

提升链路带宽
设备之间存在多条路链路时,由于STP的存在,实际只会有一条链路转发了流量,设备间链路带宽无法得到提升。

以太网链路聚合
以太网链路聚合Eth-Trunk:简称链路聚合,通过将多个物理接口捆绑成一个逻辑接口,可以在不进行硬件升级的条件下达到增加链路带宽的目的。
注意:做链路聚合的前提是聚合的每一个接口速率必须一致,不一致则无法进行链路聚合。

链路聚合基本术语/概念
- 聚合组(Link Aggregation Group,LAG):若干条链路捆绑在一起所形成的逻辑链路。每个聚合组唯一对应着一个逻辑接口,这个逻辑接口又被称为链路聚合接口或Eth-Trunk接口。
- 成员接口和成员链路:组成Eth-Trunk接口的各个物理接口称为成员接口。成员接口对应的链路称为成员链路。
- 活动接口和活动链路:活动接口又叫选中(Selected)接口,是参与数据转发的成员接口。活动接口对应的链路被称为活动链路(Active Link)
- 非活动接口和非活动链路:又叫非选中(Unselected)接口,是不参与转发数据的成员接口。非活动接口对应的链路被称为非活动链路(Inactive Link)。
- 聚合模式:根据是否开启LACP(Link Aggregation Control Protocol,链路聚合控制协议),链路聚合可以分为手工模式和LACP模式。
- 其他概念:活动接口上限阈值和活动接口下限阈值。

手工模式
手工模式:Eth-Trunk的建立、成员接口的加入均由手动配置,双方系统之间不使用LACP进行协商。
正常情况下所有链路都是活动链路,该模式下所有活动链路都参与数据的转发,平局分担流量,如果某条活动链路故障,链路聚合组自动在剩余的活动链接中平均分担流量。
当聚合的两端设备中存在一个不支持LACP协议时,可以使用手工模式。

链路聚合手工模式简单配置

SW1配置
1 | sys |
SW2
1 | sys |
手工配置会存在问题,sw1链路聚合配置完成后,sw2还没配置好,汇聚口将会直接启用不跟sw2进行协商,这中间的过程会存在众多问题,比如接口流量转发丢包问题。
手工模式缺陷
- 为了使链路聚合接口正常工作,必须保证本端链路聚合接口中所有成员接口的对端接口属于同一设备,加入同一链路聚合接口。
- 手工模式下,设备间没有报文交互,因此只能通过管理员人工确认。

手工模式下,设备只能通过物理层状态判断对端接口是否正常工作。

LACP模式
LACP模式:采用LACP协议的一种链路聚合模式。设备间通过链路聚合控制协议数据单元(Link Aggregation Control Protocol Data Unit,LACPDU)进行交互,通过协议协商确保对端是同一台设备、同一个聚合接口的成员接口。
LACPDU报文中包含设备优先级、MAC地址、接口优先级、接口号等。

LACP简单配置

SW1配置
1 | sys |
SW2配置
1 | sys |
LACP系统优先级
LACP模式下,两端设备所选择的活动接口数目必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端称为主动端,另一端(被动端)根据主动段选择活动接口。
通过系统LACP优先级确定主动端,值越小优先级越高。

优先级设置

SW1配置
1 | sys |
SW2配置
1 | sys |
负载分担

配置
1 | int eth-trunk 1 |


