论文部分内容阅读
目前的高性能路由器普遍采用了多级多平面的交换架构,比如思科的CRS-1高性能路由器和Dune SAND交换芯片。这种多级多平面交换结构具有扩展性强、可靠性高等优点。但由于在交换结构内部会出现多个数据信元竞争同一个输出端口的情况,交换结构也存在发生内部拥塞的可能。针对可能造成内部拥塞这一问题,实际的交换结构中都设置了少量的缓存。由于高性能路由器经常24小时不中断地运行,当交换结构内部出现故障时,必须有一套完善的机制来检测并处理故障。本文的重点在于介绍交换结构的故障检测方法并且提出一种可以保持交换平面内部负载均衡的流量分配算法,然后结合Push和Pull这两种调度机制对算法进行仿真验证。首先介绍思科CRS-1的Push调度机制以及Dune SAND交换芯片的Pull调度机制。Push调度机制的思路是:当输入模块中有数据信元需要发送时,立刻将其发送到交换结构中,除非从交换结构收到流量控制信息;Pull调度机制的思路是:输出模块维持一个令牌生成器,输入模块中有数据信元但没有令牌时,必须先向输出模块发送队列状态信息获得令牌,然后才能向交换结构发送数据。故障检测思路为:交换平面内的每个交换模块单元以及输出模块都会源源不断地接收来自“上游”的信元,如果暂时没有数据信元发送,“上游”模块单元就向与之相连的模块单元发送一种特殊形式的“空”信元,“下游”的模块单元收到信元后,对其进行判断。如果为数据信元,则按照数据信元的目的ID号码将其转发到相应的输出链路中;如果收到的是“空”信元,则不对其进行转发,而是将“空”信元丢弃;如果在规定的时间内某个模块单元既没有从某个输入端口收到数据信元,又没有收到“空”信元,则这个模块就判定该输入端口所在的链路出现故障。对于多级多平面交换结构而言,当一个或多个交换平面内部出现链路故障后,交换系统的处理能力会受到影响。如果不采取处理措施,随着输入流量的不断增正,包含链路故障的交换平面可能会发生拥塞。为了解决这个问题,本文提出了一种流量分配算法并且结合3级Clos交换结构进行说明。流量分配算法的思路是:每个输入模块单元为它的输出端口维持一张路由表和两种标记字段,其中,第一种标记字段用于记录交换平面内第一级链路故障的位置,第二种标记字段用于记录交换平面内第二级链路故障的位置;一旦输入模块接收到一个包含故障指示的控制分组,并且故障发生在交换结构内部,输入模块便记录故障的位置,然后根据流量分配算法来控制流量的发送。流量分配算法可以根据各个交换平面的处理能力来调整流量的发送,有利于保持各交换平面的负载均衡。最后,通过搭建Opnet网络仿真平台,并分别采用Dune SAND交换芯片的Pull调度机制和思科CRS-1路由器的Push调度机制对流量分配算法进行了仿真。结果表明,采用流量分配算法后,信元的平均时延以及交换结构的缓存使用等都会得到一定的改善;在负荷较大时,故障链路所在交换平面出现拥塞的概率明显降低。