CN102215162A - 一种基于现场可编程门阵列的光纤i/o乱序帧处理方法 - Google Patents

一种基于现场可编程门阵列的光纤i/o乱序帧处理方法 Download PDF

Info

Publication number
CN102215162A
CN102215162A CN2011100713819A CN201110071381A CN102215162A CN 102215162 A CN102215162 A CN 102215162A CN 2011100713819 A CN2011100713819 A CN 2011100713819A CN 201110071381 A CN201110071381 A CN 201110071381A CN 102215162 A CN102215162 A CN 102215162A
Authority
CN
China
Prior art keywords
order
frame
address
information table
buffer memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011100713819A
Other languages
English (en)
Other versions
CN102215162B (zh
Inventor
张庆敏
张衡
胡刚
李天仁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi North Data Computing Co ltd
Original Assignee
WUXI SOUL STORAGE TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WUXI SOUL STORAGE TECHNOLOGY Co Ltd filed Critical WUXI SOUL STORAGE TECHNOLOGY Co Ltd
Priority to CN201110071381.9A priority Critical patent/CN102215162B/zh
Publication of CN102215162A publication Critical patent/CN102215162A/zh
Application granted granted Critical
Publication of CN102215162B publication Critical patent/CN102215162B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明是一种基于现场可编程门阵列的光纤I/O乱序帧处理方法,涉及一种存储技术,其特征是在FC数据帧接收过程中出现乱序帧时,通过在系统缓存反复查找地址/长度列表基础上,利用FPGA内的本地存储资源组建一个乱序信息表项,用来在出现乱序帧时,存储当前期望数据帧的“断点”信息。当再次出现乱序帧时,首先在乱序信息表项内查询是否存在期望偏移等于接收帧头部内的偏移。若在乱序信息表项内查询不到结果,再从缓存中查询地址/长度列表,查找并计算乱序帧对应的地址信息,这样可以减少在缓存中搜索的地址/长度列表次数,提高数据交换的效率。

Description

一种基于现场可编程门阵列的光纤I/O乱序帧处理方法
技术领域
本发明涉及计算机存储技术领域,尤其是一种基于现场可编程门阵列(FPGA)的光纤通道协议,在I/O处理中接收到乱序帧进行重新排列的处理方法。
背景技术
目前,在光纤通道(FC)协议中,交换由多个非并行的序列组成,而序列由多个相关的帧组成。由于发送节点重新发送丢失的帧或者同一序列的帧在传输网络中通过不同路径中传输,因此接收端口接收到帧的顺序很可能和发送端口发送顺序是不同的,称为:乱序的帧。接收端口需要将这些乱序的帧按照正确顺序重新排序之后才通过DMA方式将之传输给接收节点缓存内。接收端口可以通过光纤通道帧头部内的序列计数(Seq_cnt)或者偏移(Offset)进行重新排序。
处理方法:一种直接的办法是将这些乱序的帧暂时存起来,等到接收到其前面所有的帧之后,才将该帧传送到接收节点。这种办法在资源消耗和处理时间上效率都比较低下,因为数据流中可能会有很多乱序的帧序列,这样会消耗很多的存储资源,同时在数据帧处理时间上并不均匀。
另一种更加实际的办法是接收端口在接收到乱序到达的帧之后,到系统缓存中依次查询地址/长度列表,并计算乱序帧应该存放的缓存地址,之后将该帧写入到缓存对应位置。但是,这种方法也有缺陷,当数据流中有较多乱序帧时,使用这种方式会反复在缓存中查询地址/长度列表,这样会延迟乱序帧的处理,且对整体传输性能造成一些影响。
现场可编程门阵列(FPGA)是一种十分灵活的可编程器件,用户可多次对FPGA内部的逻辑资源和I/O资源重新配置,以实现用户需要的逻辑。光纤通道(FC)协议是一个复杂的协议簇,它支持多种服务和高层协议,同时光纤通道协议标准目前仍处于发展阶段,其标准内容仍在不断完善过程中。使用FPGA实现光纤通道协议,可以方便对最新协议版本进行更新支持。
发明内容
本发明的目的是克服背景技术所述的现有处理乱序的帧的方法缺点,在通过系统缓存中查询地址/长度列表的方法基础上,发明一种速度更快、效率高的处理方法。
为达上述发明目的,本发明采用的技术手段是:
光纤通道的数据交换由多个非并行的序列组成,而序列由多个相关的帧组成;系统缓存中存有地址/长度列表;其特征是:当出现乱序的帧时,首先在FPGA的本地存储资源(例如BRAM等)组建一个乱序信息表项,存储当前期望数据帧的“断点”信息,然后通过系统缓存中查询地址/长度列表,寻找乱序帧对应的地址信息,并将该帧写入缓存相应位置;当再次出现乱序帧时,首先在乱序信息表项内查询是否存在期望偏移等于接收帧头部内的偏移,若存在则通过乱序信息表内的断点信息计算该乱序帧再缓存中的位置,并清除乱序信息表该项对应信息;若在乱序信息表项内查询不到结果,再从缓存中查询地址/长度列表,查找并计算乱序帧对应的地址信息。
所述的断点信息是指:期望偏移、缓存地址索引和缓存偏移。
本发明的方法同样适用于乱序帧的头部序列计数(Seq_cnt),对于按照序列计数进行重新排序的情况,所述的断点信息是指:期望序列计数、缓存地址索引和缓存偏移。
本发明的方法可以减少在缓存中搜索的地址/长度列表次数,效率比普通的缓存搜索地址/长度列表方法高。而且帧序列中没有乱序帧存在时,该帧交换将不占用乱序信息表项,只有在出现乱序的帧交换中,才使用乱序信息表项记录乱序帧的当前”断点”信息,当前乱序帧处理完毕之后,清空乱序信息表项,这样可以允许多个不同的帧交换分时共享存储资源。
附图说明
图1是存储设备在光纤通道(FC SAN)环境内的拓扑连接。
图2是FC节点接收到数据帧的数据结构描述。
图3是乱序信息表项格式。
图4是FC端口数据帧的处理流程图。
具体实施方式
下面,以根据光纤通道帧头部内的偏移(Offset)字段进行重新排序为例,说明本发明的实施方式。
如图1所示的一个的光纤通道(FC SAN)内的拓扑连接内,交换网络SAN包括5个交换机SW1、SW2、SW3、SW4和SW5,带有HBA卡的主机端A与存储设备B之间可通过两条路径完成数据通信,第一条路径是A-SW1-SW2-SW3-SW5-B,另外一条路径是A-SW1-SW4-SW5-B。当主机端A和存储设备B进行通信时,主机端A按照先后顺序发送的数据帧可能分别通过两条路径传送到存储设备B,由于两条路径的传输延时不同,因此很可能在存储设备B端存在乱序到达的数据帧。
图2为光纤(FC)节点接收帧的数据结构描述,图中交换状态信息表、地址/长度列表以及数据缓存都存在系统缓存内。交换状态信息表内的OOO位标志当前序列是否有乱序状况,OOO_index标志对应着端口本地乱序信息表索引地址,系统驱动初始化时将会把这两项设置为零,当出现乱序帧后,由端口进行配置和更新。Buffer_index标志地址/长度列表内当前地址/长度对的索引,而Buffer_offset为当前地址/长度对的索引指向缓存中偏移位置。Expect_RO为期望下一个达到帧的偏移。Byte_count为该交换目前接收的数据帧(以byte为单位),Expect_byte_cnt为该交换所有数据帧的大小(以byte为单位)。AL_Baseaddr为地址/长度列表的基地址。
当一个数据帧到达后,FC端口通过系统总线从缓存中取出交换状态信息表,比较接收到数据帧头部内Offset字段和Expect_RO是否相同,在所有数据帧到达顺序和主机端A发送顺序相同的情况下,Offset字段和Expect_RO是一直相同的,此时接收端口只需要根据AL_Baseaddr、Buffer_index和Buffer_offset就可以确定当前数据帧的地址信息存放在地址/长度列表的位置,从地址/长度列表取出地址信息,并将数据帧存储在缓存对应位置,之后更新交换信息表内的Expect_RO字段、Buffer_index字段、Buffer_offset字段和Byte_count字段。
按照传统的方法,一旦在接收端口出现乱序数据帧,就需要读出缓存中地址/长度列表多个地址/长度对项,并计算乱序帧应该存放在缓存中的地址,这可能需要多次访问地址/长度列表。
图3为存在于FPGA本地的乱序信息表格式,它主要用来在出现乱序帧时,存储当前期望数据帧在缓存中存放位置的“断点”信息。乱序信息表包括字段有Exp_RO、Buff_index和Buff_offset,Exp_RO为期望下一帧的偏移,Buff_index为地址/长度列表内当前地址/长度对的索引,Buff_offset为当前地址/长度对的索引指向缓存中偏移位置。乱序信息表内的这三个字段分别对应交换状态信息表内的Expect_RO、Buffer_index和Buffer_offset字段。
当数据流中出现一个乱序帧时,接收端口判断本地是否有对应该交换的乱序信息表,若本地不存在乱序信息表,则首先要建立乱序信息表,之后再将交换状态信息表内的Expect_RO、Buffer_index和Buffer_offset字段保存在乱序信息表内的对应位置,接下来在缓存中地址/长度列表内查找存储该帧的地址信息。若本地存在乱序信息表,则首先在乱序信息表内查找Expect_RO字段,判断有无与当前收到乱序帧头部内偏移字段相同,若存在相同的Expect_RO,则直接从乱序信息表取出 Buff_index和Buff_offset字段,与交换状态信息表内的AL_Baseaddr一同计算出当前乱序帧在缓存中地址信息。若在乱序信息表查询不到相同的Expect_RO字段,则在乱序信息表内保存当前”断点”信息,之后再在缓存中地址/长度列表内搜索地址/长度对,并计算出当前乱序帧在缓存中存放位置。
图4为FC端口在接收到数据帧时的流程图,详细地描述了接收端口对乱序数据帧的处理过程。在步骤1中,接收端系统驱动会准备存放数据帧的缓存块地址,填写地址/长度列表信息,并初始化交换状态信息表。步骤2中,端口会不断检查有无收到的数据帧。当端口接收到一个数据帧后执行步骤3,通过系统总线从缓存中读出该交换对应的交换状态信息表。
步骤4中,端口会比较接收数据帧头部内Offset字段和交换状态信息块内的Expect_RO字段,判断接收的数据帧是否为乱序帧。若数据帧偏移Offset字段和Expect_RO字段相等,说明当前接收的数据帧与先前的接收是连续的;若两者并不相等,则当前接收的数据帧相对于先前的接收是乱序的。
对于第一种情况,如步骤5所示,根据交换状态信息表内的AL_Baseaddr字段和Buffer_index字段,从地址/长度列表取出对应的地址/长度对,结合Buffer_offset字段,即可确定出当前数据帧在缓存中存放地址信息,之后执行步骤15和16,按照获得的地址信息将数据帧写入缓存中相应位置,并根据具体条件更新交换状态信息表内的Buffer_index字段、Buffer_offset字段、Expect_RO字段和Byte_count字段。
对于第二种情况,则执行步骤6,通过查看交换状态信息表内的OOO字段是否有效,判断本地乱序信息表是否存在。若OOO字段有效,则首先执行步骤7,查询乱序信息表内Exp_RO字段是否有和当前接收数据帧的Offset字段相同记录。若在本地乱序信息表查询得到记录,则执行步骤9,从乱序信息表取出 Buff_index和Buff_offset字段,与交换状态信息表内的AL_Baseaddr一同计算出当前乱序帧在缓存中地址信息,同时将该行记录信息从乱序信息表内删除。此后执行步骤10,检查此时乱序信息表内有无其它记录;若无,则需要设置OOO变量和OOO_index变量无效,并清空该乱序信息表。如果步骤6中OOO字段无效,在步骤12中创建一个乱序信息表,并设置OOO变量和OOO_index变量,之后和步骤8中乱序信息表内查询不到等于偏移(offset)字段的记录一样,则执行步骤13,根据交换状态信息表内的AL_Baseaddr字段、Expect_RO字段、Buffer_index字段和Buffer_offset字段以及接收数据帧头部内Offset字段,在地址/长度列表内的查找当前接收数据帧需要的地址/长度对信息,并在步骤14中计算出当前数据帧在缓存中存放地址信息。
在取得当前数据帧在缓存中存放地址信息后,执行步骤15和16,存储数据帧到缓存适当位置,并根据具体要求,更新交换状态信息表内的Buffer_index字段、Buffer_offset字段、Expect_RO字段和Byte_count字段,若OOO变量和OOO_index变量设置,还需要清除交换状态信息表内的OOO字段和OOO_index字段。步骤17中,检查设置后的Byte_count字段是否等于交换状态信息表内的Expect_byte_cnt,若不相等,说明数据帧没有接收完毕,回到步骤2重新接收下一帧;若两者相等,则说明数据帧接收完毕,执行步骤18,向系统发送完成请求,通知系统处理接收完毕的数据。
如果乱序数据帧之间偏移相差比较大时,为得到正确的地址/长度对,可能需要多次搜索地址/长度列表。通过引入本地乱序信息表,可以在接收端口出现乱序数据帧时,减少在缓存中地址/长度列表的搜索地址/长度对的过程。由于在只有在出现乱序的帧交换才需要乱序信息表,这样就可以允许并行的帧交换可以分时共享建立乱序信息表需要的存储资源。
以上实施例是基于帧头部偏差的处理方法,同时对基于光纤通道帧头部内的序列计数(Seq_cnt)也有同样效果。

Claims (3)

1.一种基于现场可编程门阵列的光纤I/O乱序帧处理方法,光纤通道的交换由多个非并行的序列组成,而序列由多个相关的帧组成;系统缓存中存有地址/长度列表;其特征是:当出现乱序的帧时,首先在FPGA的本地存储资源(例如BRAM等)组建一个乱序信息表项,存储当前期望数据帧的“断点”信息,然后通过系统缓存中查询地址/长度列表,寻找乱序帧对应的地址信息,并将该帧写入缓存相应位置;当再次出现乱序帧时,首先在乱序信息表项内查询是否存在期望偏移等于接收帧头部内的偏移,若存在则通过乱序信息表内的断点信息计算该乱序帧再缓存中的位置,并清除乱序信息表该项对应信息;若在乱序信息表项内查询不到结果,再从缓存中查询地址/长度列表,查找并计算乱序帧对应的地址信息。
2.根据权利要求1所述的一种基于现场可编程门阵列的光纤通道 I/O乱序帧处理方法,其特征是:所述的断点信息是指:期望偏移、缓存地址索引和缓存偏移。
3.根据权利要求1所述的一种基于现场可编程门阵列的光纤通道 I/O乱序帧处理方法,其特征是:所述的断点信息是:期望序列计数、缓存地址索引和缓存偏移。
CN201110071381.9A 2011-03-24 2011-03-24 一种基于现场可编程门阵列的光纤i/o乱序帧处理方法 Expired - Fee Related CN102215162B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110071381.9A CN102215162B (zh) 2011-03-24 2011-03-24 一种基于现场可编程门阵列的光纤i/o乱序帧处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110071381.9A CN102215162B (zh) 2011-03-24 2011-03-24 一种基于现场可编程门阵列的光纤i/o乱序帧处理方法

Publications (2)

Publication Number Publication Date
CN102215162A true CN102215162A (zh) 2011-10-12
CN102215162B CN102215162B (zh) 2014-07-30

Family

ID=44746298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110071381.9A Expired - Fee Related CN102215162B (zh) 2011-03-24 2011-03-24 一种基于现场可编程门阵列的光纤i/o乱序帧处理方法

Country Status (1)

Country Link
CN (1) CN102215162B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105007198A (zh) * 2015-07-23 2015-10-28 中国电子科技集团公司第四十一研究所 一种ip数据包乱序模拟仿真电路及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725677A (zh) * 2004-07-20 2006-01-25 中兴通讯股份有限公司 一种虚级联组乱序重排的方法
WO2007100487A2 (en) * 2006-02-28 2007-09-07 Mips Technologies, Inc. Distributive scoreboard scheduling in an out-of-order processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725677A (zh) * 2004-07-20 2006-01-25 中兴通讯股份有限公司 一种虚级联组乱序重排的方法
WO2007100487A2 (en) * 2006-02-28 2007-09-07 Mips Technologies, Inc. Distributive scoreboard scheduling in an out-of-order processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105007198A (zh) * 2015-07-23 2015-10-28 中国电子科技集团公司第四十一研究所 一种ip数据包乱序模拟仿真电路及方法
CN105007198B (zh) * 2015-07-23 2018-08-14 中国电子科技集团公司第四十一研究所 一种ip数据包乱序模拟仿真电路及方法

Also Published As

Publication number Publication date
CN102215162B (zh) 2014-07-30

Similar Documents

Publication Publication Date Title
US20240171507A1 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic)
US20190324643A1 (en) Data Distribution Method In Storage System, Distribution Apparatus, And Storage System
US10257273B2 (en) Systems, methods and devices for RDMA read/write operations
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
US20050235072A1 (en) Data storage controller
KR101378270B1 (ko) Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스
CN109656473A (zh) 桥接装置及提供接近存储计算的方法
CN101263464B (zh) 基于帧的数据传送并行处理
CN107766270A (zh) 用于PCIe设备的数据读取管理方法及装置
US20160132541A1 (en) Efficient implementations for mapreduce systems
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN111641566B (zh) 数据处理的方法、网卡和服务器
US11243714B2 (en) Efficient data movement method for in storage computation
CN113900972A (zh) 一种数据传输的方法、芯片和设备
RU2686016C2 (ru) Сетевой интерфейс
CN105681222A (zh) 一种数据接收缓存方法、装置及通信系统
US10178018B2 (en) Transmission and reception devices
US8589607B1 (en) Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander
CN107430584B (zh) 经由具有完全连接网格拓扑的pci express结构从存储读取数据
CN114584560A (zh) 一种分片帧重组方法及装置
US7366817B2 (en) Frame order processing apparatus, systems, and methods
US20170039140A1 (en) Network storage device for use in flash memory and processing method therefor
CN107533526B (zh) 经由具有完全连接网格拓扑的pci express结构向存储写入数据
US8094552B1 (en) Adaptive buffer for frame based storage communications protocols
CN102215162B (zh) 一种基于现场可编程门阵列的光纤i/o乱序帧处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant after: SOUL STORAGE TECHNOLOGY WUXI Co.,Ltd.

Address before: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant before: SOUL Storage Technology(Wuxi )Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: WUXI SOUL STORAGE TECHNOLOGY CO., LTD. TO: SOUL STORAGE TECHNOLOGY UXI O., LTD.

C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant after: WUXI SOUL DATA COMPUTING Co.,Ltd.

Address before: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant before: SOUL STORAGE TECHNOLOGY WUXI Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SOUL STORAGE TECHNOLOGY UXI O., LTD. TO: SOUL DATA COMPUTING (WUXI) CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Patentee after: WUXI NORTH DATA COMPUTING CO.,LTD.

Address before: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Patentee before: WUXI SOUL DATA COMPUTING Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140730

CF01 Termination of patent right due to non-payment of annual fee