关于在链路聚合下做smart,monitor link的转发测试

Posted 茶丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在链路聚合下做smart,monitor link的转发测试相关的知识,希望对你有一定的参考价值。

关于在链路聚合下做smartmonitor link的转发测试

这次又要开始瞎折腾了。没事找事了。毕竟我还是很无聊的;

这个实验主要要涉及到以下几个方面:

1、gvrp的应用:

2、Smart LinkMonitor Link的配置;

3、链路聚合;

 

先复习一波基本知识:

GVRP:

 

GVRP(GARP VLAN Registration Protocol) GARP VLAN注册协议

GARP(Generic Attribute Registration Protocol 通用属性注册协议

可以让交换机之间能够相互交换VLAN配置信息,动态创建和管理VLAN,用于只需要对少数交换机进行VLAN配置即可动态的传播VLAN信息;

手工配置的VLAN成为静态VLAN。通过GVRP协议创建的VLAN称为动态VLAN;

 

GVRP的三种注册模式:

Nomal模式:允许接口动态注册,注销vlan,传播静态vlan信息;

fixed模式:禁止接口动态注册,注销vlan,只传播静态vlan信息;

forbidden模式:禁止该接口动态注册、注销VLAN。不传任何VLAN1以外的任何VLAN信息。

 

Smart Link Monitor Link

为了提高网络可靠性,通常采用双归属上方式进行组网、

网络中两条上行链路在正常情况下,只有一条处于联通状态。而另一条处于阻塞状态 ,从而防止环路问题。当主用链路发生故障的时候,流量会在毫秒级的时间迅速切换到备用链路,当原主链路回复时候,将维持在阻塞状态,不进行抢占,从而保持了网络的稳定,

 

monitor link是用于扩展smart link的链路备份的范围

通过监控上游设备的上行链路,而对下行链路进行同步设置。达到上游设备的上行链路故障迅速传达给下行设备,从而触发下游设备的smart link

的主备链路切换,防止长时间因上行链路故障而出现网络故障;

 

 

配置Eth-Trunk

1负载分担;

2提高可靠性,当某个成员接口出故障的时候,流量会切换到其可用的链路上

3增加带宽。总带宽是各成员接口带宽之和

 

Eth-Trunk工作模式可以分成两种

1。手工负载分担模式:需要手动创建链路聚合组合,并配置多个借口加入到所创建的 Eth-Trunk中

2。静态LACP模式:该模式通过LACP协议协商Eth-Trunk参数后自主选择活动接口;

 

 

实验模式:

首先呢,这个是我们这次实验的基本图,这个图就不设置很多套路了。(比如说不会设置vlan),在这个图中呢,预计打算在LSW1LSW2LSW3之间设置链路聚合;之后我们在使用gvrp配置下接口状态;(虽然我喜欢手动配置,不过看来还是又要加vlan然后在LSW4设置Smart Link,使其能够快速切换;然后在LSW2LSW3上设置相应的 Monitor Link,做一个检测作用,当下行链路出现问题时候,使其能够通知上行链路迅速切换;

 

在这里先补张图,就是我所理解的smart linkmonitor link的原理;到时候我们就这么配置;、

 

(在这里我们不讨论关于生成树的问题,因为默认为我都掌握)

第一步:我们先进行链路聚合:

在我们进行链路聚合前、先用PC1pingPC3。看下报文传播的路径好了;

 

 

当我们进行一个简单的抓包之后,就会发现数据报传输的链路;从LSW1->LSW2->LSW3,但是在没有进行链路聚合之前,我们发现:这三条路,会根据生成树协议选择没有阻塞的端口发出,至于什么生成树就不过多解释;

不过我发现一个比较有意思的事情:

在我没有对LSW1做任何手脚的时候:

 

它的stp是这样的;

1当我选择把LSW1e0/0/5端口shutdown,(这个端口是转发数据的端口),数据只会经过很短暂时间的超时:然后马上恢复正常;

(估计1秒都要不到

这个时候的LSW1已经没有eth0/0/5而是马上(重点是马上!)根端口变成了eth0/0/6

 

2、然后我再次把刚刚shutdown的链路(LSW2e0/0/2端口)恢复正常后*undo shutdown),他居然不转发报文了!有点高冷;

 

 

3然后我马上,速度很快很快很快的查看了下stp brief(生成树协议情况),发现eth0/0/5马上出现了。然后又再次变成了根端口,没有毛病啊,依旧处于转发状态啊;但是报文就是一直超时啊。就是ping不通啊;作者表示很尴尬;

 

 

4到现在,都过了3,4分钟了。Pc1还是超时状态;我想了想,貌似也超过stp定时器的delay时间了啊。所以也不应该是生成树重新计算时候导致的链路阻塞;不过就在我准备放弃的时候,尼玛啊,它又通了。打我脸啊、(但是讲真,这个时间真的太久了。)

 

5、基于我本人无聊的原则,我还是要搞清楚为什么!

和前面的做法一模一样,先shutdown交换机LSW1转发数据的端口,这时候报文没有在E5上跑。而是在新晋根端口E6上面跑;

 

 

我们可以发现,我们shutdown端口E5之后,报文在E6上跑的很欢!

在这个时候,我再次把e0/0/5打开(undo shutdown

 

我们发现,这时候这俩个都动了!都没有任何的数据包从这里转发;这个时候发送的全都是stp的配置信息;但是对于生成树协议来说,没有任何问题;然而他就是不转发;

 

于是我们抓包:交换机和主机之间的链路:

 

有从pc1发到pc3ping请求的报文;但是没有任何应答;

 

所以,我还是没有发现那里有问题:先把问题丢在这,我很难过!

不过我发现,只要重启下pc1ping,就又能ping通;

 

 

**************************************************

好了,先写会DSP压(he)压(he)惊(da);

**************************************************

第一步:先进行链路聚合:

[LSW1]interface Eth-Trunk 1                  在LSW1上建立eth-trunk1接口

[LSW1-Eth-Trunk1]mode manual load-balance    设置为手工负载分担模式

[LSW1-Ethernet0/0/1]eth-trunk 1              将三个端口添加到eth-trunk1接口

[LSW1-Ethernet0/0/5]eth-trunk 1

[LSW1-Ethernet0/0/6]eth-trunk 1

[LSW1]display eth-trunk 1                   用这个命令可以查询eth-trunk接口下的端口  

[LSW1]display interface Eth-Trunk 1          查看s1和s2的eth-Trunk接口的信息

以下两张图是使用这两条命令对相应信息的查看:

[LSW1]display eth-trunk 1                  

 

[LSW1]display interface Eth-Trunk 1   

 

 

将LSW1LSW2LSW3之间的链路都进行聚合;

如果只聚合一端的话,将无法通信,会返回:

 

将所有的链路都进行了聚合:如下图:

 

 

现在有一个小问题:如果链路聚合之后,数据包会怎么在聚合链路上转发呢?

在目前看来,当进行了链路聚合之后,报文也只是在E0/0/5上跑。并没有达到均衡负载;

不过当我shutdown E5,然后在undo shutdown E5的时候,PC1pingPC3时候的恢复速度比之前没有做链路聚合的时候恢复的更快;大概是15S的样子;

 

因为从上面的图看到:只经过了一个延时,说明只可能是RSTP或者是MSTP,不可能是stp,因为STP从去能到转发需要经过2倍的FWDLY;而rstpmstp只需要经过1fwdly

 

 

第二步:发现数据如何在作了链路聚合的隧道上发送

当我们使用PC1pingPC3的时候,我们通过抓包发现:

 

 

我们发现:

【1】LSW1LSW2之间,LSW2LSW3之间都作了链路聚合,但是发现,在LSW1LSW2之间报文requestreply报文发送的链路是不同的,但是在LSW1LSW2之间报文requestreply报文发送链路却是相同的;所以作了链路聚合之后,出现了链路流量分配不均匀;

百度到的答案:负载分担是基于一定特征带哈希选路的,默认是基于SIPDIP,只有数据流多的时候,才能看出负载分担的效果,一条流肯定就只选一条路了

所以链路聚合之后并不会按照stp生成树的端口来发送数据,而是根据一种算法,先放过这个,先把后面的做完了再说

 

第三步:配置LACP链路聚合:

因为之前配置了手动模式,如果需要转换状态,就需要全部取消才行;

所以就直接使用了新的拓扑图;

 

两条链路其中一条链路出现了问题,另外一条备用的链路马上顶替出问题的链路工作,保证是两条链路工作如何实现呢?

开启所有的链路:

[LSW1-Eth-Trunk1]mode lacp-static     
更改eth-trunk的模式;

[LSW1-GigabitEthernet0/0/1]eth-trunk 1  
然后挨个将接口添加到eth-trunk接口中去

[LSW1]display eth-trunk 1              
 查看eth-trunk接口状态;

[LSW1]lacp priority 100 
 修改系统优先级为100 使其成为主动端;按照主动端设备的接口来选择活动接口;
两端设备选择了一致的活动接口,活动链路组便可以建立起来; [LSW1
-Eth-Trunk1]max active-linknumber 2 设置活动接口的上线阈值为2(最大活动链路数量)默认活动接口最大阈值为8 [LSW1-GigabitEthernet0/0/1]lacp priority 100 在s1上配置接口的优先级确定活动链路 [LSW1-GigabitEthernet0/0/2]lacp priority 100
设置两个优先级为100的链路,目的是为了确定这两个链路成为活动状态

通过设置。g0/0/1和g0/0/2成为活动状态,。而G0/0/5成为备份链路,当现在的活动链路出现问题时候,g0/0/5成为活动链路但是g0/0/1如果断开在连接,则不会恢复为活跃状态;

当接口数量超出了最大负载阈值时,剩余接口不会转发流量的

 

第四步:配置Smart Link

Smart link 要注意的地方是:需要关闭stp;

为了提高网络可靠性,通常采用双归属上方式进行组网、

Smart link网络中两条上行链路在正常情况下,只有一条处于联通状态。而另一条处于阻塞状态 ,从而防止环路问题。当主用链路发生故障的时候,流量会在毫秒级的时间迅速切换到备用链路,当原主链路回复时候,将维持在阻塞状态,不进行抢占,从而保持了网络的稳定,

 

monitor link是用于扩展smart link的链路备份的范围

通过监控上游设备的上行链路,而对下行链路进行同步设置。达到上游设备的上行链路故障迅速传达给下行设备,从而触发下游设备的smart link

的主备链路切换,防止长时间因上行链路故障而出现网络故障;

 

1】先取消掉stp

 

[LSW1]undo stp enable

[LSW1]stp disable

 

这种时候就会出现路由环路。当我用pc1pingpc3的时候,抓包任意一条链路,都会发现里面的报文成倍的疯长;并且不能ping通;

 

2】然后再设置smart link

[LSW1]smart-link group 1                           在LSW1上创建只能链路组

[LSW1-smlk-group1]smart-link enable                开启智能链路

 

突然发现并不能添加端口进去,提示的是:该端口已经运行在stp下。所以在LSW上关闭stp没啥用啊,还是要进入到每个端口中,停止stp协议;

[LSW1-Eth-Trunk1]stp disable                      

[LSW1-smlk-group1]port  Eth-Trunk 1 master     设置eth-trunk为主

[LSW1-smlk-group1]port Ethernet 0/0/2 slave    设置Eth0/0/2为辅

[LSW1]display smart-link group 1               查看smart-link的主备状态

 

3配置回切功能

当主接口出现问题,备份接口变城active状态,当原主接口恢复,主接口不自动回切到active;

需要手工配置回切功能

[LSW1-smlk-group1]restore enable (当主接口恢复的时候自动变成active)

 

第五步:配置Monitor Link,是用于扩展smart link的链路备份的范围

[LSW2]monitor-link group 1                              创建monitor-link分组1

[LSW2-mtlk-group1]port Eth-Trunk 1 uplink               设置上行链路

[LSW2-mtlk-group1]port Eth-Trunk 2 downlink             设置下行链路;

 

然后ping通。发现超时!但是感觉配置没有问题,于是抓个包看看:

 

按照这个架势,莫非我中了传说中的广播风暴之毒?~

于是乎,我百度了下,发现了问题所在:

 

我配置的都是LSW2的本地接口,明显是错误的。

应该配置上行端口或者下行端口,就是对端的端口!

 

所以重新再做一遍,虽然我LSW2上做的配置都取消掉了。但是任然ping不同, 因为链路上还存在着广播风暴。所以我索性关机,重启,然后整个人都爽了;

但是我发现呢:应该不是上述问题造成的,因为是做了链路聚合的,所以我吧本端和远端都设置为一样的名字;所以问题不是这里的;

 

可能的原因:

1、之前我没有对LSW3进行相同的配置;导致出现链路风暴;

2、在我对我的LSW2配置之后,广播风暴就已经存在在环路中了。所以有可能是环路风暴导致报文不能正确到达目的地,而我也只是单方面的认为是配置的问题;

3、有可能是我这个地方改错了:

这里我用黄色的线标注的地方;我之前手贱就把后面那个1去掉了。但是去掉之后就不能成功ping通。而且正确配置之后还是有这个1;所以我觉得最后一个可能比较大,说明以后还是不能手贱;

 

最后一步:配置gvrp

又要配置vlan了。表示很不爽;

首先呢:还是给主机和交换机之间的接口设置端口类型为access;并都设VLAN10

              交换机和交换机之间的接口设置端口类型为trunk;设置为全通过;

如何配置就不写了;

 

1在出口(就是连接到外界主机的交换机)的LSW1LSW4配置到如下图所示:

 

 

【2】将交换机之间所互联的接口全部设置为trunk并设置为全部通过

 

【3】在所有交换机上面开启GVRP功能,并在所有交换机两两互联的接口下也开启GVRP功能。

gvrp注册默认模式为Normal模式;

[LSW1]gvrp                                    在交换机上设置gvrp

[LSW1-Eth-Trunk1]gvrp                         在聚合链路(trunk)上设置gvrp

[LSW1-GigabitEthernet0/0/2]gvrp               在普通端口(trunk)上设置gvrp

【错】[LSW1-Ethernet0/0/3]gvrp                 尝试在access端口上设置gvrp                      

【报错】Info: Not a trunk port; can\'t specify gvrp!

 

但是因为我设置的是很简单vlan。所以并不能看出来很好的效果,毕竟这个图主要是为了链路聚合所产生的;

不过最后还是能够ping通的;

 

【感觉】但是个人感觉这个GVRP并没有很实在的作用的。GVRP是动态祖册,也许是因为我的拓扑图太小;但是总感觉使用动态注册这个模式,花费了很多时间去适应做动态配置所需要的达到的要求;目前感觉并没有很方便;也许我学的不够还没有掌握到精髓吧;

 

 

2017.3.15                                     by:tea

以上是关于关于在链路聚合下做smart,monitor link的转发测试的主要内容,如果未能解决你的问题,请参考以下文章

Smart Link 与Monitor Link实验

华为S5700如何实现链路聚合以及负载均衡--交换机初学者求助

思科链路聚合技术

关于CentOS 7 链路聚合的一些见解

问题有关链路聚合的无聊至极的问题

链路聚合Trunk端口绑定和捆绑简析