很多从事网络工作的小伙伴在组网时经常遇到各种各样的问题,下面我罗列出一些比较典型的问题来一起讨论。
1)随着网络中部署的业务量不断增长,单条物理链路的带宽已不能满足正常的业务流量需求,如果将当前接口板替换为具备更高带宽的接口板(将百兆口换成千兆口),则会浪费现有的设备资源,而且升级费用代价较大。如果增加设备间的链路数量,则在作为三层口使用时需要在每个接口上配置IP地址,从而导致浪费IP地址资源;
(2)单条链路的组网中没有冗余的设计,如果接入层设备上联的链路故障时,影响接入设备下联的整个区域的设备正常通信。
2.遇到上述问题该如何解决呢?可以把多个独立的物理接口绑定在一起作为一个大带宽的逻辑接口使用,即链路聚合技术,既不用替换接口板也不会浪费IP地址资源。Eth-Trunk是一种捆绑技术,将多个物理接口捆绑成一个逻辑接口,我们称呼这个逻辑接口为Eth-Trunk接口。
3.对于Eth-Trunk接口,只有以太网接口才可以加入。
Eth-trunk概念
Eth-trunk概念
Eth-Trunk是一种将多个以太网接口捆绑成一个逻辑接口的捆绑技术。
Eth-Trunk链路聚合模式:
(1)手工负载分担模式;(静态的链路聚合)
(2)静态LACP模式。(动态的链路聚合)
(1)根据不同的链路聚合模式,Eth-Trunk接口可以实现增加带宽、负载分担等,帮助提高网络的可靠性。
(2)Eth-Trunk可以用于二层的链路聚合,也可以用于三层的链路聚合。缺省情况下,以太网接口工作在二层模式。如果需要配置二层Eth-Trunk接口,可以通过portswitch命令将该三层接口切换成二层接口;如果需要配置三层Eth-Trunk接口,可以通过undo portswitch命令将该接口切换成三层接口。
手工负载分担模式(eth-trunk默认的模式)
手工负载分担模式
(1)当两台设备中至少有一台不支持LACP协议时,可使用手工负载分担模式的Eth-Trunk来增加设备间的带宽及可靠性。
(2)在手工负载分担模式下,加入Eth-Trunk的链路都进行数据的转发。
静态LACP模式
静态LACP模式
成员接口间M:N备份:
(1)如图所示,两台设备间有M+N(2+1)条链路,在聚合链路上转发流量时在M(2)条链路上负载分担,不在另外的N(1)条链路转发流量。此时链路的实际带宽为M(2)条链路的总和,但是能提供的最大带宽为M+N(2+1)条链路的总和;
(2)当M(2)条链路中有一条链路故障时,LACP会从N(1)条备份链路中找出一条优先级高的可用链路替换故障链路。此时链路的实际带宽还是M(2)条链路的总和,但是能提供的最大带宽就变为M+N-1(2+1-1)条链路的总和。
Eth-trunk smart-link
静态LACP模式活动链路的选取
静态LACP模式活动链路的选取
1.如图所示,设备之间相连的链路数为3条,设置的最大活跃链路数为2,即2条链路处于转发状态,1条链路处于备份状态。
2.在静态LACP模式的Eth-Trunk中加入成员接口后,这些接口将向对端通告自己的系统优先级、mac地址、接口优先级、接口号等信息。对端接收到这些信息后,将这些信息与自身接口所保存的信息比较以选择能够聚合的接口,双方对哪些接口能够成为活动接口达成一致,确定活动链路。
(1)在两端设备中选择系统LACP优先级较高的一端作为主动端,如果系统LACP优先级相同则选择MAC地址较小的一端作为主动端。
(1.1)系统LACP优先级的值越小,则优先级越高,缺省情况下,系统LACP优先级的值为32768。
(2)接口LACP优先级的值越小,则优先级越高。如果接口LACP优先级相同,接口ID(接口号)小的接口被优先选为活动接口。
接口LACP优先级是为了区别同一个Eth-Trunk中的不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。
lacp priority命令用来设置系统LACP优先级或接口LACP优先级。
undo lacp priority命令用来恢复系统LACP优先级或接口LACP优先级为缺省值。
缺省情况下,系统LACP优先级和接口LACP优先级的值都是32768。
静态lacp模式的抢占机制(默认是没有开启抢占功能的)
静态LACP模式的抢占机制
1.LACP抢占延时设置:
(1)LACP抢占发生时,处于备用状态的链路将会等待一段时间后再切换到转发状态,这就是抢占延时。配置抢占延时是为了避免由于某些链路状态频繁变化而导致Eth-Trunk数据传输不稳定的情况。
(2)如图所示,Port1由于链路故障切换为非活动接口,此后该链路又恢复了正常。若系统使能了LACP抢占并配置了抢占延时,Port1重新切换回活动状态就需要经过抢占延时的时间。
如果我们开启抢占功能后,系统为防止某些链路状态频繁变化而导致网络的动荡从而使使用链路聚合传输的数据不稳定这种情况,系统会自动产生一个30s抢占延时
2.开启抢占功能的场景:
(1)Port1接口出现故障而后又恢复正常。当接口Port1出现故障时被Port3所取代,如果在Eth-Trunk接口下未使能抢占,则故障恢复时Port1将处于备份状态;如果使能了LACP抢占,当Port1故障恢复时,由于接口优先级比Port3高,将重新成为活动接口,Port3再次成为备份接口。
(2)如果希望Port3接口替换Port1、Port2中的一个接口成为活动接口,可以将Port3的接口LACP优先级调高,但前提条件是已经使能了LACP抢占功能。如果没有使能LACP抢占功能,即使将备份接口的优先级调整为高于当前活动接口的优先级,系统也不会进行重新选择活动接口的过程,也不切换活动接口。
Eth-trunk接口负载分担
Eth-trunk接口负载分担
Eth-Trunk接口进行负载分担时,可以选择IP地址或者包作为负载分担的散列依据;同时还可以设置成员接口的负载分担权重。
修改逐流负载分担的方式
(1)dst-ip(目的IP地址)模式:从目的IP地址、出接口的TCP/UDP端口号中分别选择指定位的3bit数值进行HASH运算,根据运算结果选择Eth-Trunk表中对应的出接口。
(2)dst-mac(目的MAC地址)模式:从目的MAC地址、VLAN ID、以太网类型及入接口信息中分别选择指定位的3bit数值进行HASH运算,根据运算结果选择Eth-Trunk表中对应的出接口。
(3)src-ip(源IP地址)模式:从源IP地址、入接口的TCP/UDP端口号中分别选择指定位的3bit数值进行HASH运算,根据运算结果选择Eth-Trunk表中对应的出接口。
(4)src-mac(源MAC地址)模式:从源MAC地址、VLAN ID、以太网类型及入接口信息中分别选择指定位的3bit数值进行HASH运算,根据运算结果选择Eth-Trunk表中对应的出接口。
(5)src-dst-ip(源IP地址与目的IP地址的hash)模式:从目的IP地址、源IP地址两种负载分担模式的运算结果进行HASH运算,根据运算结果选择Eth-Trunk表中对应的出接口。
(6)src-dst-mac(源MAC地址与目的MAC地址的hash)模式:从目的mac地址、源MAC地址两种负载分担模式的运算结果进行HASH运算,根据运算结果选择Eth-Trunk表中对应的出接口。
Eth-Trunk接口中,某成员接口的权重值占所有成员接口负载分担权重之和的比例越大,该成员接口承担的负载就越大。(即成员接口的权重值/所有成员接口负载分担权重之和=比例(值越大则表明该成员接口承担的负载就越大))distribute-weight命令用来配置成员端口的负载分担权重值。缺省情况下,成员端口的负载分担权重为1。
将成员接口加入eth-trunk时,需要注意以下问题:
1.每个Eth-Trunk接口下最多可以包含8个成员接口。
2.成员接口不能配置任何业务和静态MAC地址。(即必须是空配置)
3.成员接口加入Eth-Trunk时,必须为缺省的hybrid类型接口。
4.Eth-Trunk接口不能嵌套,即成员接口不能是Eth-Trunk。
5.一个以太网接口只能加入到一个Eth-Trunk接口,如果需要加入其它Eth-Trunk接口,必须先退出原来的Eth-Trunk接口。
6.一个Eth-Trunk接口中的成员接口必须是同一类型,例如:FE口和GE口不能加入同一个Eth-Trunk接口。(FE属于思科口)
7.可以将不同接口板卡上的以太网接口加入到同一个Eth-Trunk。
8.如果本地设备使用了Eth-Trunk,与成员接口直连的对端接口也必须捆绑为Eth-Trunk接口,两端才能正常通信。(eth-trunk端口号可以不一样)
9.当成员接口的速率不一致时,实际使用中速率小的接口可能会出现拥塞,导致丢包。
10.当成员接口加入Eth-Trunk后,学习MAC地址时是按照Eth-Trunk整体来学习的,而不是按照成员接口来学习
eth-trunk支持任意类型的以太类型(access、trunk、hybird等)
[SW1-Eth-Trunk8]port link-type ?
access Access port
hybrid Hybrid port
trunk Trunk port
Smart-link(灵活链路或备份链路,华为私有协议)
1.smart-link定义:
Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。Smart Link常用于双上行组网,提供可靠高效的备份和快速的切换机制。
2.smart-link目的:
下游设备连接到上游设备,当使用单上行方式时,若出现单点故障,会造成业务中断。若采用双上行方式,将一台下游设备同时连接到两台上游设备,可降低单点故障对网络的影响,提高了可靠性。
如图1所示SwitchA采用双上行方式分别连接到SwitchB和SwitchC,这样SwitchA到达SwitchD的链路就可以有两条(SwitchA->SwitchB->SwitchD和SwitchA->SwitchC->SwitchD),但是网络中的环路会产生网络风暴。在SwichA上配置Smart Link,正常情况下,可实现Interface2所在链路作为Interface1所在链路的备份。若Interface1所在的链路发生故障,Smart Link会自动将数据流量切换到Interface2所在链路,保证业务不中断。
在此类组网中采用Smart Link技术有以下优点:
1)能够实现在双上行组网的两条链路正常情况下,一条链路处于转发状态,而另一条处于阻塞待命状态,从而可避免环路的不利影响。
2)配置和使用更为简洁,便于用户操作。
3)当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,极大限度地保证了数据的正常转发。
smart-link基本概念
Smart Link通过两个端口相互配合工作来实现功能。这样的一对端口组成了一个Smart Link组。为了区别一个Smart Link组中的两个端口,我们将其中的一个叫做主端口,另一个叫做从端口。同时我们利用Flush报文、Smart Link实例和控制VLAN等机制,以更好地实现Smart Link的功能(包括负载分担)。
Smart Link组
Smart Link组,一个组内最多可包含两个接口,其中一个为主接口,另一个为从接口。正常情况下,只有一个接口处于转发(Active)状态,另一个接口被阻塞,处于待命(Inactive)状态。
如图smart-link图中的smart-link示意图所示,设备SwitchD上的接口Interface1和接口Interface2组成了一个Smart Link组。
主接口/从接口
查看Smart link图中的“smart-link示意图”
如图smart-link示意图所示,Interface1被配置为Smart Link组的主接口,Interface2被配置为Smart Link组的从接口。主接口又叫Master接口,从接口又叫Slave接口。
当Smart Link组中的两个接口都处于Up状态时,主接口将优先进入转发状态,而从接口将保持待命状态。当主接口所在链路发生故障时,从接口将切换为转发状态。
Flush报文
当Smart Link组发生链路切换时,原有的转发表项将不适用于新的拓扑网络,需要整网进行MAC表项和ARP表项的更新。这时,Smart Link组通过发送Flush报文通知其他设备进行MAC和ARP表项的刷新操作。如图smart-link示意图所示,当链路发生切换时,SwitchD会发送组播Flush报文通知SwitchA、SwitchB和SwitchC进行MAC和ARP表项的更新。
控制VLAN(Control VLAN)
1.发送控制VLAN(Smart Link组用于组播Flush报文的VLAN)
如果在SwitchD上开启了Flush报文发送功能,当发生链路切换时,设备会在发送控制VLAN内组播发送Flush报文。
2.接收控制VLAN(上游设备用于接收并处理Flush报文的VLAN)
如果上游设备SwitchA、SwitchB和SwitchC能够识别Flush报文,并开启了Flush报文接收处理功能,当发生链路切换时,上游设备会处理收到的属于接收控制VLAN的Flush报文,进而刷新MAC表和ARP表。(当上游设备收到Flush报文时,判断该Flush报文的发送控制VLAN是否在收到报文的接口配置的接收控制VLAN列表中,上游设备才会接受并刷新自己的MAC表和ARP表)
Smart Link实例
Smart Link组的备链路通过绑定不同的实例来实现负载分担。Smart Link引用MSTP的实例,每个实例用来绑定若干VLAN,不同的实例绑定不同的VLAN。
Smart-link基本原理
以Smart-link示意图描述的组网为例,按照链路正常->链路故障->链路恢复的过程,介绍Smart Link运行的基本原理。
链路正常工作原理
SwitchD上的Smart Link组包含了Interface1和Interface2两个接口,其中Interface1为主接口,Interface2为从接口。双上行链路都正常的情况下,主接口处于转发状态,所在的链路是主用链路,从接口处于待命状态,所在链路是备用链路。如图链路正常工作时流量示意图所示,数据沿着主链路进行传输,网络中不存在环路,避免产生广播风暴。(因为insterface2口是备用链路所以不转发流量)
链路故障处理原理
主链路故障时上行流量的处理
如图主链路故障时上行流量示意图所示,当SwitchD的主链路发生故障时,主接口Interface1切换到待命状态,从接口Interface2切换到转发状态。此时,网络中相关设备上的MAC地址转发表项和ARP表项不再正确了,需要提供一种MAC及ARP更新的机制。目前更新机制有以下两种。
1.通过Flush报文通知设备更新表项(其适用于都具有smart-link功能的设备之间)这种方式适用于上游设备(如图主链路故障时上行流量示意图中的SwitchA、SwitchB和SwitchC)支持Smart Link功能的场景。为了实现快速链路切换,需要在SwitchD上开启Flush报文发送功能,在上游设备所有处于双上行链路上的接口开启接收处理
Flush报文的功能。
(1)SwitchD进行链路切换后,会从新的主用链路上发送Flush报文,即通过Interface2发送。
(2)当上游设备收到Flush报文时,判断该Flush报文的发送控制VLAN是否在收到报文的接口配置的接收控制VLAN列表中。如果不在接收控制VLAN列表中,设备对该Flush报文不做处理,直接转发;如果在接收控制VLAN列表中,设备会处理收到Flush报文,进而执行MAC地址转发表项和ARP表项的刷新操作。此后,如果SwitchA收到目的设备为SwitchD的数据报文,会根据更新后的MAC地址转发表项或ARP表项进行转发。
(smart-link可以提供可靠高效的备份和快速的切换机制,两条上行链路,一条处于转发状态,一条处于阻塞状态,就会有备份链路的出现。当转发链路出现了故障了,可以在毫秒级的时间内切换到备份链路上面。当链路恢复不进行抢占,需要手动切换,保持网络的稳定性)
2.自动通过流量更新表项(其适用于与不支持smart-link功能的设备之间)
这种方式适用于与不支持Smart Link功能的设备(包括其他厂商设备)对接的情况,需要有上行流量触发。(其就依靠STP正常的工作原理进行流量切换,其收敛时间很慢)
主链路故障时下行流量的处理(SWA SWB SWC设备不支持smart-link功能)
如图所示,如果没有来自SwitchD的上行流量(TC bpdu)去触发SwitchA的MAC及ARP表项更新,那么当SwitchA收到目的设备为SwitchD的数据报文时,SwitchA仍会通过接口Interface3转发出去,但此时报文已经不能到达SwitchD,会造成流量丢失,直到其MAC或ARP表项自动老化。(MAC表老化时间为300s,ARP表老化时间为1200s)
如图主链路故障时下行流量示意图2所示,由于链路故障后,Interface1学习到的MAC及ARP表项会被删除,如果SwitchD有上行流量(tc置位的BPDU)要发送,需要重新广播ARP报文后,流量才能被发送出去。当上行流量通过接口Interface4到达设备SwitchA后,SwitchA会更新自己的MAC及ARP表项,那么当SwitchA再收到目的设备为SwitchD的数据报文时,SwitchA会通过接口Interface4转发出去,报文就可以经由SwitchC到达SwitchD。
由此得出结论:
通过Flush报文通知设备更新的机制无须等到表项老化后再进行更新,可以极大程度地减少表项更新所需时间。通常,链路的切换过程可在毫秒级的时间内完成,最大限度地减少流量的丢失。
链路恢复处理原理
当原主用链路故障恢复时,Interface1将维持在阻塞状态,不进行抢占,从而保持流量稳定。如果希望流量切换到原主用链路,可以通过如下两种机制进行切换。
(1)使用Smart Link组回切功能,需要在SwitchD上使能回切功能。当原主用链路故障恢复后,经过回切定时器设定的时间,Smart Link会自动将流量切换到原主用链路上。
(2)使用配置命令强制让Smart Link立即将流量切换到原主用链路上。
如图示例,当SwitchD的Interface1的链路恢复后,如果配置了Smart Link组回切功能,在回切定时器超时后,Interface2将被阻塞并切换到待命状态,而Interface1将切换到转发状态。而如果使用配置命令强制让Smart Link进行链路切换,在执行命令后,Interface2将被立即阻塞并切换到待命状态,而Interface1会切换到转发状态。
负载分担
在同一个组网中,同一时刻双上行链路中只有一条处于转发状态,另一条链路不承载流量,即链路利用率只有50%。Smart Link支持负载分担实例,备份链路分担指定的负载分担实例内VLAN的流量,即允许指定实例对应的VLAN数据通过备份链路进行转发(主链路此时不会对这些VLAN数据进行转发),从而使主链路和备份链路承载不同VLAN数据流量的转发,达到负载分担的目的。
如图所示,在未配置负载分担的情况下,所有报文都通过SwitchD的Interface1接口沿转发(Active)链路进行传输。为了提高链路利用率,通过配置Smart Link负载分担,让部分VLAN的数据通过SwitchD的Interface2接口进行传输。将VLAN 300~VLAN 400配置为Smart Link负载分担实例,让VLAN 300~VLAN 400的数据通过SwitchD的Interface2接口进行传输。而未配置为负载分担实例的VLAN 100~VLAN 200的报文还是通过主用链路转发,从而实现在Smart Link组中对实例中映射的VLAN数据流量进行负载分担。