Eth-Trunk技术原理与配置
随着网络当中,部署的业务量不断地增长,我们会发现设备原先的链路带宽可能会满足我们的需求,但是随着时间的推移,业务量的增加,原本的链路带宽已经不能满足我们的需求了,如果将当前接口板替换为具备更高带宽的接口板,则会浪费现有的设备资源,而且升级代价较大。如果增加设备间的链路数量,则在作为三层口使用时需要在每个接口上配置IP地址,从而导致浪费IP地址资源。如果是二层接口的话,会通过生成树协议,导致增加的接口处于空闲的状态
Eth-Trunk( 链路聚合技术 )作为一种捆绑技术,可以把多个独立的物理接口绑定在一起作为一个大带宽的逻辑接口使用,这样既不用替换接口板也不会浪费IP地址资源。本次博客会来介绍Eth-Trunk技术。
组网中经常会遇到的问题
对于汇聚层和核心层来说,他们会接收来自接入层的大量的终端的用户流量数据,然后通过链路把数据转到目的地址去,所以对于这些层次的链路来说,它转发的流量是非常大的,那我们怎么来增加接口的带宽,包括避免接口的单点故障的问题,如果将当前接口板替换为具备更高带宽的接口板,则会浪费现有的设备资源,而且升级代价较大。如果增加设备间的链路数量,则在作为三层口使用时需要在每个接口上配置IP地址,从而导致浪费IP地址资源;如果是二层链路的话,增加链路有可能会形成环路;单条链路的组网中没有冗余的设计,如果接入层设备上联的链路故障时,影响接入设备下联的整个区域的设备正常通信。
此时,可以把多个独立的物理接口绑定在一起作为一个大带宽的逻辑接口使用,即链路聚合技术,既不用替换接口板也不会浪费IP地址资源。Eth-Trunk是一种捆绑技术,将多个物理接口捆绑成一个逻辑接口,这个逻辑接口就称为Eth-Trunk接口。对于Eth-Trunk接口,只有以太网接口才可以加入。
Eth-Trunk概念
Eth-Trunk是一种将多个以太网接口捆绑成一个逻辑接口的捆绑技术。
如下图所示,RTA和RTB之间的3条物理接口,通过链路聚合捆绑成了一条逻辑上的链路eth-trunk,形成一个大带宽的链路来进行使用,对于用户层面来说,这个逻辑接口是只有一个接口来体现的。在没有做链路聚合之前,对于三层接口来说,RTA上的三条链路对应的三个接口都需要配置ip地址,两台设备,所需要的ip地址就是6个,做了链路聚合之后,只需要给聚合后的一个接口配置ip地址即可,大大减少了ip地址的使用;如果这两台设备是二层设备的话,在没有做链路聚合之前,通过生成树,设备上的三个接口至少要阻塞两个端口,才能不会产生环路,那么做了链路聚合之后,就是一个逻辑上的接口,生成树协议不会去阻塞端口,这样就可以实现大带宽的使用,还不会造成环路。
数据在转发的时候,还是在物理链路上去进行传输的,在三条物理链路上进行负载分担,如果其中的一条链路坏了,也不影响数据的传输,提高了链路的可靠性。
Eth-Trunk链路聚合模式:手工负载分担模式;LACP模式。
手工负载分担模式
当两台设备中至少有一台不支持LACP协议时,可使用手工负载分担模式的Eth-Trunk来增加设备间的带宽及可靠性。
在手工负载分担模式下,加入Eth-Trunk的链路都进行数据的转发。
需要注意的是,在进行链路聚合的时候,这个链路的接口只能是以太网口,不能是串行链路的串口。
以上是第一种模式:手工负载分担
接着来看一下LACP模式
LACP模式
在LACP模式,设备和设备之间会交互LACP报文,来协商一些东西。
LACP模式也称为M:N模式,其中M条链路处于活动状态转发数据,N条链路处于非活动状态作为备份链路。
图中设置的活跃链路数为2,即2条链路处于转发状态,1条链路处于备份状态,不转发数据,只有当活跃的链路出现故障时,备份链路才进行转发。
假如现在链路上有三条物理链路,现在想让两条链路处于转发状态,一条链路处于备份状态,那么对于两条处于转发状态的链路是怎么被选出来的呢? 这里面就涉及到了选举的过程。
LACP模式活动链路的选取
如图所示,设备之间相连的链路数为3条,设置的最大活跃链路数为2,即2条链路处于转发状态,1条链路处于备份状态。在LACP模式的Eth-Trunk中加入成员接口后,这些接口将向对端通告自己的系统优先级、MAC地址、接口优先级、接口号等信息。对端接收到这些信息后,将这些信息与自身接口所保存的信息比较以选择能够聚合的接口,双方对哪些接口能够成为活动接口达成一致,确定活动链路。
在两端设备中选择系统LACP优先级较高的一端作为主动端,如果系统LACP优先级相同则选择MAC地址较小的一端作为主动端。系统LACP优先级的值越小,则优先级越高,缺省情况下,系统LACP优先级的值为32768。
接口LACP优先级的值越小,则优先级越高。如果接口LACP优先级相同,接口ID(接口号)小的接口被优先选为活动接口。接口LACP优先级是为了区别同一个Eth-Trunk中的不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。
LACP模式的抢占机制
当活动链路出现故障的时候,备份链路会顶替活动链路进行工作,当故障的活动链路恢复了正常之后,如果开启了抢占机制,原来的活动链路会抢占备份链路的身份成为活动链路,而原来的备份链路继续充当备份的角色,这个就是抢占机制。
LACP抢占延时设置:
LACP抢占发生时,处于备用状态的链路将会等待一段时间后再切换到转发状态,这就是抢占延时。配置抢占延时是为了避免由于某些链路状态频繁变化而导致Eth-Trunk数据传输不稳定的情况。如图所示,Port1由于链路故障切换为非活动接口,此后该链路又恢复了正常。若系统使能了LACP抢占并配置了抢占延时,Port1重新切换回活动状态就需要经过抢占延时的时间。
如果延时的时间是0的话,说是立马抢占,也就是说故障的高优先级的活动链路在被修复之后,不会等待一段时间,会立刻马上进行抢占,把目前的活动链路的身份抢过来,让自己成为活动链路。
开启抢占功能的场景:
Port1接口出现故障而后又恢复正常。当接口Port1出现故障时被Port3所取代,如果在Eth-Trunk接口下未使能抢占,则故障恢复时Port1将处于备份状态;如果使能了LACP抢占,当Port1故障恢复时,由于接口优先级比Port3高,将重新成为活动接口,Port3再次成为备份接口。 如果希望Port3接口替换Port1、Port2中的一个接口成为活动接口,可以将Port3的接口LACP优先级调高,但前提条件是已经使能了LACP抢占功能。如果没有使能LACP抢占功能,即使将备份接口的优先级调整为高于当前活动接口的优先级,系统也不会进行重新选择活动接口的过程,也不切换活动接口。
Eth-Trunk接口负载分担
Eth-Trunk接口进行负载分担时,可以选择IP地址或者包作为负载分担的散列依据;同时还可以设置成员接口的负载分担权重。Eth-Trunk接口中,某成员接口的权重值占所有成员接口负载分担权重之和的比例越大,该成员接口承担的负载就越大。
Eth-Trunk接口的负载分担分为两种,如下图所示:
接口负载分担 | 特点 |
逐流负载分担 | 当报文的源IP地址、目的IP地址都相同或者报文的源MAC地址、目的MAC地址都相同时,这些报文从同一条成员链路上通过。 |
逐包负载分担 | 以报文为单位分别从不同的成员链路上发送。 |
假如现在要给张三发送一个文件,可能这个文件会被分成100个包发送过去,如果是逐流负载分担的话,如果这100个包书是属于同一个数据流的话,那么这一百个包全部走一个链路,怎么判断是不是属于同一个数据流,当报文的源IP地址、目的IP地址都相同或者报文的源MAC地址、目的MAC地址都相同时,这些报文从同一条成员链路上通过,即使这个数据流里有100个包,如果属于同一个数据流的;逐流负载分担的优点:保证报文是顺序发送出去,然后按顺序到达的;缺点:带宽的利用率是不能保证的。因为现在这一百个包全都走了同一个链路,那么剩下的一个链路就被闲置了。
逐包负载分担是以包为单位的,一个数据流可能有100个包,这一百个包各走各的,在所有的链路上都会走,优点就是实现负载分担,保证带宽的利用率,缺点是保证不了报文的顺序。有可能1、3、5的数据包走第一根链路,早就到了,2、4、6的数据包走第二根链路,但是第二根链路有一定的延迟,所以对于逐包负载分担有可能会乱序。可以通过命令行去选择是用逐流负载分担还是逐包负载分担。
Eth-Trunk接口配置流程
如下图所示是配置eth-trunk接口的流程,不管是哪种模式都需要配置的,首先创建eth-trunk,然后选择链路聚合模式是手工负载分担还是LACP模式,如果是手工负载分担就不用配置,缺省就是手工负载分担模式,然后将物理接口加入到eth-trunk这个逻辑接口里面。
将成员接口加入Eth-Trunk时,需要注意以下问题:
成员接口不能有IP地址等三层配置项,也不可以配置任何业务;
成员接口不能配置静态MAC地址;
Eth-Trunk接口不能嵌套,即成员接口不能是Eth-Trunk;
一个以太网接口只能加入到一个Eth-Trunk接口,如果需要加入其他Eth-Trunk接口,必须先退出原来的Eth-Trunk接口;
如果本地设备使用了Eth-Trunk,与成员接口直连的对端接口也必须捆绑为Eth-Trunk接口,两端才能正常通信;
Eth-Trunk有两种工作模式:二层工作模式和三层工作模式。Eth-Trunk的工作模式不影响成员链路的加入,例如,以太网接口既可以加入二层模式的Eth-Trunk,也可以加入三层模式的Eth-Trunk。
配置手工负载分担模式
如下图所示,把RTA和RTB之间的3条物理链路加入到eth-trunk接口里面,
配置手工负载分担模式的步骤:
创建Eth-Trunk;
配置Eth-Trunk的工作模式;
Eth-Trunk中加入成员接口。
创建手工负载分担模式Eth-Trunk:
1.执行命令system-view,进入系统视图。
2.执行命令interface Eth-Trunk trunk-id,创建Eth-Trunk接口并进入Eth-Trunk接口视图。
3.(可选)执行命令portswitch,将Eth-Trunk接口切换为二层模式。
配置Eth-Trunk的工作模式:
1.执行命令mode manual load-balance,配置当前Eth-Trunk工作模式为手工负载分担模式。
缺省情况下,Eth-Trunk的工作模式为手工负载分担模式。
2.Eth-Trunk中加入成员接口:
在Eth-Trunk接口视图下:
执行interface eth-trunk trunk-id命令,进入Eth-Trunk接口视图。
执行以下任一个步骤,添加 Eth-Trunk成员接口。
执行 trunkport interface-type { interface-number1 [ to interface-number2 ] } &<1-16>命令,批量增加成员接口。
执行 trunkport interface-type interface-number命令,增加一个成员接口。
在成员接口视图下:
执行 interface { ethernet | gigabitethernet } interface-number命令,进入要捆绑到此Eth-Trunk的成员接口的接口视图。
执行 eth-trunk trunk-id命令,将当前接口加入Eth-Trunk。
配置LACP模式
在配置LACP模式的时候,中间是有LACP的协商的,所以在这个模式里面是有一些 可选参数来进行配置的。
配置 LACP模式 的步骤: 创建Eth-Trunk; 配置Eth-Trunk的工作模式; Eth-Trunk中加入成员接口; (可选)配置系统LACP优先级; (可选)配置活动接口数上限阈值; (可选)配置接口LACP优先级; (可选)使能LACP抢占并配置抢占延时时间。
对于可选参数,如果没有配置的话,都会有默认的。
创建 LACP 模式 Eth-Trunk : 执行 system-view 命令,进入系统视图。 执行 interface eth-trunk trunk-id 命令,创建 Eth-Trunk 。 (可选)执行命令 portswitch ,将 Eth-Trunk 接口切换为二层模式。 配置 Eth-Trunk 的工作模式: 执行命令 interface eth-trunk trunk-id ,进入 Eth-Trunk 接口视图。 执行命令 mode lacp-static,配置Eth-Trunk的工作模式为LACP模式。 Eth-Trunk 中加入成员接口: 在 Eth-Trunk 接口视图下: 执行 interface eth-trunk trunk-id 命令,进入 Eth-Trunk 接口视图。 执行以下任一个步骤,添加 Eth-Trunk 成员接口。 执行 trunkport interface-type { interface-number1 [ to interface-number2 ] } &<1-16> 命令,批量增加成员接口。
在成员接口视图下:
执行interface { ethernet | gigabitethernet } interface-number命令,进入要捆绑到此Eth-Trunk的成员接口的接口视图。
执行eth-trunk trunk-id命令,将当前接口加入Eth-Trunk。
(可选)配置系统LACP优先级:执行命令lacp priority priority,配置当前路由器的系统LACP优先级。
(可选)配置活动接口数上限阈值:执行命令interface eth-trunk trunk-id,进入Eth-Trunk接口视图。
执行命令max active-linknumber link-number,配置活动接口数上限阈值。
(可选)配置接口LACP优先级:
执行命令interface interface-type interface-number,进入接口视图。
执行命令lacp priority priority,配置当前接口的LACP优先级。
(可选)使能LACP抢占并配置抢占等待时间:
执行命令interface eth-trunk trunk-id,进入Eth-Trunk接口视图。
执行命令lacp preempt enable,使能当前Eth-Trunk接口的LACP抢占功能。
执行命令lacp preempt delay delay-time,配置当前Eth-Trunk接口的LACP抢占等待时间。
执行trunkport interface-type interface-number命令,增加一个成员接口。
Eth-trunk配置需求
如下图所示是一个园区的组网拓扑,为了提高网络的可靠性,需要在各层设备之间采用链路聚合技术。其中核心层的设备需要配置IP地址,作为内网的网关;汇聚层与接入层的设备通过二层实现通信。
以核心层R1路由器为例说明配置;
1.创建Eth-Trunk接口并配置地址:
将物理接口添加入Eth-Trunk中:
以汇聚层LSW1交换机为例说明配置,创建Eth-Trunk接口,因为汇聚层设备使用二层互联,所以无需配置地址,将物理接口添加入Eth-Trunk中 。
如下图所示:
以汇聚层LSW3交换机为例说明配置,创建Eth-Trunk接口,因为汇聚层设备使用二层互联,所以无需配置地址,将物理接口添加入Eth-Trunk中 。
以核心层R2为例,配置LACP模式的链路聚合
如下图所示,修改模式为LACP,先配置模式再加入接口
接着R2和LSW2上的链路上使用抓包工具抓包,可以看到关于LACP的报文
接着我们在R2上去修改它的lacp系统优先级,修改为4096,如下图所示
查询结果
把抢占功能打开
和R2使用共同链路的LSW2也需要把抢占功能打开
结果验证,在链路上抓包,看到了优先级不再是之前的32768,而是已经修改过的4096
还可以修改接口的lacp优先级,如下图所示
结果验证
over!!!!