分类: 系统运维
2011-03-11 12:41:14
1 背景技术
随着lanswitch的发展,用户通过以太网交换机接入网络越来越多。在企业网中,用户通过二层以太网交换机接入网络,他们不仅有上 internet的需求,同时内部二层互通的需求也相当迫切。当用户需要二层互通时,报文的转发直接通过mac寻址,mac地址学习的正确与否决定着用户 之间是否能够正确的互通。
1.1 现有技术的技术方案在二层交换中,通过mac地址寻址来进行报文转发。二层设备的mac地址学习都是通过源mac地址学习来进行的。即:当端口收到一个未 知源mac地址的报文,会将这个mac添加到接收端口上,以便后续以该mac地址为目的的报文能够直接转发,即一次学习,多次转发。
二层设备的mac地址更新机制是:
1、 正常老化过程。在指定的老化时间没有源或者目的hit,从地址表中删除掉该mac。
2、 移动。当新来源mac如果发现该mac已经学习到了二层设备上,但是源端口不一样,会修改原来mac地址的源端口,也就是将原来的mac地址移动到新的端口上来。
1.2 现有技术的缺点上述情况下2中,mac地址的移动是必然的。因此当链路上存在环回情况时,最后会发现整个二层网络中的所有的mac地址都移动到了存在环回的端口上了,导致二层网络瘫痪。
网络中的环回是指如下的情况,在一台以太网交换机上存在一个自环头,或者在该以太网交换级连的以太网交换机或者网桥上存在自环头或环路情况,设所有端口在一个Vlan中。
在上述两种组网情况下,PC都存在不能正常和Sever通讯的可能性。
在图一情况下,PC ping Server时,开始会发送一个arp广播报文,到达设备后,设备会将PC的mac地址学习到交换机的端口E0/1上。
同时,该广播报文会在二层网络中广播,因此会送到接自环头的端口E0/7和接Server的端口E0/8上。由于端口E0/7上接了一个自环头,于是,该报文会原封不动的送回到端口E0/7上。
由于报文中的源mac地址为PC的mac地址,这样,就会导致PC的mac地址从端口E0/1上移动到E0/7上。当Server回应的单播arp 的报文送到交换机后,根据二层交换原理,通过目的mac寻址查找出端口,就会找到端口E0/7,然后将报文从端口E0/7送出去。这样,PC就不能和 Server进行正常的通讯了。
图二的情况和图一是类似的,环回或环路情况存在于级连的交换机。同样会导致mac地址的学习错误,使正常的网络通讯中断。
图二的情况更接近于实际的网络情况。更难于发现和定位。这种环回情况对于二层网络来说是灾难性的,二层网络越大,影响范围越大。
环路检测可以及时准确的发现网络中是否存在这种情况。
2 环路检测原理
环路检测为通过软件方式检测网络中存在的环回和环回是否已经消失。因此,要求设备上有用做管理和收发报文的CPU。
环路检测原理:
通过在设备的端口上发送一种特殊的报文,并检测该报文是否能够从发送出去的端口送回来,来确定这个端口上是否存在环回情况。因为网络是一个随时都有 可能存在变动的对象,因此环路检测是一个持续的过程,也就是说,在设备上需要每隔一定时间间隔进行一次检测,来确定各个端口上是否存在环回,以及上次发现 存在环回的端口上环回是否已经消失等情况。
具体细节:
1、 环路检测是通过CPU收发报文来进行了,因此,CPU对于收到的报文,必须能够识别出是否本设备发送出去的检测报文,是本设备的哪个端口发送出去的检测报文。
2、 当链路上某端口下存在环回情况时,从该端口发送出去的检测报文必须能够从该端口送回到本设备的CPU。
3、 当CPU从某端口发出的检测报文不能送回到本设备的该端口,则可以确认该端口下环回不存在。
基于上述三点,在构造环路检测报文时,需要具备下列内容和条件:
1、 报文中含有分配给本设备的mac地址――mac地址的唯一性标识是本设备发出的报文。
2、 报文中含有发送环路检测报文的端口号――和接收到环路检测报文的端口号比较,看是否一致。
3、 报文的目的mac为任何情况下都会在本Vlan里广播的的mac地址――保证出现环回情况报文能够回送到设备,一般情况下为广播mac地址。
4、 报文能够送到CPU去――CPU才能进行判断。当一个端口可以通过多个Vlan时,环路检测可以基于端口+Vlan来进行,从而检测出端口上不同的Vlan中存在的环路情况。
3 环路检测的好处
当设备通过环路检测发现了网络存在环回情况时,可以通过发送告警信息到网管系统,使网络管理人员能够及时发现网络中存在的问题,从而及时定位和解决。避免长时间的用户断网现象。
因为环路检测可以动态的发现链路上是否存在环回已经链路上的环回是否消失,因此,对于支持端口受控(比如端口隔离,端口mac地址学习受控)的设备,可以实现自动维护。这样不仅减轻网管人员的工作负担,同时反应更加及时,能迅速将环回对网络的影响减小至最小。
比如:当设备检测到某端口存在环回,则将该端口和Vlan内的其它端口隔离,同时删除该端口的mac地址,并禁止该端口的mac地址学习功能,那么,仅仅存在环回的端口下的用户不能正常上网,而该Vlan内的其它用户互通就丝毫不会受到影响了。
同时,在后续的检测中,一旦设备检测到该端口下面的环回已经消失,则取消掉对于端口的控制,使端口下的用户恢复正常的上网功能。
4 环路检测配置命令命令行:
全局打开或者关闭环路检测功能[默认打开] [undo] loopback-detechtion enalbe
全局打开或者关闭环路检测受控功能[默认打开] [undo] loopback-detechion control enable
全局打开或者关闭环路检测功能[默认打开] [undo] loopback-detechtion enalbe
端口打开或者关闭环路检测受控功能[默认打开] [undo] loopback-detechion control enable
端口打开或者关闭环路检测受控功能[默认检测端口下所有能够通过的vlan中的环路] [undo] loopback-detection per-vlan enable
显示环路检测的状态 display loopback-detechtion
设置环路检测的时间间隔[默认30s检测] loopback-detechtion interval-time [5-300]
5 环路检测功能介绍
环路检测是基于端口,vlan来进行环路检测,默认每隔30s检测一次。可以调整检测间隔从5s 到 300s。只有启动了环路检测功能的端口才会自动进行环路检测。缺省情况下,端口的环路检测功能是enable状态。
命令loopback-detection control enable,此命令可以启动trunk和multi端口在检测到环回后的受控功能,如果系统发现trunk或者multi端口上某个VLAN存在环回, 会使端口受控。该命令对access端口没有影响,即access端口存在环回时,都会进入受控状态。
在trunk和hybrid端口上配置了命令loopback-detection per-vlan enable后,系统会对端口上所有的VLAN进行环路检测。
配置了undo loopback-detection per-vlan enable,系统只对端口的缺省VLAN进行环路检测。 缺省情况下,系统对trunk和hybrid端口上所有的VLAN进行环路检测。当检测到端口存在环回后,首先会上报long,提示某个端口在某个 vlan中存在环回情况。如果配置了端口要进入受控状态,不同的设备因为芯片原因,端口进入受控的状态不一样。
基本原则是:该端口不再学习MAC地址,该端口不再转发流量。
6 环路检测推荐配置
设备的上行端口如果使trunk的,打开环路检测,但是配置该端口不受控。这样,当该端口检测到某个vlan存在环路后,仅仅上报环回的trap, 但不会使端口进入受控状态。这样,一些vlan的环路则不会影响别的vlan中的业务。对于下行端口,如果下挂了支持环路检测的设备,打开环路检测,但是 也配置端口不受控。而如果是接的用户端口和其它不支持环路检测设备的端口,则打开环路检测,且配置端口受控