发明内容
本发明要解决的技术问题是提供一种短包数据的接入方法,可以充分
利用网络处理器有限的资源,实现短包数据的高速接入。
为了解决上述技术问题,本发明提供了一种短包数据的接入方法,采用
ATM接入,包括接收数据和发送数据的处理流程,其特征在于:所述接收
数据的处理流程包括以下步骤:
(a)将到达备用光口的短包数据并入主用光口,并在所有的短包数据
上打上光口号标签,再发送给网络处理器;
(b)网络处理器检测主用端口的查询信号,判断端口是否有短包数据,
如果有,执行下一步,否则继续检测;
(c)发送数据接收请求字,接收短包数据;
(d)提取数据包的端口号并进行端口剥离和有效性校验,校验成功,
执行下一步,否则丢弃该数据包;
(e)发送接收指令,将短包数据从接收FIFO中存储到内存中,并构造
短包数据的描述符,写入接收队列。
采用本发明方法后,使得网络处理器微引擎的接收线程在检测端口时只
看到主用端口,而不是实际支持的主备用端口,可以大大地减小线程查询总
线失败的次数,从而提高了性能。
进一步地,可采用以下发送数据的处理流程:
(o)从发送队列获取待发送的包长小于48字节的短包数据的描述符;
(p)提取并判断包发送端口和数据包长度是否有效,如果是,执行下
一步,否则丢弃;
(q)选择发送FIFO,进行端口仲裁并构造发送控制字,在发送端口准
备就绪后,进行数据发送。
上述方法还可加入CRC校验,即所述步骤(a)之前,还包括步骤:进
行CRC校验,得到检验结果;同时,在所述步骤(e)之前,还包括步骤:
所述网络处理器对得到的检验结果进行解析,对于通过校验的短包数据再执
行步骤(c),否则丢弃。
上述方法还可具有以下特点:所述步骤(a)之前,还包括步骤:对到
达主备光口的短包数据进行总线转换。
上述方法还可具有以下特点:所述步骤(b)之前由可编程门阵列对短
包数据进行处理。
上述方法还可具有以下特点:所述步骤(q)之后,还包括步骤:根据
所述描述符中的报文长度,进行CRC校验添加并发送。
上述方法还可具有以下特点:所述短包数据的描述符中,包含了数据包
在内存中存放的缓冲区基地址,数据包有效字节在内存缓冲区中的偏移量,
数据包的逻辑接收端口或逻辑发送端口,数据包的长度等字段。
上述方法还可具有以下特点:所述短包数据的描述符中还包含了用于扩
展使用的保留字段。
上述方法还可具有以下特点:所述步骤(q)中进行端口仲裁时,通过
对数据描述符的分析得到短包数据发送的逻辑光口号,通过映射得出相应的
物理发送端口,再在发送过程中指定真正的物理光口。和通常采用的通过调
度轮循发送端口数据的形式相比,节约了调度线程。
由上可知,本发明采用了网络处理器,通过主备逻辑端口合并技术,可
利用较少的网络处理器资源实现短包数据的高速接入,同时保证数据接入的
后续处理能力,具备很好的性价比。而采用无适配层的ATM接入方式,极
大地节省了带宽,降低了协议实现的复杂性和工程成本。因此,本发明为短
包数据接入提供了一种可靠、简单的高性能接入方法。特别适用于语音数据
的接入。
具体实施方式
本实施例的短包数据是指包长小于48个字节的数据包,由于规定数据
(由用户自定义)长度小于48字节,因而可以承载在一个ATM信元上面,
没有必要进行分片重组、顺序错误检测等适配功能。因此,本实施例针对特
殊的应用环境,采用了无适配层(即AAL0方式)的ATM接入方式,可以
节约额外的开销,节省了带宽,而且降低了协议实现的复杂性和工程成本。
如图1所示,网络处理器加FPGA(Field Programmable Gate Array,可
编程门阵列)10和STM物理芯片20是完成本发明实施例短包数据高速接入
方法的硬件基础。本实施例的STM物理芯片20采用CX29704芯片,用来
实现数据物理层和数据链路层的功能,但也可以采用任何一款支持ATM标
准的物理芯片。网络处理器采用前述的英特尔IXP1200网络处理器,利用其
特有的IXBUS总线和发送接收机制完成短包数据的接入及包头后净荷的业
务处理,同时协助完成CRC校验功能。而FPGA主要用于实现UTOPIA总
线和IXBUS总线的转换,16位CRC的生成和部分CRC校验,以及将备用
光口数据合入主光口并加上光口号标签以区分光口数据通道等功能。从发送
和接收两个方向的功能看,网络处理器加FPGA10可进一步地分为下述的功
能模块:
短包数据发送队列11,用于接收网络处理器内部业务处理模块完成数据
处理之后,写入的待发送短包数据的描述符;
ATM发送模块12,用于从短包数据发送队列中提取短包数据描述符,
分析数据属性,选择发送FIFO(First In First Out,先进先出队列)元素空间,
进行端口仲裁,构造发送状态字并发送;
发送CRC生成模块13,用于读取短包数据描述符中设置的报文长度,
生成CRC校验字段,本实施例是利用FPGA逻辑来完成的;
数据合并模块14,用于对到达主备光口的短包数据进行总线转换,将备
用光口数据合入主用光口,并在所有短包数据上打上光口号标签,本实施例
是用FPGA逻辑实现的;
接收CRC校验模块15,用于完成接收短包数据(即ATM信元)的CRC
校验功能,本实施例中,该校验功能是由FPGA和网络处理联合实现,FPGA
生成校验结果,由网络处理器进行校验结果的判别和相应的功能操作;
ATM接收模块16,用于完成ATM信元的接收功能,包括端口检测,
端口分离,数据缓冲申请,数据接收和存储以及数据描述等功能,最终将短
包数据描述符放入短包数据接收队列;
短包数据接收队列17,ATM接收模块在完成数据的接收之后,构造相
应的数据描述符,写入此接收队列,由业务处理模块读出并处理,在应用层
面,用户可以根据自身的需求解析承载的数据,甚至采用其它的协议。
上述短包数据发送和接收队列中的短包数据描述符是用于描述短包数
据在内存中的位置和数据包的属性,其具体的构造如图2所示,每个描述符
占用内存连续16个字节空间,由4个字节的描述符基地址、1个字节的端口
号、1个字节的偏移量、两个字节的长度及8个字节的保留字段。其中,描
述符基地址是数据包在内存中存放的缓冲区基地址;偏移量是数据包有效字
节在内存缓冲区中的偏移量,端口号对于接收方向是数据包的接收端口,对
于发送方向是数据包的发送端口,均为逻辑端口;长度字段存放数据包的长
度,可用于生成CRC校验字段;保留字段将来可以用来作为完善功能的扩
展使用,如作为服务质量(Quality of Service,Qos)字段等。
基于以上系统,本发明实施例短包数据的接收流程(不包括链路层和物
理层的处理过程)如图3所示,包括以下步骤:
步骤301,FPGA对到达主备光口的短包数据进行总线转换;
步骤302,进行CRC校验,得到校验结果,同时将备用光口数据合入主
光口,并在所有的短包数据上打上光口号标签,发送给网络处理器;
步骤303,网络处理器检测两个主用端口(对应于两个主用光口)的查
询信号,即进行IXP1200的IXBUS总线端口READY信号检测,当总线上
有数据包文时,READY信号将会置相应的READY位通知IXP1200的微引
擎线程;
步骤304,判断端口是否有数据报文,如果有,执行下一步,否则返回
步骤303,微引擎继续检测总线;
步骤305,发送数据接收请求字,请求字信息包含接收FIFO、接收线程
等信息供IXP1200接收状态机接收数据使用;
步骤306,接收数据报文,即在发送接收请求后,等待数据到达接收FIFO
中;
步骤307,提取端口号并判断是否有效,由于本实施例接收请求的处理
过程只轮循检测两个端口,因此这里要进行端口的剥离和端口有效性验证,
如果端口号是否有效,执行下一步,对于端口号错误的数据报文直接丢弃并
返回步骤303,重新开始报文接收;
步骤308,对数据报文CRC校验结果进行解析,如果校验通过,执行下
一步,否则丢弃报文,返回步骤303;本实施例针对接收FIFO采用在有效
数据后附加两个接收状态字节的方式来获取CRC校验结果;
步骤309,对于通过校验的短包数据,发送接收指令,将数据包从接收
FIFO中存储到内存中;
步骤310,构造短包数据的数据描述符,并将其写入接收队列,描述符
采用图2的形式。
上述流程特别值得注意的是,由于本实施例利用FPGA作了将备用光口
数据合入主光口的特殊处理,使得网络处理器微引擎的接收线程在检测端口
时只看到两个端口,而不是实际支持的四个端口,这种实现方式可以大大地
减小线程查询总线失败的次数,从而提高了性能。试验表明,对于四个光口,
这种实现方式可以很好的达到任意一对主备光口设计总流量155Mbps的要
求,而目前已有的其他方式均无法实现。
本发明实施例短包数据的发送流程如图4所示,包括以下步骤:
步骤401,从短包数据发送队列获取待发送的数据包的描述符,此队列
可以是接收模块的接口队列,也可以是任意模块的接口队列;
步骤402,提取包发送端口和数据包长度,由于任意一对主备光口共用
相同的发送队列,因此必须在发送前确认数据包的实际端口号,同时对数据
包的长度作必要的检查;
步骤403,判断包长度及端口号是否有效,如果是,执行下一步,否则
检测失败,丢弃相应的数据报文,返回步骤401;
步骤404,选择发送FIFO,进行端口仲裁并构造发送控制字。在发送方
向,对于发送FIFO的分配按照两个光口来分配;在ATM发送方向,网络处
理器在对数据描述符分析过程中得到短包数据发送的逻辑光口号,通过映射
得出相应的物理发送端口,在发送过程中指定真正的物理光口,而不是目前
通常设计采用的通过调度轮循发送端口数据的形式,节约了调度线程,提高
了发送性能;对于发送控制字,由于每个短包数据小于64字节,采用IXP1200
处理器发送状态机制时就是一个完整的数据包,因此同时是SOP(Start of
Packet)和EOP(End of Packet)报文;
步骤405,判断发送端口是否准备就绪,如果端口没有准备就绪,则循
环等待,否则执行下一步;
步骤406,置发送有效位,微引擎线程进行数据发送;
步骤407,FPGA根据描述符中的报文长度,进行CRC校验添加并发送。
可以看出,上述实施例在ATM接收方向,到达主备光口的短包数据(总
流量最多为155MBps)在经过FPGA逻辑进行总线转换之后,FPGA逻辑将
同时完成CRC校验功能和备用光口数据合入主光口的功能,并在所有的短
包数据上打上光口号标签发送给IXP1200网络处理器。网络处理器在接收到
数据时,基于性能的要求,只是针对主用光口进行扫描接收,之后根据数据
的光口号区分主备用光口数据进行数据分离,然后进行相应的接收处理。
这种处理方式可以使用较少的微引擎来支持接入处理,实现短包数据高
速接入,从而为业务处理提供了更多空闲的微引擎。就IXP1200网络处理器
而言,用两个微引擎用于接入处理,采用上述方法可以提供两个光口共
310Mbps流量的性能,支持四个主备光口同时工作时,在四个端口均有数据
到达且任意两个主备端口流量为155Mbps的设计要求下,可以达到任意两个
主备端口流量为210Mbps的流量,达到了非常好的性能指标,资源利用率很
高,是一种高性价比的处理方法。
在上述实施例的基础上,本发明还可以有各种变换,例如,可以选择支
持或不支持CRC校验处理,只需在接收和发送流程中通过宏编译开关来选
择。适配层的形式也不一定局限在AAL0。另外,FPGA的功能也可以用其
它的逻辑处理单元来代理。