一种均衡复数条并行的串行反串行链路数据的方法

文档序号:7614605阅读:252来源:国知局
专利名称:一种均衡复数条并行的串行反串行链路数据的方法
技术领域
本发明涉及一种SERDES(Serialize and Deserialize,串行反串行)链路数据保护方法,特别涉及对复数条并行SERDES链路数据进行检测,将业务均衡到状态正常的链路上的方法。
背景技术
目前数字通信领域的发展突飞猛进,芯片间数据的传输速率也越来越快,对于万兆级别的路由器,数据流都是以10Gbps的速度进行交换。目前有2种接口可以实现这么高的速度一种是专用的标准接口,如CSIX,SPI4等等,这种接口一般是并行总线,有单独的时钟,支持相位的动态调整。但是由于并行总线和分离时钟的原因,其总线数量受到比较大的限制,单根线最多只能达到1Gbps的速度,所以一般只用于板内的芯片互连。另外一种方法就是使用SERDES技术,这种方法使用随路时钟,单根线的速度目前已经可以达到3.125Gps,将来可以进一步提高到10Gps。而且SERDES技术采用差分线路,抗干扰能力强,传输距离长,是芯片间数据传输尤其是过背板、过光纤的首选传输手段。为了达到更高的数据传输速率,常常采用多个SERDES链路并行传输的办法,上行和下行方向都用多根SERDES数据链路并发传输。
现有技术中,多个SERDES链路的捆绑没有考虑某个SERDES数据链路断链的情况,默认为SERDES链路必须工作正常,硬件设计必须保证这一点。XAUIXAUI是一种从1000Base-X万兆以太网的物理层直接发展而来的低针数、自发时钟串行总线。XAUI接口的速度为1000Base-X的2.5倍。通过调整4根串行线,这种4bit的XAUI接口可以支持万兆以太网10倍于千兆以太网的数据吞吐量。XAUI是一个使用serdes的10G数据通路的标准,但其中没有serdes链路自动恢复的机制,接收端无论SERDES链路是否正常,都强行从该通道接收数据。发送端不管发送SERDES链路状态如何,向所有的发送SERDES通道发送数据。这种多SERDES链路的捆绑方式不安全。一旦出现问题,将造成整个系统的崩溃和死机。如果是板内的芯片级SERDES链路互连还可以接受(板内PCB走线断开的几率可以忽略不计),但是如果是板间甚至是通过光纤的跨机框连接的SERDES连接,则很可能出现部分SERDES线断开的情况(比如不小心把某根光纤折断了或者拔插了某块连接板),此时系统崩溃的代价很严重。尤其对于电信级的骨干路由器或者交换机,因为这种原因导致整个系统的崩溃,不可接受。
华为技术有限公司的SD566/SD567交换网套片设计中,SERDES的接收端可以检测到链路异常以及链路是否恢复,但是在系统设计的时候没有考虑到通过全双工的连接直接通知对端,而必须由上层软件通过定期查询或者是中断的方式通知对端的发送端,从而对端根据链路状况,关闭出现问题的链路或者打开恢复正常的链路。没有考虑用硬件的手段来进行链路状态的自动传递和链路的自动打开/关闭。
这种通过软件处理的方式延迟很大,至少是毫秒级别的,如果出现链路状态由好变坏的情况,采用这种技术会导致大量的数据丢失(在对端不知道链路变化的时间内,还是会继续通过错误链路发送数据)。反之,如果链路状态由坏变好,采用这种技术也不能够很快的的恢复数据通过能力。

发明内容
本发明的目的是用硬件的手段自动的对SERDES链路进行检测,排除错误的链路,只从正常链路上接收数据。这样即使在部分SERDES链路出问题时,或者用户在低业务流量时主动断开一条或多条链路时,整个系统会自动将正常业务均衡到状态正常的线路上去,业务不会中断,实现了平滑降级。如果系统检测到有SERDES线路恢复,又会自动的重新均衡。
本发明的发明目的是这样实现的一种均衡复数条并行SERDES链路数据的方法,包括步骤a)发送芯片固定所要发送的数据帧的长度,并在数据帧中建立依次排列的帧头、连接帧号域、链路状态域、数据域;b)为每一个数据帧分配连接帧号,并将连接帧号封装进数据帧中;c)发送芯片通过SERDES链路将所述数据帧发送到接收芯片;d)接收芯片对接收到的数据帧进行检测,当发现SERDES链路状态异常时,通知发送芯片将该条链路的数据从其它SERDES链路上进行传输。
所述的d步骤具体包括如下步骤d1)接收芯片检测到SERDES链路异常后将所述SERDES链路异常状态信息放入发送到发送芯片的帧的链路状态域中;d2)发送芯片接收该SERDES链路异常状态信息后停止从状态异常的链路上传输数据;d3)发送芯片将该条链路的数据从其它SERDES链路上进行传输。
所述的方法还包括以下步骤e)当接收芯片检测到步骤d)中状态异常的SERDES链路的链路状态恢复正常时,通知发送芯片恢复从该链路传输数据帧。
所述的步骤e)具体包括步骤e1)接收芯片检测到SERDES链路正常状态后将链路正常状态放入发送到发送芯片的帧的链路状态信息中;e2)发送芯片从该链路传输数据帧。
所述的检测SERDES链路状态的方法包括步骤发送芯片连续发送数据帧,且数据帧间没有空隙;如果数据帧不足,则在数据帧间填充空闲帧;连续发送的帧的连接帧号是连续的;如果接收芯片在每隔规定的数据帧长度的字节内,没有检测到帧头,或检测到帧头后的连接帧号的计数与上一次检测到的连接帧号的计数不连续,或者检测到SERDES的物理层解码出现错误(包括但是不限于8B/10B编解码),就判断SERDES链路状态异常。
在SERDES链路状态异常时,接收芯片不断的对链路进行检测,如果接收到连续的且间隔正常的规定数目个帧类型和连接帧号,而且连接帧号的计数是递增的,而且没有检测到SERDES的物理层解码出现错误(包括但是不限于8B/10B编解码),则SERDES链路状态恢复正常。
采用本技术方案,用硬件的手段可以实现多SERDES链路并行传输中的链路状态自动检测和均衡,保证部分链路异常时业务不中断,平滑降级,并在链路恢复正常时自动恢复全速传输。用户在低业务流量时,可以主动断开并行SERDES数据链路中的一条或多条,而不影响数据的正常传输。本技术方案能使处理延时达到微秒级别,对于安全系数不高的高速互连尤其适用(比如远程光纤互连)。
下面结合附图详细描述本发明的较佳实施例,通过对本发明较佳实施例的描述,可以更加清楚的看出和理解本发明的优点所在。


图1是本发明的系统连接示意2是本发明数据帧结构示意图具体实施方式
如图1,数据链路由2条SERDES并行链路组成,分别为上行0和上行1。发送芯片和接收芯片都有发送控制部分和接收控制部分,从芯片内的接收控制部分到发送控制部分有通道连接用以传输链路状态信息。图中的T0,T1,t0,t1是四个SERDES发送单元,R0,R1,r0,r1是四个SERDES接收单元。上行方向和下行方向(从左向右方向的两个SERDES链路为上行方向,从右到左的两个SERDES链路为下行方向)的数据通道合起来构成一个完整的双向数字通道。
链路状态的接收是依靠SERDES接收控制部分完成的。如图1所示,r0和r1能够分别检测上行0和上行1两条链路的状态,而R0和R1能够分别检测下行0和下行1两条链路的状态。
链路状态的检测有多种手段,为了尽量严格,保证链路工作正常,本发明采用了SERDES硬核标志信号结合数据帧内容检测的方法,数据帧的结构如图2所示,数据帧是定长的,而且格式固定,本实施例将数据帧长度设定为64字节。在帧头中放置一个字节的K28.5字符,在连接帧号域link head中放置递增的连接帧号,在链路状态域linkstatus中存放链路状态信息,在数据域pay load中放置数据载荷。要传输的数据帧是连续的,之间是没有空隙的,如果数据帧不足,则填充一种空闲帧保证链路上数据帧的背靠背的传输。该空闲帧的帧头是一个字节的K28.5字符,其帧上的载荷全部为0。而且该空闲帧的帧长和数据帧相同,也是64字节。空闲帧的帧长不被芯片计算。如果链路状态正常,那么K28.5字符应该每隔64字节出现一次,而且在K28.5字符后面的连接帧号一定是递增的。接收芯片一旦发现违反上述规则,或者检测到SERDES的物理层解码出现错误(包括但是不限于8B/10B编解码),则认为SERDES链路状态异常。在链路状态异常之后,发送芯片仍然从状态异常的SERDES链路上发送空闲帧,接收芯片的接收控制部分不断的对链路进行检测,搜索K28.5字符,如果接收到连续的规定数目个间隔正常的K28.5字符,K28.5字符后面的连接帧号也是递增的,也没有出现SERDES的物理层解码错误,那么就认为链路状态恢复正常。这里的规定数目个可以从1个到几百个,视需要的精确度而定。
如果发现链路状态异常,那么数据将停止从状态异常的SERDES链路上传输,只从状态正常的SERDES链路上传输;如果发现链路状态恢复正常,那么数据将重新从所有正常的SERDES链路上传输。
如图2,在数据帧结构中有专门的链路状态域(link status)来放置链路状态标志。接收芯片的接收控制部分检测到链路的状态后把这些状态传递给接收芯片的发送控制部分,然后接收芯片的发送控制部分将链路状态插入到发送给发送芯片的帧的链路状态域中,发送芯片的接收控制部分将链路状态提取出来后送给发送芯片的发送控制部分,然后发送芯片的发送控制部分根据此信息重新进行发送调度,断开或恢复从该条链路传输数据,保证将数据只从状态正常的SERDES链路上进行传输。
假定开始的时候所有4个链路的状态都是正常的,然后在某个时刻上行0链路突然断开,接收控制部分r0立刻检测到此链路状态异常,该接收控制部分将不再从此链路接收数据,同时将链路异常的信息传递给发送控制部分t0和t1;发送控制部分t0和t1将此信息插入到发送到发送芯片的帧的链路状态域中去,通过下行0和下行1两个链路发送出去;接收控制部分R0和R1接收到帧后从中提取出链路信息,发现对应于上行0的链路状态异常,于是将此信息发送给发送控制部分T0和T1,该发送控制部分T0和T1就会将正常的业务数据流只通过上行1链路发送。为了链路恢复时接收端能够重新检测同步,此时上行0链路上仍然会发送空闲帧。一旦上行0链路重新恢复,按照上面的步骤将链路状态正常的信息传送给发送控制部分T0和T1,发送控制部分T0和T1重新将正常的业务数据流分配到上行0和上行1两个通道上去,这样就实现了链路的自动均衡。
权利要求
1.一种均衡复数条并行的串行反串行SERDES链路数据的方法,包括步骤a)发送芯片固定所要发送的数据帧的长度,并在数据帧中建立依次排列的帧头、连接帧号域、链路状态域、数据域;b)为每一个数据帧分配连接帧号,并将连接帧号封装进数据帧中;c)发送芯片通过SERDES链路将所述数据帧发送到接收芯片;d)接收芯片对接收到的数据帧进行检测,当发现SERDES链路状态异常时,通知发送芯片将该条链路的数据从其它SERDES链路上进行传输。
2.根据权利要求1所述的方法,其特征在于,所述的d步骤具体包括如下步骤d1)接收芯片检测到SERDES链路异常后将所述SERDES链路异常状态信息放入发送到发送芯片的帧的链路状态域中;d2)发送芯片接收该SERDES链路异常状态信息后停止从状态异常的链路上传输数据;d3)发送芯片将该条链路的数据从其它SERDES链路上进行传输。
3.根据权利要求1所述的方法,其特征在于还包括以下步骤e)当接收芯片检测到步骤d)中状态异常的SERDES链路的链路状态恢复正常时,通知发送芯片恢复从该链路传输数据帧。
4.根据权利要求3所述的方法,其特征在于,所述的步骤e)具体包括步骤e1)接收芯片检测到SERDES链路正常状态后将链路正常状态放入发送到发送芯片的帧的链路状态信息中;e2)发送芯片从该链路传输数据帧。
5.根据权利要求1或3所述的方法,其特征在于,所述的检测SERDES链路状态的方法包括步骤发送芯片连续发送数据帧,且数据帧间没有空隙;如果数据帧不足,则在数据帧间填充空闲帧;连续发送的帧的连接帧号是连续的;如果接收芯片在每隔规定的数据帧长度的字节内没有检测到帧头,或检测到连接帧号的计数与上一次检测到的连接帧号的计数不连续,或者检测到SERDES的物理层解码出现错误,就判断SERDES链路状态异常;在SERDES链路状态异常时,发送芯片继续在状态异常的SERDES链路上发送空闲帧,接收芯片不断的对链路进行检测,如果接收到连续的且间隔正常的规定数目个帧头和连接帧号,而且连接帧号的计数是递增的,也没有出现SERDES的物理层解码错误,则SERDES链路状态恢复正常。
6.根据权利要求5所述的方法,其特征在于,所述规定数目为5个或8个。
全文摘要
本发明公开了一种在多条并行SERDES数据链路中防止数据传输中断的保护方法,该方法中,芯片通过检测数据帧,对链路状态进行检测,当检测到数据链路出现异常状态时,系统将停止通过出现异常状态的链路传输数据;当检测当数据链路恢复正常时,系统将恢复从该链路传输数据。本发明方案通过对SERDES链路并行传输方案中的链路状态自动检测和均衡,保证部分链路异常时数据传输不中断,在链路恢复正常时自动恢复全速传输。对于安全系数不高的高速互连尤其适用。本发明还提供了高速链路数目的可裁减特性以及灵活配置能力,用户在低业务流量时,可以主动断开并行SERDES数据链路中的一条或多条,而不影响数据的正常传输。
文档编号H04L29/04GK1859358SQ200510035900
公开日2006年11月8日 申请日期2005年7月8日 优先权日2005年7月8日
发明者叶锦华, 孙浩 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1