欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种光纤通道交换机中数据帧切分与重组的实现方法独创技术21196字

一种光纤通道交换机中数据帧切分与重组的实现方法

2021-02-06 18:24:00

一种光纤通道交换机中数据帧切分与重组的实现方法

  技术领域

  本发明属于通信技术、数字集成电路设计技术领域,具体涉及一种用于光纤通道交换机的数据帧切分与重组的实现方法。

  背景技术

  光纤通道交换机包含光纤通道收发器、帧切分模块、帧重组模块和数据交换模块。光纤通道收发器用于实现光纤通道协议FC-0层至FC-2P层的功能,将从光纤接收到的光纤通道帧输入帧切分模块,将帧重组模块输出的光纤通道帧发送到光纤。帧切分模块用于将长度不等的接收到的光纤通道帧切分为定长信元并输入至数据交换模块,对于载荷长度未达到最大载荷长度的信元,在数据交换模块中传输时需要填充无效数据。数据交换模块根据输入的信元的目的端口号,将其转发至对应端口的帧重组模块。帧重组模块用于将信元载荷重组为光纤通道帧并通过光纤通道收发器发送出去。

  光纤通道中帧长为36B到2148B不等,若数据交换模块以帧为单位进行数据转发,则存在的问题包括:

  (1)调度一帧所需时间长短不一,使控制复杂度大为增加;

  (2)若数据交换模块基于带交叉点缓存的Crossbar结构,则交换点缓存的大小必须能够容纳数个最长帧,使存储资源消耗大为增加。

  若数据交换模块以长度较短(如64B)的定长信元为单位进行数据转发,则上述问题得以避免,同时帧切分与帧重组功能也成为设计中不可缺少的部分。帧切分和帧重组的实现方法,将很大程度上影响光纤通道交换机的性能和存储资源消耗。

  传统的帧切分实现一般在完整接收一帧后再对该帧进行切分处理,存在的问题包括:

  (1)较大的帧长会带来较大的延迟;

  (2)帧长波动较大会导致抖动较大。

  传统的帧重组实现一般直接采用与交换机端口个数相同数量的FIFO实现虚拟输入队列以进行帧重组,信元载荷也存储于FIFO中,存在的问题包括:

  (1)存储资源消耗较大,相较于各虚拟队列共享一个RAM,需要数倍的存储资源消耗才能达到相似的效果;

  (2)对于信元的目的端口号非均匀分布的情形,存储资源利用率较低。

  发明内容

  本发明要解决的技术问题在于:为了克服现有技术存在的不足,本发明提供一种延迟低、抖动小、易于实现缓存到缓存流量控制的帧切分技术,以及一种存储资源占用少、存储资源利用率高、可消除数据读取延迟的帧重组技术。

  为解决上述技术问题,本发明提出的技术方案为:一种基于FIFO的帧切分实现方法和一种具有预取功能的基于动态存储虚拟输入队列的帧重组实现方法。

  帧切分实现方法包括:接收缓存,所述接收缓存用于存储输入至交换机的数据帧,同时存储数据帧切分后得到的信元的信元头;帧切分控制模块,所述帧切分控制模块用于切分帧数据并生成信元头;信元生成控制模块,所述信元生成控制模块用于从接收缓存中读取信元载荷和信元头并完成信元组装。

  帧重组实现方法包括:虚拟输入队列(VIQ),所述虚拟输入队列用于按照信元的源端口号维护不同的队列用于帧重组;帧信息FIFO,所述帧信息FIFO用于存储重组完成的帧的信息;预取FIFO,所述预取FIFO用于存储预先从虚拟输出队列读取的少量帧数据以避免虚拟输出队列中RAM数据读出延迟的影响;帧重组控制模块,所述帧重组控制模块用于控制信元写入虚拟输入队列以完成帧的重组并向帧信息FIFO写入重组完成的帧信息;帧预取控制模块,所述帧预取控制模块用于控制已重组完成的帧从虚拟输入队列的读出并将帧数据向预取FIFO写入。

  另外,根据本发明下述实施例的光纤通道交换机中数据帧切分与重组的实现方法还具有以下附加的技术特征。

  在本发明的一个实施例中,所述接收缓存包括接收数据FIFO和接收信息FIFO,所述接收数据FIFO用于存储输入至交换机的帧数据;所述接收信息FIFO用于存储包含切分得到的信元信息的信元头。

  在本发明的一个实施例中,所述帧切分控制模块用于控制帧数据向接收数据FIFO的写入,并生成信元头写入接收信息FIFO,包括如下步骤:

  步骤1:若有输入交换机帧进入帧切分控制模块,则向接收数据FIFO写入帧;

  步骤2:每向接收数据FIFO写入达到信元载荷上限的数据量,或当前帧已全部写入完成,则向接收信息FIFO写入信元头,包括首信元标志(表明该信元为其所属帧的第一个元)、尾信元标志(表明该信元为其所属帧的最后一个信元)、信元载荷长度、源端口号、目的端口号等,此时接收信息FIFO中的每个信元信息均和接收数据FIFO中的一段帧数据相对应;

  步骤3:前往步骤1。

  在本发明的一个实施例中,所述信元生成控制模块用于从接收信息FIFO中读取信元头、从接收数据FIFO中读取信元载荷并完成信元组装,包括如下步骤:

  步骤1:若接收信息FIFO非空,则读取信元头,从信元头中获得信元载荷长度并并向后级模块输出信元头;

  步骤2:根据信元载荷长度从接收数据FIFO中读取相应长度的数据并向后级输出,此时信元头和信元载荷的拼接完成并已向后级模块输出完毕;

  步骤3:前往步骤1。

  在本发明的一个实施例中,所述虚拟输入队列(VIQ)包括VIQ数据RAM、VIQ空闲指针FIFO、与交换机端口个数相同数量的VIQ信息FIFO,所述VIQ数据RAM用于存储信元载荷,根据定长信元载荷的大小划分存储区域,每个区域对应一个区域指针,RAM的数据读出存在两个或以上时钟周期的延迟以保证电路具有良好的时序;所述VIQ空闲指针FIFO用于实现VIQ数据RAM存储空间的动态管理,FIFO中存储的为VIQ数据RAM中当前空闲可用的区域的指针;所述VIQ信息FIFO用于虚拟队列输入队列的映射,虚拟输入队列为每个交换机输入通道维护一个独立的虚拟队列,信元信息存储于与其源端口号对应的VIQ信息FIFO中。总体而言,来自不同源端口的信元的信息存储于不同的VIQ信息FIFO中,信元载荷在全部存储于VIQ数据RAM中,并通过VIQ空闲指针FIFO实现动态的写入和读出。

  在本发明的一个实施例中,所述帧信息FIFO用于存储重组完成的帧的信息,包括该帧的源端口号和其所包含的信元数量。

  在本发明的一个实施例中,所述预取FIFO是一种预读式FIFO,用于存储预先从VIQ数据RAM读取的少量帧数据以避免RAM数据读出延迟的影响,并为后级模块提供简单的数据接口。RAM的数据输出相对于RAM读控制存在数个周期的延迟,则光纤通道收发器按照光纤通道协议的要求判断帧发送允许条件满足后,还需要等待数个周期才能获取到帧数据,这将造成帧间间隔的增加,使传输效率降低。后级模块将直接从预取FIFO中获取数据,对于预读式FIFO,读使能信号有效的同一个周期数据输出即有效,因此后级模块读取帧数据时将没有延迟。由于RAM数据输出存在延迟,因此采用将满信号作为预取FIFO当前是否可写入的依据以判断数据从VIQ数据RAM的读出是否需要暂停。为保证交换机不会在输出一帧的过程中发生数据中断,帧预取FIFO的深度需要保证一旦后级模块开始从预取FIFO中读取帧数据,则在读至该帧的尾数据前不能发生中断。

  在本发明的一个实施例中,所述帧重组控制模块用于控制信元写入虚拟输入队列以完成帧的重组并向帧信息FIFO写入重组完成的帧信息,包括如下步骤:

  步骤1:系统复位后,进行VIQ空闲指针FIFO的初始化,将VIQ数据RAM所有存储区域的指针值依次写入,表明此时VIQ数据RAM的所有区域均空闲可写入;

  步骤2:若有经过数据交换模块转发的信元进入帧重组控制模块,则从信元头即信元首数据中获取信元信息,包括源端口号、信元载荷长度、首信元标志和尾信元标志;

  步骤3:读VIQ空闲指针FIFO获得VIQ数据RAM的空闲存储区域指针;

  步骤4:根据信元的源端口号选择对应的VIQ信息FIFO写入获得的VIQ数据RAM存储区域指针以及信元载荷长度;

  步骤5:将获得的VIQ数据RAM存储区域指针转换为对应区域的首地址,将信元载荷写入该区域,每写入一个数据,地址自增一次,直至信元载荷写入完成;

  步骤6:若当前接收的信元为尾信元,则表明该信元所属帧的全部数据均已存在于VIQ数据RAM中,帧重组完成,并将重组完成的帧信息写入帧信息FIFO;

  步骤7:前往步骤2。

  在本发明的一个实施例中,所述帧预取控制模块用于控制已重组完成的帧从虚拟输入队列的读出并将帧数据向预取FIFO写入,包括如下步骤:

  步骤1:若帧信息FIFO非空,则读取帧信息,包括源端口号和该帧包含的信元数量;

  步骤2:根据帧的源端口号,读相应的VIQ信息FIFO获得从属于该帧的信元在VIQ数据RAM中所处存储区域的指针和载荷长度;

  步骤3:将获得的存储区域指针重新作为空闲指针写入VIQ空闲指针FIFO;

  步骤4:将获得的VIQ数据RAM存储区域指针转换为对应区域的首地址,读取信元载荷并写入预取FIFO,每读出一个数据,地址自增一次,直至信元载荷读出完成。在这个过程中,若检测到预取FIFO的将满信号有效,则暂停数据从VIQ数据RAM的读取,直到预取FIFO的将满信号无效;

  步骤5:从属于当前帧的已读出信元数量加1;

  步骤6:若从属于当前帧的已读出信元数量达到当前帧包含的信元数量,则前往步骤1,否则前往步骤2。

  与现有技术相比,本发明的优点在于:

  (1)本发明提出了一套开销小、效率高的用于光纤通道交换机的帧切分和帧重组的实现方法,对于其他交换机也具有通用性;

  (2)本发明提出的基于FIFO的帧切分实现方法具有延迟小、抖动低、易于实现缓存到缓存流量控制等优点;

  (3)本发明提出的具有预取功能的基于动态存储虚拟输入队列的帧重组实现方法具有存储资源占用少、存储资源利用率高等优点。此外,若后级模块直接从RAM中读取帧数据,帧数据的输出相对于RAM读控制存在数个周期的延迟,这会造成交换机输出的帧间间隔增加,预取功能能够消除RAM读出延迟的影响。

  附图说明

  图1为光纤通道交换机结构图。

  图2为信元格式。

  图3为帧切分模块结构图。

  图4为报文与信元的对应关系示意图。

  图5为帧重组模块结构图。

  具体实施方式

  以下结合说明书附图和具体优选的实例对本发明作进一步描述,但并不因此而限制本发明的保护范围。

  参照图1所示,光纤通道交换机包括:光纤通道收发器,所述光纤通道收发器用于实现光纤通道协议FC-0层至FC-2P层的功能,将从光纤接收到的光纤通道帧输入帧切分模块,将帧重组模块输出的光纤通道帧发送到光纤;帧切分模块,所述帧切分模块用于将长度不等的接收到的光纤通道帧切分为定长信元并输入至数据交换模块;数据交换模块,所述数据交换模块根据输入的信元的目的端口号,将其转发至对应端口的帧重组模块;帧重组模块,所述帧重组模块用于将信元载荷重组为光纤通道帧并通过光纤通道收发器发送出去。

  参照图1所示,本实施例光纤通道交换机中数据帧切分与重组的实现方法包括:基于FIFO的帧切分实现方法,所述帧切分实现方法,其实现为帧切分模块,用于将接收到的长度不等的光纤通道帧切分为定长信元并输入至数据交换模块;具有预取功能的基于动态存储虚拟输入队列的帧重组实现方法,所述帧重组实现方法,其实现为帧重组模块,用于将信元载荷重组为光纤通道帧并输入光纤通道收发器以进行发送。

  参照图2所示,本发明中定义的信元大小为64B,包括:信元头,所述信元头大小为4B,含有首信元标志(表明该信元为其所属帧的第一个元)、尾信元标志(表明该信元为其所属帧的最后一个信元)、信元载荷长度、源端口号、目的端口号;信元载荷,所述信元载荷大小为60B,若数据不足60B,则在数据交换模块中传输时需要填充无效数据。

  在本发明的一个实施例中,参照图2所示,所述帧切分模块,包括:接收缓存,所述接收缓存用于存储输入至交换机的数据帧,同时存储数据帧切分后得到的信元的信元头;帧切分控制模块,所述帧切分控制模块用于切分帧数据并生成信元头;信元生成控制模块,所述信元生成控制模块用于从接收缓存中读取信元载荷和信元头并完成信元组装。

  在本发明的一个实施例中,参照图2所示,所述接收缓存包括接收数据FIFO和接收信息FIFO,所述接收数据FIFO用于存储输入至交换机的帧数据;所述接收信息FIFO用于存储包含切分得到的信元信息的信元头。参照图3所示,接收信息FIFO中存储的帧头与接收数据FIFO中存储的帧数据段存在一一对应的关系。

  在本发明的一个实施例中,参照图2所示,所述帧切分控制模块用于控制帧数据向接收数据FIFO的写入,并生成信元头写入接收信息FIFO,包括如下步骤:

  步骤1:若有输入交换机帧进入帧切分控制模块,则向接收数据FIFO写入帧;

  步骤2:每向接收数据FIFO写入达到信元载荷上限的数据量,或当前帧已全部写入完成,则向接收信息FIFO写入信元头,包括首信元标志(表明该信元为其所属帧的第一个元)、尾信元标志(表明该信元为其所属帧的最后一个信元)、信元载荷长度、源端口号、目的端口号等,此时接收信息FIFO中的每个信元信息均和接收数据FIFO中的一段帧数据相对应;

  步骤3:前往步骤1。

  在本发明的一个实施例中,参照图2所示,所述信元生成控制模块用于从接收信息FIFO中读取信元头、从接收数据FIFO中读取信元载荷并完成信元组装,包括如下步骤:

  步骤1:若接收信息FIFO非空,则读取信元头,从信元头中获得信元载荷长度并并向后级模块输出信元头;

  步骤2:根据信元载荷长度从接收数据FIFO中读取相应长度的数据并向后级输出,此时信元头和信元载荷的拼接完成并已向后级模块输出完毕;

  步骤3:前往步骤1。

  在本发明的一个实施例中,参照图5所示,所述帧重组模块包括:虚拟输入队列(VIQ),所述虚拟输入队列用于按照信元的源端口号维护不同的队列用于帧重组;帧信息FIFO,所述帧信息FIFO用于存储重组完成的帧的信息;预取FIFO,所述预取FIFO用于存储预先从虚拟输出队列读取的少量帧数据以避免虚拟输出队列中RAM数据读出延迟的影响;帧重组控制模块,所述帧重组控制模块用于控制信元写入虚拟输入队列以完成帧的重组并向帧信息FIFO写入重组完成的帧信息;帧预取控制模块,所述帧预取控制模块用于控制已重组完成的帧从虚拟输入队列的读出并将帧数据向预取FIFO写入。

  在本发明的一个实施例中,参照图5所示,所述虚拟输入队列(VIQ)包括VIQ数据RAM、VIQ空闲指针FIFO、与交换机端口个数相同数量的VIQ信息FIFO,所述VIQ数据RAM用于存储信元载荷,根据定长信元载荷的大小划分存储区域,每个区域对应一个区域指针,RAM的数据读出存在两个或以上时钟周期的延迟以保证电路具有良好的时序;所述VIQ空闲指针FIFO用于实现VIQ数据RAM存储空间的动态管理,FIFO中存储的为VIQ数据RAM中当前空闲可用的区域的指针;所述VIQ信息FIFO用于虚拟队列输入队列的映射,虚拟输入队列为每个交换机输入通道维护一个独立的虚拟队列,信元信息存储于与其源端口号对应的VIQ信息FIFO中。总体而言,来自不同源端口的信元的信息存储于不同的VIQ信息FIFO中,信元载荷在全部存储于VIQ数据RAM中,并通过VIQ空闲指针FIFO实现动态的写入和读出。RAM的数据输出相对于RAM读控制存在数个周期的延迟,则光纤通道收发器按照光纤通道协议的要求判断帧发送允许条件满足后,还需要等待数个周期才能获取到帧数据,这将造成帧间间隔的增加,使传输效率降低。

  在本发明的一个实施例中,参照图5所示,所述帧信息FIFO用于存储重组完成的帧的信息,包括该帧的源端口号和其所包含的信元数量。

  在本发明的一个实施例中,参照图5所示,所述预取FIFO用于存储预先从VIQ数据RAM读取的少量帧数据以避免RAM数据读出延迟的影响,并为后级模块提供简单的数据接口,是一种预读式FIFO。后级模块将直接从预取FIFO中获取数据,对于预读式FIFO,读使能信号有效的同一个周期数据输出即有效,因此后级模块读取帧数据时将没有延迟。由于RAM数据输出存在延迟,因此采用将满信号作为预取FIFO当前是否可写入的依据以判断数据从VIQ数据RAM的读出是否需要暂停。为保证交换机不会在输出一帧的过程中发生数据中断,帧预取FIFO的深度需要保证一旦后级模块开始从预取FIFO中读取帧数据,则在读至该帧的尾数据前不能发生中断。

  在本发明的一个实施例中,参照图5所示,所述帧重组控制模块用于控制信元写入虚拟输入队列以完成帧的重组并向帧信息FIFO写入重组完成的帧信息,包括如下步骤:

  步骤1:系统复位后,进行VIQ空闲指针FIFO的初始化,将VIQ数据RAM所有存储区域的指针值依次写入,表明此时VIQ数据RAM的所有区域均空闲可写入;

  步骤2:若有经过数据交换模块转发的信元进入帧重组控制模块,则从信元头即信元首数据中获取信元信息,包括源端口号、信元载荷长度、首信元标志和尾信元标志;

  步骤3:读VIQ空闲指针FIFO获得VIQ数据RAM的空闲存储区域指针;

  步骤4:根据信元的源端口号选择对应的VIQ信息FIFO写入获得的VIQ数据RAM存储区域指针以及信元载荷长度;

  步骤5:将获得的VIQ数据RAM存储区域指针转换为对应区域的首地址,将信元载荷写入该区域,每写入一个数据,地址自增一次,直至信元载荷写入完成;

  步骤6:若当前接收的信元为尾信元,则表明该信元所属帧的全部数据均已存在于VIQ数据RAM中,帧重组完成,并将重组完成的帧信息写入帧信息FIFO;

  步骤7:前往步骤2。

  在本发明的一个实施例中,参照图5所示,所述帧预取控制模块用于控制已重组完成的帧从虚拟输入队列的读出并将帧数据向预取FIFO写入,包括如下步骤:

  步骤1:若帧信息FIFO非空,则读取帧信息,包括源端口号和该帧包含的信元数量;

  步骤2:根据帧的源端口号,读相应的VIQ信息FIFO获得从属于该帧的信元在VIQ数据RAM中所处存储区域的指针和载荷长度;

  步骤3:将获得的存储区域指针重新作为空闲指针写入VIQ空闲指针FIFO;

  步骤4:将获得的VIQ数据RAM存储区域指针转换为对应区域的首地址,读取信元载荷并写入预取FIFO,每读出一个数据,地址自增一次,直至信元载荷读出完成。在这个过程中,若检测到预取FIFO的将满信号有效,则暂停数据从VIQ数据RAM的读取,直到预取FIFO的将满信号无效;

  步骤5:从属于当前帧的已读出信元数量加1;

  步骤6:若从属于当前帧的已读出信元数量达到当前帧包含的信元数量,则前往步骤1,否则前往步骤2。

《一种光纤通道交换机中数据帧切分与重组的实现方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)