前言算法
在现网中,设备间若是经过一条链路链接,若是这条链路故障了,那么设备两端的终端就不可以通讯了。有什么办法能够解决该问题呢?答案是——链路聚合。网络
本示例中,两台交换机LSW1和LSW2之间经过一条链路互相链接,若是链路故障,那么PC1和PC2则不可以通讯,经过部署链路聚合,能够确保LSW1和LSW2之间的链路故障了一条,能够走另一条链路。负载均衡
假设LSW1和LSW2之间的流量很大,超过了接口的带宽1G,经过部署链路聚合,能够确保SWA和SWB之间的链路不会产生拥塞。ide
正文code
1 什么是链路聚合?blog
从端口的角度定义:接口
链路聚合(Link Aggregation)是指将多个物理端口汇聚在一块儿,造成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担,交换机根据用户配置的端口负载分担方式决定数据包从哪一个成员端口发送到对端的交换机。路由
从链路的角度定义:部署
链路聚合(Link Aggregation)是把两台设备之间的多条物理链路聚合在一块儿,当作一条逻辑链路来使用。这两台设备能够是一对路由器,一对交换机,或者是一台路由器和一台交换机。一条聚合链路能够包含多条成员链路,默认最多为8条。it
2 链路聚合的做用:
链路聚合可以提升链路带宽。理论上,经过聚合几条链路,一个聚合口的带宽能够扩展为全部成员口带宽的总和,这样就有效地增长了逻辑链路的带宽。
链路聚合为网络提供了高可靠性。配置了链路聚合以后,若是一个成员接口发生故障,该成员口的物理链路会把流量切换到另外一条成员链路上。
3 几个概念:
把聚合后获得的逻辑链路称为聚合链路,把聚合链路中的每一条物理链路称为成员链路。
把聚合后获得的逻辑端口称为聚合端口,把聚合端口中的每个物理端口称为成员端口。
聚合链路也被称为Eth-Trunk链路,聚合端口也被称为Eth-Trunk端口。
4 链路聚合工做模式
链路聚合包含两种模式:手动负载均衡模式和静态LACP(Link Aggregation Control Protocol)模式。
手工负载分担模式:
手工负载分担模式下,Eth-Trunk的创建、成员接口的加入由手工配置,没有链路聚合控制协议的参与。
使用场景:
当须要在两个直连设备间提供一个较大的链路带宽而设备又不支持LACP协议时,可使用手工负载分担模式。
静态LACP模式:
在静态LACP模式中,链路两端的设备相互发送LACP报文,协商聚合参数。协商完成后,两台设备肯定活动接口和非活动接口。
在静态LACP模式中,须要手动建立一个Eth-Trunk口,并添加成员口。
静态LACP模式也叫M:N模式。M表明活动成员链路,用于在负载均衡模式中转发数据。N表明非活动链路,用于冗余备份。
两种链路聚合模式的主要区别:
在静态LACP模式中,一些链路充当备份链路。
5 链路聚合的条件:
在一个聚合口中,聚合链路两端的物理口(即成员口)的全部参数必须一致,包括物理口的数量,传输速率,双工模式和流量控制模式。成员口能够是二层接口或三层接口。
6 负载分担的方式:
链路聚合带来数据包乱序问题
数据流在聚合链路上传输,数据顺序必须保持不变。一个数据流能够看作是一组MAC地址和IP地址相同的帧。
两台设备间的SSH或SFTP链接能够看作一个数据流。
若是未配置链路聚合,只是用一条物理链路来传输数据,那么一个数据流中的帧老是能按正确的顺序到达目的地。
如何解决数据包乱序
为了不数据包乱序的问题,Eth-Trunk采用逐流负载分担的机制。
这种机制把数据帧中的地址经过HASH算法生成HASH-KEY值,而后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不一样的MAC或IP地址HASH得出的HASH-KEY值不一样,从而出接口也就不一样。
这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担,即逐流的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。
负载分担的类型
*根据报文的目的MAC地址进行负载分担;
*根据报文的源IP地址进行负载分担;
*根据报文的目的IP地址进行负载分担;
*根据报文的源MAC地址和目的MAC地址进行负载分担;
*根据报文的源IP地址和目的IP地址进行负载分担;
*根据报文的VLAN、源物理端口等对L二、IPv四、IPv6和MPLS报文进行加强型负载分担。
7 链路聚合的配置案例:
如上图所示,在两台交换机之间配置手劢模式的链路聚合 :
[LSW1]interface Eth-Trunk 1 [LSW1-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1]eth-trunk 1 [LSW1-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2]eth-trunk 1 [LSW2]interface Eth-Trunk 1 [LSW2-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW2-GigabitEthernet0/0/1]eth-trunk 1 [LSW2-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW2-GigabitEthernet0/0/2]eth-trunk 1
经过执行interface Eth-trunk <trunk-id>命令配置链路聚合。这条命令建立了一个Eth-Trunk口,而且进入该Eth-Trunk口视图。
检查链路聚合是否成功:
执行display interface eth-trunk <trunk-id>命令,能够确认两台设备间是否已经成功实现链路聚合。也可使用这条命令收集流量统计数据,定位接口故障。
若是Eth-Trunk口处于UP状态,代表接口正常运行。
若是接口处于Down状态,代表全部成员口物理层发生故障。
如上图所示,在两台交换机之间配置静态LACP模式的链路聚合 :
[LSW1]interface Eth-Trunk 1 [LSW1-Eth-Trunk1] mode lacp-static [LSW1-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1]eth-trunk 1 [LSW1-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2]eth-trunk 1 [LSW2]interface Eth-Trunk 1 [LSW2-Eth-Trunk1] mode lacp-static [LSW2-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW2-GigabitEthernet0/0/1]eth-trunk 1 [LSW2-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW2-GigabitEthernet0/0/2]eth-trunk 1
检查链路聚合是否成功:
执行display interface eth-trunk 1命令,能够确认两台设备间是否已经成功实现链路聚合。端口处于select状态表示是激活端口。