交换层有三个地方涉及到冗余与负载分担,分别是生成树、EC以太网通道、FHRP网关协议。本文关于生成树相关的实现技术。生成树(包括stp、rstp、mstp)的三层主要功能由低至高分别为:防环收敛、冗余备份、负载均衡。首先说明,冗余与负载分担是两个概念。冗余往往与备份是联系在一起的,单纯有冗余技术并不一定能实现负载分担。而负载分担技术是依赖于冗余的。
1、STP(Spanning-Tree Protocol)
STP协议生来就是为了冗余而存在的,单纯树型的网络无法提供足够的可靠性,由此我们引入了额外的链路,这才出现了环路这样的问题。但单纯是标准的802.1D
STP协议并不能实现真正的冗余与负载分担。
STP为IEEE 802.1D标准,它内部只有一棵STP
tree,因此必然有一条链路要被blocking,不会转发数据,只有另外一条链路出现问题时,这条被blocking的链路才会接替之前链路所承担的职责,做数据的转发。无论怎样,总会有一条链路处于不被使用的状态,冗余是有了,但是负载分担是不可想象的。
cisco对STP做了改进,它使得每个VLAN都运行一棵stp tree,这样第一条链路可以为vlan 1 2 3服务,对vlan 4
5 6 blocking,第二条链路可以为vlan 4 5 6 forwarding,对vlan 1 2
3关闭,无形中实现了链路的冗余,负载分担。这种技术被称之为PVST+。
随着网络的发展,人们发现传统的STP协议无法满足主备快速切换的需求,因为STP协议将端口定义了5种状态,分别为:blocking
listening learning forwarding
disabling,想要从blocking切换至forwarding状态,必需要经过50秒的周期,这50秒我们只能被动地去等待。20秒的blocking状态下,如果没有检测到邻居发来的BPDU包,则进入listening,这时要做的是选举Root
Bridge、Designate Port、Root
Port,15秒后,进入learning,learning状态下可以学习MAC地址,为最后的forwarding做准备,同样是15秒,最后到达转发状态。这样的延时在现代网络环境下是让人极为难以忍受的。
2、RSTP(802.1w)
RSTP的出现解决了延时的问题,它的收敛速度很快,当然CISCO也针对这种技术推出了自已的RPVST+技术。RSTP在STP基础上额外定义了两种port
role(注意这里的概念,端口角色),分别是alternate与backup。另外重新规定了port
state(端口状态),分别为discarding、Learning、Forwarding.
STP的一大失败之处在于混淆了port
role与port state两种概念,在RSTP上,这样的问题不再存在了,port state与port
role无关了。alternate port责任是为另一台交换机上的链路作备份,而backup
port是为本交换机上的端口作备。
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TC |
Proposal |
Port- |
role |
learning |
forwarding |
Agreement |
TCA |
RSTP最重要的变化在于对BPDU中type字段的利用上,之前STP只使用了其中的两个位,另外6个位中实现了很多的功能,包括不再需要去等待50秒的时间完成主备切换,直接利用proposal与agreement协商即可,这样大大缩短了收敛时间。
RSTP还定义了两个新的概念:edge
port与link type,如果是edge
port,表明下面接的只能是主机,环路的存在是不可能的,所以我们可以直接将其从discarding切换到forwarding状态,类似于STP中的port
fast技术。而link
type定义了这条链路是point-to-point的还是shared。如果有pt-pt环境下,我们就可以做快速的切换了。
3、MSTP(802.1s)
STP和RSTP都采用了一棵STP
tree,负载分担不可实现,而CISCO的PVST+与RPVST+采用了每个VLAN一棵生成树,虽然实现了负载分担,但是会占用非常多的CPU时间。这也正是MSTP(802.1s)产生的原因。
MSTP可以将多个VLAN的生成树映射为一个实例,即vlan map to a
instance,我们不需要那么多的生成树,只需要按照冗余链路的条数来得出需要几棵生成树。
如果只有两条链路,并且有1-1000个VLAN,我们可以将1-500定义为instance
1,将501-1000定义到instance 2。只生成两棵树1和2,同样实现了冗余与负载分担。
MSTP是基于RSTP的,没有RSTP,MSTP是无法运行的。
另:
PVST+ 与 RPVST+ 模式下:交换机可支持128个STP instance。
MSTP模式下:交换机可支持65个MST instance,当然每个实例中的VLAN数目是无限的。
4.Ether channel
其实channel技术不仅仅是接口的绑定,通常当我们骨干链路带宽不足的时候,可能会想到绑定多条链路,这时候自然会用到ether-channel技
术,它把多条物理接口绑定为一个逻辑接口,最多可绑定8个接口,实现1600G的带宽绑定效果。但是实际上数据的传输过程中仍然是通过物理的接口来转发的。这就为我们做负载分担又提出了一种方案。我们可以根据源、目的IP地址来做负载分担,也就是一条会话。第一条会话走第1个接口,第2条会话自动切换到第2个物理接口去做转发。。。。。。这样就不会使大量的数据都通过物理接口1来做转发了。
Ether
Channel可以通过手动指定,当然也可以动态形成,这就需要提到另外两种技术,一种是思科私有的PAGP,另外一种是IEEE标准的LACP(802.3ad),我们只需要注意他们的协商方式。
接口模式:on、desirable、auto:
配置为on时,表示不接受PAGP的动态协商,要完全手工指定,也就是两端必须一致配置为on模式,否则无法绑定。
desirable表示主动协商,如对端为desirable或auto都可形成channel。
auto表示被动协商,如果对端为auto,就无法形成channel,这时必须对端为desirable。
这其实很好理解,但是为什么要注意它,是因为我们在trunk的建立时,也有几种类似的模式,而trunk中的这几种模式非常混乱,无论如何都能动态协商成功,比如on和desirable是可以协商成功的。
LACP的接口模式有PAGE不同,但是意义类似它们分别是:on、off、passive、active。