华为以太网链路聚合Eth-Trunk实验

链路聚合Eth-Trunk

  • 什么是链路聚合?
    • 原理
    • 基本术语
    • 聚合模式
    • 负载分担的逐流转发和逐包转发
    • 负载分担的延伸
    • 链路聚合实验一、手工聚合
    • 链路聚合实验二、LACP-STATIC聚合
    • 链路聚合实验的疑问思考
    • 补充,三层Eth-Trunk配置
    • 补充,集群环境下的链路聚合

什么是链路聚合?

以太网链路聚合Eth-Trunk:简称链路聚合,通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时这些捆绑在一起的链路通过相互间的动态备份,可以有效提高链路可靠性。Eth-Trunk链路可以看成是一条点到点的直连链路,可以实现流量的负载分担。

为了提高链路的带宽、、安全、可靠性,通常是升级设备性能、通过STP来确保链路传输的可靠性,但是这种解决方案灵活度低,协议实现复杂,浪费链路资源,不能提供负载分担等功能,不太适用于技术的发展,于是繁衍出链路聚合技术。

——————————————————————————————————————————————————————————

原理

在这里首先声明一些基本的原理。

——————————————————————————————————————————————————————————

1、首先链路聚合Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。
华为以太网链路聚合Eth-Trunk实验_第1张图片

Eth-Trunk模块内部维护一张转发表,这张表由两部分组成:
1、HASH-KEY值:根据数据包的MAC地址或IP地址等,经HASH算法计算得出。
2、接口号:转发表表项分布和设备每个Eth-Trunk支持加入成员接口数量相关,不同HASH-KEY值对应不同的出接口。

华为以太网链路聚合Eth-Trunk实验_第2张图片
好比三个人,ABC;三个门,123。把A/B/C三个人通过HASH计算得出的值,分别通过绑定的三个门转发。

———————————————————————————————————————————————————————————

基本术语

———————————————————————————————————————————————————————————

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

就好比一个部门有5个人(成员接口),五个人的部门名称(聚合组名称)=技术部,其中要求最少两个人干活(接口的下线阈值),最多四个人干活(接口的上限阈值),干活的=活动接口,没有干活的=非活动接口。

———————————————————————————————————————————————————————————

聚合模式

———————————————————————————————————————————————————————————
手工模式

华为以太网链路聚合Eth-Trunk实验_第3张图片

DA与DB之间创建聚合,手工模式下三条活动链路都参与数据转发并分担流量,当一条链路故障时,故障链路无法转发数据,链路聚合组自动在剩余的两条链路活动中分担流量。常用的设备基本都支持手工模式聚合。

LACP模式(LACP-STATIC)

华为以太网链路聚合Eth-Trunk实验_第4张图片

为了提高容错性,并且提供备份功能,保证成员链路的可靠性,出现链路聚合LACP。聚合链路形成后,LACP负责维护链路状态,在聚合发生变化时,自动调整或解散链路。
启用LACP协议后,两端互相发送LACPDU报文。确定主动端和活动链路。

手工模式和LACP模式的主要区别:手工模式无法识别链路错连、差错检测,只要端口UP,就会转发数据,并不关心链路差错以及跨交换机错连线路。至于两者关于备份链路的区别,只有在配置了接口阈值才会体现。

活动接口及链路选举
前提:两端配置最大活跃接口数为2

1.通过lacp选举出优先级较高的交换机作为主动端
2.主动端比较接口优先级,选举出活动接口
3.主动端通过lacpdu将本端的活动接口选举结果告诉对方
4.被动端根据主动端的选举结果,明确本端的活动接口且数量一致,对应的链路就是活动链路

————————————————————————————————————————————————————————————

负载分担的逐流转发和逐包转发

————————————————————————————————————————————————————————————
逐包转发

使用Eth-Trunk转发数据时,聚合组两端有多条物理链路,将一整段数据切割成多个数据帧,在多个链路上传输,速度较快,但是有可能因为到达时间不同而导致乱序。这才是真正的负载分担,有效保证链路带宽率,但是会使数据发生乱序。

逐流转发
把数据帧中的地址通过HASH算法生成HASH-KEY值,然后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不同的地址算出不同的HASH-KEY值,从而出接口也不相同,这样保证了同一数据流的帧在同一条物理链路转发,也实现了不同流的负载分担,也保证了数据不会乱序,但是不能保证带宽的有效利用。

逐包转发就好比:想玩吃鸡,在淘宝组装一个台式电脑,分别多个店铺下单了,结果下单完成,等了1个礼拜,CPU/内存/主板/硬盘/电源/机箱/显示器都到货了,分别用了京东、顺丰,韵达、申通。唯独买的英伟达3080Ti显卡给发了个邮政快递,结果还要等4天才到。导致电脑组装不起来,吃鸡玩不了。难受啊!(用了多个快递公司=链路利用率高,邮政送的太慢了=数据会发生错乱)

逐流转发就好比:就好比,火车站进站,外面人排了一大堆刷身份证验票进站,马上要发车了,结果我来迟了,花了15块钱,从侧门走了个绿色通道,快速的进站了。在发车前,大家都坐上了心爱的绿皮火车。(排队刷身份证和花15块钱走绿色通道=对报文的地址进行了HASH计算,结果就是普通和VIP。排队的人几百个,绿色通道的人就那么几十个人=不能保证带宽的利用率。)

华为设备默认基于逐流转发。

————————————————————————————————————————————————————————————

负载分担的延伸

基于逐包的负载分担,对于数据会造成错乱现象,这个对于保证数据的可靠性几乎是致命的。

基于逐流的负载分担,对于链路利用率又充分。有时会出现某条线路负载过高,而其余链路比较空闲。

在这个问题上又出现了细分的基于流的负载分担

基于流的负载分担又分为以下几种,根据具体的应用场景选择不同的负载分担方式。
根据报文的源MAC地址进行负载分担 =SA
根据报文的目的MAC地址进行负载分担 =DA
根据报文的源IP地址进行负载分担=SIP
根据报文的目的IP地址进行负载分担=DIP
根据报文的源MAC地址和目的MAC地址进行负载分担=SA-XOR-DA
根据报文的源IP地址和目的IP地址进行负载分担=SIP-XOR-DIP
扩展:
根据报文的VLAN、源物理端口等对L2、IPv4、IPv6和MPLS报文进行增强型负载分担。
配置Eth-Trunk接口基于同源同宿的分流功能。

**例如:数据报文的目的MAC和IP地址只有一个,则应选择根据报文的源MAC和IP地址进行负载分担,如果选择根据报文的目的MAC和IP地址进行负载分担则会造成流量只在一条链路上传输,造成流量拥堵。

————————————————————————————————————————————————————————————

链路聚合实验一、手工聚合

使用默认的简单配置。
华为以太网链路聚合Eth-Trunk实验_第5张图片

LSW1配置:
sys
[Huawei]int Eth-Trunk 1 //创建聚合端口
[Huawei-Eth-Trunk1] Mode manual load-balance //配置聚合模式为手工
[Huawei-Eth-Trunk1] Trunkport GE0/0/1 to 0/0/3 //成员加入聚合组
[Huawei-Eth-Trunk1]port link-type trunk
[Huawei-Eth-Trunk1] port trunk allow-pass vlan //没有规划VLAN,可省略

LSW2配置:
sys
[Huawei]int Eth-Trunk 1 //创建聚合端口
[Huawei-Eth-Trunk1] Mode manual load-balance //配置聚合模式为手工
[Huawei-Eth-Trunk1] Trunkport GE0/0/1 to 0/0/3 //成员加入聚合组
[Huawei-Eth-Trunk1]port link-type trunk
[Huawei-Eth-Trunk1] port trunk allow-pass vlan //没有规划VLAN,可省略

查看结果:LSW1
华为以太网链路聚合Eth-Trunk实验_第6张图片
WorkingMode:NORMAL=普通的链路聚合
Hash arithmetic:SIP-XOR-DIP=接口基于源IP地址与目的IP地址进行负载分担
Max Bandwidth=affected-linknmber:8=影响链路聚合带宽最大连接数,主要用于STP计算
其他的没什么好说的了。一会在具体分析。
——————————————————————————————————————————————————————————

链路聚合实验二、LACP-STATIC聚合

使用默认的简单配置。
华为以太网链路聚合Eth-Trunk实验_第7张图片

LSW1配置:
[Huawei] int Eth-Trunk 1
[Huawei-Eth-Trunk1]mode lacp-static //配置LACP模式
[Huawei-Eth-Trunk1]port link-type trunk
[Huawei-Eth-Trunk1]port trunk allow-pass vlan all //可选配置
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]eth-trunk 1 //成员加入聚合组1
[Huawei]int g0/0/2
[Huawei-GigabitEthernet0/0/1]eth-trunk 1
[Huawei]int g0/0/3
[Huawei-GigabitEthernet0/0/1]eth-trunk 1

LSW2配置:
[Huawei] int Eth-Trunk 1
[Huawei-Eth-Trunk1]mode lacp-static
[Huawei-Eth-Trunk1]port link-type trunk
[Huawei-Eth-Trunk1]port trunk allow-pass vlan all
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]eth-trunk 1
[Huawei]int g0/0/2
[Huawei-GigabitEthernet0/0/1]eth-trunk 1
[Huawei]int g0/0/3
[Huawei-GigabitEthernet0/0/1]eth-trunk 1

配置完了看下结果
华为以太网链路聚合Eth-Trunk实验_第8张图片
LAG ID=链路聚合组ID=1
WorkingMode:STATIC=LACP-STATIC
System Priority:32768,用来协商主动被动的。默认都是32768,对比MAC地址。
Preempt Delay:Disbaled:抢占延迟的意思,没配置,默认是关闭的
Hash:负载分担,基于IP的负载分担。
其他的就不多说了,设备的优先级,设备的MAC地址,上限/下线阈值,状态,链路成员数量。
本地端口成员状态,Selected和Unselected。主和备,转发和不转发区别。
下面就是对端的信息。

————————————————————————————————————————————————————————————

链路聚合实验的疑问思考

问题一:LACP聚合的原理不是说有备份功能么,怎么没看见非活动接口成员UnSelected呢?

比如三条线路做聚合捆绑,配置了Max active-linknumber 2,那么剩余的那条链路就是UnSelected状态,不能转发数据。

[Huawei-Eth-Trunk1]max active-linknumber 2
华为以太网链路聚合Eth-Trunk实验_第9张图片
当我们Shutdown掉G0/0/2,会出现什么状态呢?
非活动端口(备份链路)自动转换为活动链路。
G0/0/2就算undo shutdown,也不会变成活动接口,G0/0/1和G0/0/3依旧是活动接口。要想切换回去需要配置抢占,这里就不介绍了,华为设备默认关闭抢占模式。个人觉得,没哈意义啊。谁能解释下呢?
华为以太网链路聚合Eth-Trunk实验_第10张图片
——————————————————————————————————————————————————————————
问题二:那配置了默认的设置后,你怎么知道就流量负载了呢?能实验不?

还是之前的LACP模式的聚合,我们通过PC1和和PC3一起PING PC2和PC4,看到底能不能进行分流?

华为以太网链路聚合Eth-Trunk实验_第11张图片
192.168.1.1 Ping 192.168.1.3
192.168.1.2 Ping 192.168.1.4

看看是从一条链路上通过的,还是负载了。G0/0/1和G0/0/3是活动转发端口。抓包这两个端口,PC同时回车。华为以太网链路聚合Eth-Trunk实验_第12张图片
华为以太网链路聚合Eth-Trunk实验_第13张图片
华为以太网链路聚合Eth-Trunk实验_第14张图片

华为以太网链路聚合Eth-Trunk实验_第15张图片

妈的配了半天,居然没分流?不是负载均衡吗。。。逐流分担,不是说了,根据源地址,进行HASH计算吗。
负载的算法哪里出问题了,查看了下,手工的和LACP的Hash=SIP-XOR-DIP,都是基于源IP和目的IP进行负载分担。
修改负载分担方式,基于MAC地址的负载分担。看看效果如何。
[Huawei-Eth-Trunk1]load-balance src-dst-mac
华为以太网链路聚合Eth-Trunk实验_第16张图片
立马负载分担了。
华为以太网链路聚合Eth-Trunk实验_第17张图片

结论吧,基于二层的聚合,就根据源MAC和目的MAC进行负载分担,如果配置的Eth-Trunk是基于IP的聚合,就配置load-balance src-dst-ip
因为二层两端传输的是以太网帧,封装的原理,IP部分已经被封装,帧格式:目的MAC地址、源MAC地址、类型、数据部分、FCS,所以二层的聚合,基于IP的话,是识别不了的。

在补充下:学过VXLAN和GRE隧道的话,对于这个负载分担就会很好的理解,上面提过:Eth-Trunk模块内部维护一张转发表,这张表由两部分组成:HASH-KEY值:根据数据包的MAC地址或IP地址等,经HASH算法计算得出。

目的MAC和IP只有一个的话,基于目的MAC和IP分担的话,Eth-Trunk会对目的的MAC或IP进行HASH运算,如果HASH出来的值一样,就不进行负载分担。所以对于目的MAC和IP地址只有一个的话,要选择根据报文的源MAC或IP进行负载分担。

文章内容如有错误或是有更好的见解,直接在评论处留言。

————————————————————————————————————————————————————————————

补充,三层Eth-Trunk配置

华为以太网链路聚合Eth-Trunk实验_第18张图片

AR1配置
[Huawei] interface Eth-Trunk1
[Huawei-Eth-Trunk1] undo portswitch
[Huawei-Eth-Trunk1] ip address 10.1.1.1 255.255.255.0
[Huawei-Eth-Trunk1] mode lacp-static

[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]eth-trunk 1
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/0]eth-trunk 1

[Huawei]int g0/0/2
[Huawei-GigabitEthernet0/0/2]ip add 192.168.1.254 24
[Huawei]ip route-static 192.168.2.0 24 10.1.1.2

AR2就不演示了。

华为以太网链路聚合Eth-Trunk实验_第19张图片
测试了,默认分流。基于MAC,就不分流了。
基于MAC的话,路由器接收过来的MAC,都是路由器的MAC,不管谁都是同一标记。

——————————————————————————————————————————————————————————

补充,集群环境下的链路聚合

将集群设备不同设备中的物理接口聚合到一个逻辑接口中,当集群设备中某台设备故障或加入聚合接口中的物理成员口故障,可通过集群设备间线缆跨框传输数据流量,从而保证数据传输的可靠性,同时实现了设备间的备份。

如图在B网络无故障的情况下从DeviceB或DeviceC上来的流量,通过本设备中的成员口转发,而不是像a图中通过集群设备间线缆跨框转发。
华为以太网链路聚合Eth-Trunk实验_第20张图片
这里有个重点,就是牵扯本地流量优先转发。在网络无故障的情况下,DB或DC上来的流量,通过本设备成员口优先本地转发,而不是像A图中通过集群设备间的线缆跨框转发。

在详细解释下:在设备集群情况下,为了保证流量的可靠传输,流量的出接口设置为Eth-Trunk接口。那么Eth-Trunk接口中必定存在跨框成员口。当集群设备转发流量时,Eth-Trunk接口通过HASH算法可能会选择跨框的成员口。由于集群设备间线缆带宽有限,跨框转发流量增加了集群设备之间的带宽承载压力,同时也降低了流量转发效率。为了解决这个问题,可以使能Eth-Trunk接口流量本地优先转发。
华为设备做CSS的默认本地优先转发。
进入Eth-Trunk视图
执行命令local-preference enable

**链路聚合技术如今广泛应用,在交换机至核心链路及双核心之间,服务器区至核心的服务器接入交换机/WF等等都应用的比较广泛。链路捆绑技术也不只有Eth-Trunk。
Eth-Trunk:以太网链路聚合技术。
E-Trunk:以太网链路聚合技术的扩展版。支持跨设备聚合。(感觉意义不大)
MP:应用在广域网PPP链路捆绑技术。
IP-Trunk:应用在广域网POS接口捆绑技术,HDCL封装形式

你可能感兴趣的:(网络协议,华为,网络,网络协议)