一种信元保序方法及装置与流程

文档序号:11215404阅读:1299来源:国知局
一种信元保序方法及装置与流程
本发明涉及clos交换网络,具体涉及一种信元保序方法及装置。
背景技术
:基于信元的clos交换网络具有无阻塞、可扩展和大容量的特点,目前已成为交换芯片的主流。clos交换网络包含im(输入模块),cm(中间模块)和om(输出模块),采用折叠方式,im和om功能可在一块芯片内实现,而cm则在另一块芯片中实现,他们可组成3级的clos结构,并且可以很容易扩展成5级clos结构。为了提高延时性能和减少缓存容量,目前主流的clos交换网络中都是以信元为基本单位进行交换的,im需把数据包切分成信元送往cm,cm完成信元的交换,om则需要把信元重新组成原来的数据包并输出。图1所示为常见的clos信元交换网络架构,在该交换架构中,为了提高网络的性能,im需要把同一个数据包的所有信元负载均衡的送到不同的交换平面cm,但随之也会带来问题,经过不同cm到达同一个om的延时可能会不一样,这样可能导致数据包乱序和信元乱序,如果不做信元保序,om需要消耗大量的资源来解决这个问题。目前,信元保序的主要采用的方案是在im给信元打全局时戳,在cm和om执行最早信元先出,从而实现在om完成信元保序,进一步完成包重组,该方案最大的优点是在om排序完成之后,数据包自然完成重组,无需专门的重组缓存空间,同时存在以下缺点:(1)、在进行信元切分时需要保留、添加较多信息构成全局时戳、且参与比较的全局时戳位宽较大,导致链路开销较多;在该方案中,在im把包切分成信元时,不仅需要保留包的源编号(输入模块号和输入端口号)、目的编号(输出模块号和输出端口号),用于把信元送达目的地的路由信息,还需要增加包切分必须的包序列号、分片编号等,用于把信元还原成包的切片信息,以及信元保序所需的时戳等保序信息,组成全局时戳(时戳,源编号,分片编号),对于同一个包的所有分片,时戳同为首个分片的时戳,这些为信元层面引入很多开销,必定会降低系统的效率。(2)在cm和om根据全局时戳执行最老信元先出的原则,在cm和om选择最老信元的排序算法复杂度较高;假设在cm中所有的iq都存在信元需要发送,我们需要对所有iq的首个信元进行比较,选择出最老的信元进行发送,通常的最老信元判断原则如下:首先比较信元的时戳timestamp,时戳timestamp最小,则信元最老;如果时戳timestamp相同,则比较信元的源编号sourceid,源编号sourceid最小,则信元最老;如果源编号sourceid也相同,则比较分片编号fragmentid,分片编号fragmentid最小的信元是最老的(同一个包的fragmentid不可能相同);同样的,在om也要按照上述原则选出最老信元,在进行重组,还原成包,排序算法十分繁琐,实现复杂度非常高。同时,随着ptn(分组传送网,packettransportnetwork)和otn(光传送网,opticaltransportnetwork)的发展,两者不仅在设备层面发生融合,而且开始在芯片层面融合,这样,在clos交换网络同时进行ptn和otn业务交换时,由于otn业务对时延和抖动有较高要求,因此只在链路层面公用,在芯片层面需要分别处理ptn和otn的业务,无论是在im、cm或者om,都需要把ptn和otn业务分开处理,避免ptn业务影响otn业务的性能,而为了ptn和otn业务都能顺利保序,则需要在切分信元时分别为ptn和otn业务的信元打上两个全局时戳,如果仍采用目前的保序方法,链路开销就更大了,排序算法的复杂度也将加倍。技术实现要素:本发明所要解决的技术问题是现有信元保序方案链路开销较大,选择最老信元的排序算法复杂度较高的问题。为了解决上述技术问题,本发明所采用的技术方案是提供一种信元保序方法,包括以下步骤:im模块将收到的正常业务包切分成业务信元,并为每个信元添加路由信息、切片信息以及为不同业务类型的信元添加对应的时戳,与im模块记录的不同业务的重组描述和重组状态一起发送出去;cm模块通过比较信元时戳,对im模块发送的信元,按照不同业务类型分别进行从最老信元到最新信元的排序,并根据排序结果输出;om模块接收各个cm模块发送的信元,并通过比较信元时戳,按照不同业务类型的信元分别进行从最老信元到最新信元的排序;再根据对不同业务的时戳信息以及重组描述和重组状态,对不同业务的信元分别进行信元重组。在上述方法中,当im模块无业务信元需要发送时,直接发送时戳信元。在上述方法中,在cm模块中,对接收信元进行排序具体为:每个从其输入端口输入的信元,按照不同业务存储在不同的输入队列中,根据信元时戳,对每个业务的输入队列的队头信元以最老信元优先原则进行排序,并根据排序结果送往其输出端口的不同的输出队列,等待输出到om模块;在om模块中,信元排序与cm模块相同,排序完毕后,不再送往输出队列,直接进行信元重组。在上述方法中,当同一业务类型中出现信元时戳时,从相等的信元任意选择一个作为最老信元。在上述方法中,业务类型包括ptn业务和otn业务;cm模块优先将otn业务输出队列中的信元送到输出链路,进入om模块排序重组。在上述方法中,每个信元的信头包括路由信息、切片信息和不同业务的信元时戳,信元头信息结构包括:ptn和otn平面公用部分:fragmentvalid,分片有效指示,值为1时表示该信元为正常信元;值为0时表示该信元为时戳信元;sourceid,源编号,为输入模块号inputmoduleid和输入端口号inputport的组合;destinationid,目的编号,为输出模块号outputmoduleid和输出端口号outputport的组合;packetseq,业务包的序列号;fragmentid,信元分片的编号,用于区分同一个包的不同信元分片;lastfragment,最后一个分片指示;ptn和otn平面还分别包括打上各自的信元时戳:ptncelltimestamp:ptn业务信元时戳;otncelltimestamp:otn业务信元时戳。在上述方法中,所有的im模块记录不同业务得重组描述,共享所有的重组描述资源;所述重组描述内容包括重组包的缓存头指针、重组包在缓存中的当前写指针、重组状态、分片计数和业务类型;当重组状态为01时,占用重组描述,否则,处于空闲状态,不占用重组描述。在上述方法中,在om模块中,进行信元重组具体包括以下步骤:步骤s301、om模块对信元排序成功后,判断信元是否健全,如果该信元不健全则直接丢弃,否则进入步骤s302;步骤s302、确定信元的业务类型,查看该业务类型对应的重组状态是否为重组中,如果重组状态处于重组中,则进入步骤s303;否则,进入步骤s308;步骤s303、读取对应的重组描述,查看重组状态;如果重组状态为重组错误或丢弃,则进入步骤s304;否则,进入步骤s305;步骤s304、丢弃信元,进入步骤s313;步骤s305、根据重组描述的分片计数和信元上的分片的编号值是否相等,判断该信元是否期望分片,如果两值相等则该信元为期望分片,进入步骤s306;否则,进入步骤s307;步骤s306、把信元写入包缓存,将重组描述的分片计数fragmentcounter加1,并缓存写指针更新,进入步骤s313;步骤s307、丢弃信元,更新重组描述的重组状态为重组错误,并生成丢弃包描述,释放缓存资源,然后,执行步骤s313;步骤s308、查看是否存在空闲的重组描述,如果有进入步骤s309;否则,直接丢弃该信元;步骤s309、申请新的重组描述;步骤s310、根据重组描述的分片计数和信元上的分片的编号是否相等,判断该信元是否期望分片,如果两值相等则该信元为期望分片,进入步骤s311;否则,该信元不是期望分片,进入步骤s312;步骤s311、把信元写入包缓存,将重组描述的分片计数fragmentcounter加1;并记录第一个信元的头指针,更新缓存写指针,进入步骤s313;步骤s312、丢弃信元,更新重组描述的重组状态为重组错误;步骤s313、判断信元上的lastfragment是否为1,如果lastfragment为1,进入步骤s314;否则,转步骤s301;步骤s314、查看重组描述是否发生重组错误,如果发生重组错误,则进入步骤s315;否则,进入步骤s316;步骤s315、释放重组描述,更新im的重组状态为未重组,回到步骤s301;步骤s316、生成包描述,进入队列,释放重组描述,更新im的重组状态为未重组,回到步骤s301。本发明还提供了一种信元保序装置,包括:im模块,用于记录不同业务的重组描述和重组状态,以及将收到正常的业务包切分成业务信元,并为每个信元添加路由信息、切片信息以及为不同业务类型的信元添加对应的时戳,与不同业务的重组描述和重组状态,一起发送出去;cm模块,通过比较信元时戳,对所述im模块发送的信元,按照不同业务类型分别进行从最老信元到最新信元的排序,并根据排序结果输出;om模块,接收各个所述cm模块发送的信元,并通过比较信元时戳,按照不同业务类型的信元分别进行从最老信元到最新信元的排序;再根据对不同业务的时戳信息以及重组描述和重组状态,对不同业务的信元分别进行信元重组。本发明结合相应的信元重组方法,利用信元时戳完成信元排序,降低排序算法复杂度,提高链路效率,形成了一整套更优信元保序方案;并且采用重组描述动态管理机制,所有im共享少量重组描述缓存,当im需要重组时,申请重组描述,重组完毕,释放重组描述,这样就可以把重组描述资源需求有效降低,且不影响om的重组法。附图说明图1为常见的clos信元交换网络架构;图2为本发明中信元头信息结构示意图;图3为本发明中信元重组的流程图;图4为本发明提供的一种信元保序装置的架构图。具体实施方式下面结合说明书附图和具体实施例对本发明做出详细的说明。本发明提供的一种信元保序方法,包含信元切分、信元排序以及信元重组三阶段,需要clos交换网络架构中的im模块、cm模块和模块配合完成,即在im模块进行信元切分,并打上时戳信息和重组信息;在cm模块中进行信元交换,并结合时戳信息完成信元排序;在om模块利用时戳信息完成信元排序,然后再根据重组信息完成信元重组,本发明在排序算法复杂度和链路开销上有极大地改进,形成了一整套更优、且适应当前clos交换网络应用环境的信元保序方案。(1)信元切分。im模块将收到业务包切分成业务信元,并为每个信元添加路由信息、切片信息和不同业务的信元时戳(保序信息)发送出去,即无论是ptn业务还是otn业务信元均携带ptn信元时戳和otn信元时戳,与现有保序算法的主要区别在于,现有保序信息需要分别为ptn业务和otn业务信元添加两个平面的信元的源编号sourceid、信元的时戳timestamp和信元分片编号fragmentid;对于信元排序来说,本发明只需要为信元打上ptn业务或otn业务平面的信元的时戳timestamp,省去了信元的源编号sourceid和信元分片编号fragmentid字段。但是由于信元重组仍然需要信元的源编号sourceid和信元分片编号fragmentid字段,总的来说在多平面的场景下仅需保留一份信元的源编号sourceid和信元分片编号fragmentid字段即可;如果im模块无业务信元需要发送的时候就发送时戳信元(无有效净荷,仅包含ptn业务和otn业务信元时戳信息)。在本发明中,路由信息、切片信息和不同业务的信元时戳添加在信元头中,则每个信元头信息结构如图2所示,其中,ptn和otn平面公用部分包括:fragmentvalid,分片有效指示,值为1时表示该信元为正常信元;值为0时表示该信元为时戳信元;sourceid,源编号,为输入模块号inputmoduleid和输入端口号inputport的组合;destinationid,目的编号,为输出模块号outputmoduleid和输出端口号outputport的组合;packetseq,业务包的序列号;fragmentid,信元分片的编号,用于区分同一个包的不同信元分片;lastfragment,最后一个分片指示。ptn和otn平面还分别包括打上各自的信元时戳:ptn(orunicast)celltimestamp:ptn业务信元时戳;otn(ormulticast)celltimestamp:otn业务信元时戳。其中,fragmentvalid和celltimestamp用于信元排序,而sourceid、packetseq、fragmentid和lastfragment用于信元重组。(2)信元排序。在cm模块和om模块中,通过信元时戳timestamp比较分别进行信元排序,确定最老信元,不再需要比较信元源编号sourceid和信元分片编号fragmentid,如果出现信元时戳timestamp相等情况,可从相等的信元任意选择一个作为最老信元。在cm模块,每个从其输入端口输入的信元,按照不同业务(ptn业务和otn业务)存储在不同的输入队列中(ptn业务输入队列和otn业务输入队列),针对不同业务,每个业务的输入队列的队头信元以最老信元优先原则进行排序(比如冒泡排序等),并根据排序结果送往其输出端口的不同的输出队列(ptn输出队列和otn输出队列),等待输出到om模块,由于otn业务对时延的较高要求,cm模块优先将otn业务输出队列中的信元送到输出链路,进入om模块排序重组。在om模块,信元排序与cm模块相同,在此不再赘述,排序完毕后,不在送往输出队列,直接进行信元重组。本发明中,无论在cm模块,还是om模块,信元排序时,只比较输入队列每个信元头中的信元时戳celltimestamp,信元时戳celltimestamp越小的信元为越老信元,应越优先从输出队列输出,不再比较源编号sourceid和信元分片编号fragmentid;如果两个信元的信元时戳celltimestamp相同时,则随机选取一个作为更老信元。(3)信元重组。由于在cm模块和om模块的信元排序阶段未考虑源编号sourceid,因此在om模块排序之后,不同源编号sourceid的信元会间插出现,导致此处无法像现有信元保序方案一样直接完成信元重组;所以在om模块完成信元排序后,需要按照源编号sourceid、业务包的序列号packetseq、信元分片的编号和最后一个分片指示lastfragment进行信元重组,还原成包;此处的重组缓存可以与om模块的流量管理缓存共用,相当于未增加重组缓存。在om模块进行信元重组需要依赖im模块记录的重组描述,重组描述内容包括重组包的缓存头指针、重组包在缓存中的当前写指针、重组状态、分片计数和业务类型(如表1所示)。在本发明中,考虑到ptn业务和otn业务是各自完成重组,每个im模块需记录ptn业务和otn业务两个重组状态,如果重组状态为01则占用重组描述,否则处于空闲状态(00)不占用重组描述;所有的im模块包含ptn和otn两种业务重组描述,共享所有的重组描述资源。表1:重组描述内容。headpointer重组包的缓存头指针currentwrpointer重组包在缓存中的当前写指针reassemblestate重组状态,00:空闲,01:重组中,10:重组错误,11:包丢弃fragmentcounter分片计数ptnorotn1:otn,o:ptn如图3所示,在本发明中,信元重组具体包括以下步骤:步骤s301、在0m模块中,当信元排序成功后,把信元送往重组模块,首先判断信元是否健全(即是否存在校验错误、长度错误等),如果该信元不健全则直接丢弃,否则进入步骤s302;步骤s302、确定信元的业务类型(是ptn业务还是otn业务的信元),查看该业务类型对应的重组状态是否为重组中,如果重组状态处于重组中,则进入步骤s303;否则,进入步骤s308,申请新的重组描述。步骤s303、读取对应的重组描述,查看重组状态;如果重组状态为重组错误或丢弃,则进入步骤s304;否则,进入步骤s305。步骤s304、丢弃信元,进入步骤s313。步骤s305、根据重组描述的fragmentcounter和信元上的fragmentid值是否相等,判断该信元是否期望分片,如果两值相等则该信元为期望分片,进入步骤s306;否则,该信元不是期望分片,发生了重组错误,进入步骤s307。步骤s306、把信元写入包缓存,更新重组描述,即fragmentcounter加1;缓存写指针更新,进入步骤s313。步骤s307、丢弃信元,更新重组描述,即更新重组状态为重组错误,并生成丢弃包描述,释放缓存资源,然后,执行步骤s313。步骤s308、查看是否存在空闲的重组描述,如果有进入步骤s309;否则,直接丢弃该信元。步骤s309、申请新的重组描述。步骤s310、根据重组描述的fragmentcounter和信元上的fragmentid是否相等,判断该信元是否期望分片,如果两值相等则该信元为期望分片,进入步骤s311;否则,该信元不是期望分片,发生了重组错误,进入步骤s312。步骤s311、把信元写入包缓存,更新重组描述,即fragmentcounter加1;并记录第一个信元的头指针,缓存写指针更新,进入步骤s313,本发明经过信元重组后的包都会进入队列,进行相关的流量管理。步骤s312、丢弃信元,更新重组描述,即更新重组状态为重组错误,由于是第一个信元,不用生成丢弃包描述。步骤s313、判断信元上的lastfragment是否为1,如果lastfragment为1,表示该信元是最后一个分片,进入步骤s314;否则,转步骤s301。步骤s314、查看重组描述是否发生重组错误,如果发生重组错误,则进入步骤s315;否则,进入步骤s316。步骤s315、释放重组描述,更新im的重组状态为未重组,重组失败。回到步骤s301;步骤s316、生成包描述,进入队列,释放重组描述;更新im的重组状态为未重组,重组成功。回到步骤s301;如图4所示,本发明还提供了一种信元保序装置,包括im模块10、cm模块20和om模块30。im模块10,用于记录不同业务的重组描述和重组状态,以及将收到正常的业务包切分成业务信元,并为每个信元添加路由信息、切片信息以及为不同业务类型的信元添加对应的时戳,与不同业务的重组描述和重组状态,一起发送出去;cm模块20,通过比较信元时戳timestamp,对im模块10发送的信元,按照不同业务类型分别进行从最老信元到最新信元的排序,并根据排序结果输出;om模块30,接收各个cm模块20发送的信元,并通过比较信元时戳timestamp,按照不同业务类型的信元分别进行从最老信元到最新信元的排序;再根据对不同业务的时戳信息以及重组描述和重组状态,对不同业务的信元分别进行信元重组。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1