启用流量控制避免流量丢失

启用流量控制避免流量丢失  在数据传输过程中,有时候虽然设备之间的连接是正常的,但是也会发生通信故障。如在传输一个大型文件的时候,网络明明是连接正常的,但是会突然冒出一个“文件传送失败”的错误,或者接收成功的文件无法正常打开。这主要都是因为在文件传送的过程中出现了数据丢失的情况。众所周知,在网络中传送数据的时候,在发送端会将需要传送的数据文件分割成一个个固定长度的数据块;然后再在接收端进行组装。在这个传送的过程中,如果有一个数据块丢失,就会发生以上的错误。为此网络工程师要设计一个稳定的网络,就必须要考虑到数据丢失这种意外情况。即在网络设计中,采取必要的措施避免这种情况的发生。

  一、数据丢失发生的原因

  如上图所示,当网络中的文件服务器将某个文件发送到交换机A中,有可能会发生流量丢失的情况。当交换机A将文件传送到交换机B中,也有可能发生流量丢失的问题。也就是说,在任何两台设备之间,只要涉及到数据的转发,那么就都有可能发生流量丢失的情况。这主要是什么原因造成的呢?

  其实这主要是因为两台不同设备之间缓冲区的大小不同所造成的。如发送端(交换机A)的缓冲区比较大,而接收端(交换机B)的缓冲区比较小。当交换机A将数据流量源源不断的发送到交换机B的过程中,由于交换机A的缓冲区要比交换机B大,那么交换机B的缓冲区就装不下这么多流量。如果交换机B不不能够很快的释放其缓存区中的数据,那么在交换机B中就可能发生缓冲区溢出故障,从而发生数据流量的丢失。

  不过即时两台设备的数据缓冲区大小相同,但是由于其他一些方面的原因,也会造成数据流量的丢失。或者说,接收端与发送端具有相同的工作效率,发送端也可能会发生缓冲区溢出的故障。如可能因为某个网络设备内在的瓶颈或者下流设备(如下游交换机故障)的原因,接收设备无法及时将数据发送出去,从而不能够足够快的清空接收缓冲区。此时发送端不知道这种情况,仍然源源不断的将数据发送过来,此时就难免会发送缓冲区溢出的故障,从而导致数据流量丢失。所以虽然通过整体升级网络设备,让同级设备之间具有近似的缓冲区与工作效率,可以在一定程度上降低数据流量丢失的故障。但是不能够从根本上解决这个问题。为此我们还是需要寻求其他的解决方式。

  二、利用流量控制功能来减少设备之间的流量丢失

  在IEEE802.3种,提出了流量控制的特性。通过这个特性,就可以有效的避免设备之间的流量丢失。不过可惜的是,并不是所有的网络设备都支持这个特性。虽然如此,为了避免上述的数据流量丢失错误,笔者还是建议尽可能的采用流量控制功能来防止数据流量丢失。这个数据流量控制功能的工作原理比较简单,其提供了一种在两台设备之间,或者精确的说,是在链路伙伴之间提供一种缓冲区是否满的这种情况进行沟通的一种手段。当链路伙伴发现对端设备的缓冲区已经满了,则将停止发送数据流量,并且在对端设备表明它具有接收流量的能力之后(缓冲区得到一定的释放之后)再重新发送流量。其实,这个特性只是对QOS特性的一个补充。网络工程师普遍认为,这个特性有助于解决缓冲区溢出导致的数据流量丢失问题。

  如上图所示,当交换机B发现自己的缓冲区已满无法接收更多的数据时,就会向其链接伙伴交换机A发送消息,告知自己的缓冲区已经满了无法再接收新的数据。此时交换机B就会停止向其发送新的数据,直到交换机B再次发送消息给交换机A,可以重新发数据为止。在流量控制特性中,网络设备是使用特定的数据正来通知链路伙伴网络设备来延迟一段特定的时间后再重新发送数据。那么这个特定的时间是多少呢?根据现在的网络通行标准,这个时间不是有用户或者网络管理员配置的。而是接收端根据实际情况来自动确定的,或者说是根据接收端的交换机等网络设备的端口逻辑来确定的。通常情况下,网络管理员不需要关注这个时间是多少,只需要了解此时会发生数据延迟。这也是采用数据流量控制所带来的一个负面作用。不过话说回来,比起数据流量丢失来说,这个数据延迟还是可以接受的。毕竟只要能够完全接收数据,即使发送数据延迟的话,至少这个数据还可以正常使用。相反,只要一发生数据流量丢失,无法完整的受到全部数据,那么这个文件就无法正常使用。

  三、在思科系列交换机上启用流量控制特性

  现在大部分的思科交换机都支持这个流量控制特性。如在基于IOS软件的交换机中,可以通过执行如下命令来启动这个功能。

  Flowcontrol{receive/send}{on/desired/off}

  其中关键字receive表示网络设备的接口是否处理接收到的表示缓冲区满的特定桢(一般把这个桢叫做暂停桢)。而关键字send表示交换机等网络设备的接口在发生拥塞的情况下是否发送暂停桢,即是否通知链接伙伴自己的缓冲区已满,暂停发送数据。在思科交换机上启用流量控制特性的时候,笔者认为需要注意如下几个问题。

  首先是需要考虑到兼容性。也就是说,为了让这个特性发挥应有的作用,一般要求相关的网络设备都启用这个特性。如果某个链接伙伴没有启用这个特性的话,则仍然会发生数据流量丢失的问题,甚至还会造成其他的数据通信故障,从而使得功亏一篑。但是由于企业网络设备购买时间不同,为此如果让网络管理员去一一确认网络设备是否开启了这个特性,具有一定的难度。而且每加入一个网络设备,都需要确认一下,灵活性不高。为此笔者建议,平时最好将这个参数的值设置为desired。这个参数表示“请求实现”的意思。也就是说,如果将交换机的端口设置为这个值,那么交换机会根据实际情况来判断是否需要开启流量控制特性。首先其会请求链路伙伴开启这个特性。如果对方设备支持这个特性的话,那么在接收端与发送端都会采用数据流量控制特性。但是如果链路伙伴的另一端不支持这个特性,那么这个接口在数据传输的过程中也会关掉这个特性,从而保证数据的正确传输。这种自动协商机制,跟IPSec安全措施中的协商机制有着异曲同工之妙。

  其次需要注意的是,数据流量丢失往往跟设备的配置没有直接的关系。如思科高端交换机与具有吉比特网卡的服务器之间也有可能因为缓冲区溢出而发生数据流量丢失的情况。这主要是因为可能出现网络拥塞或者下游设备故障所造成的。总之,光升级网络设备还不能够彻底的解决这个问题。为了避免因网络拥塞等原因造成数据包丢失,笔者强烈建议对于网络设备采用流量控制的特性。特别是在关键或者高端服务器和工作站的配置中,要启用这个特性。当然,有时候企业可能需要更换不支持这个特性的网络设备。但是笔者认为,这个投资还是有必要的。

未经允许不得转载:金蝶精斗云 » 启用流量控制避免流量丢失