CN111600809B - 一种千兆单光口服务器适配器 - Google Patents
一种千兆单光口服务器适配器 Download PDFInfo
- Publication number
- CN111600809B CN111600809B CN202010415160.8A CN202010415160A CN111600809B CN 111600809 B CN111600809 B CN 111600809B CN 202010415160 A CN202010415160 A CN 202010415160A CN 111600809 B CN111600809 B CN 111600809B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- transmission
- sub
- buffer
- 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.)
- Active
Links
- 230000003287 optical effect Effects 0.000 title claims description 15
- 230000005540 biological transmission Effects 0.000 claims abstract description 159
- 239000000872 buffer Substances 0.000 claims abstract description 128
- 238000001914 filtration Methods 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 8
- 230000003139 buffering effect Effects 0.000 claims description 7
- SBNFWQZLDJGRLK-UHFFFAOYSA-N phenothrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=CC=CC(OC=2C=CC=CC=2)=C1 SBNFWQZLDJGRLK-UHFFFAOYSA-N 0.000 claims description 5
- 239000000835 fiber Substances 0.000 claims description 3
- 239000013307 optical fiber Substances 0.000 abstract description 8
- 238000004891 communication Methods 0.000 abstract description 5
- 230000009467 reduction Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 3
- 101100283411 Arabidopsis thaliana GMII gene Proteins 0.000 description 2
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
- H04L49/352—Gigabit ethernet switching [GBPS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/356—Switches specially adapted for specific applications for storage area networks
- H04L49/357—Fibre channel switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/40—Constructional details, e.g. power supply, mechanical construction or backplane
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
Abstract
本发明提供一种千兆单光口服务器适配器,所述适配器包括一个PHY层控制器、一个MAC层控制器、一个PCIE接口和一个千兆光纤端口,其中,MAC层控制器包括总线接口、接收缓存模块、发送缓存模块、流量控制模块、接收模块、第一发送模块、第二发送模块和PHY接口,发送缓存模块包括第一发送数据子模块和第二发送数据子模块,该适配器支持电脑端接口和光纤端口,可实现服务器与台式机等高端设备的通信;通过设置第一发送数据子模块、第二发送数据子模块和第一发送模块及第二发送模块解决了不断发送pause帧导致的传输速率降低的问题。
Description
技术领域
本发明属于适配器技术领域,特别涉及一种千兆单光口服务器适配器。
背景技术
随着科技的进步,人们对信息的需求量越来越大,网络数据的传输媒介已逐渐由网络改为光纤传输。因为光纤传输信息具有传输容量大、保密性好、迅速便利等优点。光纤服务器适配器用于服务器和台式机等高端设备的数据传输。光纤服务器适配器由以太网控制器连接不同的端口进而实现数据的转换和传输。
以太网控制器包括以太网介质访问控制器(MAC层控制器)和物理层接口芯片(PHY层控制器),MAC层控制器是实现流量控制的关键,现有技术公开的以太网MAC控制器IP核的结构框架如图1所示。传统的以太网控制器,当连接的接收设备和发送主机的端口速率不一致时,会发生数据溢出,为了防止数据溢出,接收设备会发一个pause帧给发送主机,主机根据pause帧的内容将控制帧分离出来,提交到流量控制模块,流量控制模块解析控制帧的内容,提取帧中的控制参数,根据控制参数决定暂停发送的时间;当接收设备出现拥塞的情况下,主机端口通常会连续收到多个pause帧,只要接收设备的拥塞状态没有解除,相关的端口就会一直发送pause帧,这就导致了网速传输速率的降低,可将千兆的速率降低至100MB/s以下。
发明内容
为了解决现有技术存在的问题,本发明提供一种千兆单光口服务器适配器。
本发明其中一个技术方案提供一种千兆单光口服务器适配器,所述服务器适配器包括:
一个PHY层控制器,
一个MAC层控制器,
一个PCIE接口,连接到所述MAC层控制器上;和
一个千兆光纤端口,所述千兆光纤端口被配置为连接到所述PHY层控制器上;
所述MAC层控制器包括总线接口、接收缓存模块、发送缓存模块、流量控制模块、接收模块、第一发送模块、第二发送模块和PHY接口;
所述总线接口被配置为与PCIE接口连接;
所述接收缓存模块与总线接口连接,被配置为用于对接收的数据帧缓存进行管理;
所述发送缓存模块与总线接口连接,被配置为用于对发送的数据帧缓存进行管理;
所述发送缓存模块包括:
第一发送数据子模块,所述第一发送数据子模块被配置为用于缓存待发送的数据帧;
第二发送数据子模块,当流量控制模块比较出第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述第二发送数据子模块被配置为用于缓存待发送的数据帧;
所述第一发送模块与PHY接口连接,被配置为用于通过PHY接口将第一发送数据子模块内缓存的待发送的数据帧发送至PHY层控制器;
所述第二发送模块与PHY接口连接,被配置为用于通过PHY接口将第二发送数据子模块缓存的待发送的数据帧发送至PHY层控制器;
所述接收模块与PHY接口连接,被配置为用于对数据帧进行解析,将合法帧缓存至接收缓存模块;
所述流量控制模块还被配置为用于实时监测第一发送数据子模块内缓存的数据帧的数量,并与数据帧门限阈值进行比较;还被配置为用于控制第二发送模块在预设时间后,读取第二发送数据子模块内的数据帧并发送。
进一步改进的方案中,
当所述第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,流量控制模块将流量状态寄存器内缓存流量控制字段改成1,继续检测,当缓存的数据帧的数量不大于数据帧门限阈值时,将流量控制字段改成0。
进一步改进的方案中,所述发送缓存模块还包括:
第一发送队列,所述第一发送队列被配置为用于缓存发送缓存描述符;
发送完成队列,所述发送完成队列被配置为用于缓存发送完成后的帧序号及发送状态;
发送缓存控制子模块,所述发送缓存控制子模块被配置为用于生成待发送数据帧对应的发送缓存描述符;
发送缓存状态队列,当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述发送缓存状态队列被配置为读取发送完成队列内最后一个发送状态为发送成功的帧序号,并记录该帧序号之后的所有帧序号。
进一步改进的方案中,所述第二发送数据子模块被配置为用于在预设时间内更新缓存第一发送数据子模块发送的第n个数据帧到最后一数据帧,并当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述第二发送数据子模块还被配置为用于缓存待发送的数据帧;
所述缓存模块还包括:
第一发送队列,所述第一发送队列被配置为用于缓存发送缓存描述符;
发送完成队列,所述发送完成队列被配置为用于缓存发送完成后的帧序号及发送状态;
发送缓存控制子模块,所述发送缓存控制子模块被配置为用于生成待发送数据帧对应的发送缓存描述符还包括:
进一步改进的方案中,所述发送缓存模块还包括:
第二发送队列,所述第二发送队列被配置为环形队列,用于缓存写指针及对应的帧序号;
第三发送队列,所述第三发送队列被配置为环形队列,用于缓存读指针及对应的帧序号;
所述第一发送队列和第一发送数据子模块均为环形队列,所述第一发送数据子模块、第一发送队列、第二发送队列和第三发送队列各数据结构的深度相等;在一个循环时间段t内,N-1=N1+N2,其中N为第一发送队列存储帧序号的个数,N1为第二发送队列内存储帧序号的个数,N3为第三发送队列存储帧序号的个数;
发送状态判断子模块,所述发送状态控制子模块被配置为用于记录第一发送数据子模块内数据帧存储状态,当存储状态接近满时,该位为1,当存储状态接近空时,该位为0;还被配置为用于判断N1和N2的大小,当N1>N2时,此时刻,第一发送数据子模块存储状态接近空,当N1<N2时,此时刻,第一发送数据子模块存储状态接近满,并在第一发送数据子模块内标注上对应标识。
进一步改进的方案中,所述数据帧门限阈值x按照如下公式计算:
x=(N1+N2-1)/t。
进一步改进的方案中,所述接收缓存模块包括:
接收数据子模块,所述接收数据子模块被配置为环形队列,用于缓存接收的数据帧供主机读取;
第一接收队列,所述第一接收队列被配置为用于缓存接收缓存控制符;
第二接收队列,所述第二接收队列被配置为环形队列,所述环形队列上存在空和满的标志,还被配置为用于在一个循环时间段t内,缓存接收数据子模块每一读指针和写指针的读写对应的帧序号;
所述接收数据子模块、第一接收队列和第二接收队列的容量和深度相等;
接收空满判断子模块,所述接收空满判断子模块用于读取第二接收队列内的读指针和写指针对应的帧序号,当读指针对应的位置为空,且与其邻近的位置不存在写指针帧序号时,判断第二接收队列内空状态,当写指针对应的位置为满,且与其邻近的位置不存在读指针编号,该环形队列为满状态;
接收缓存控制子模块,所述接收缓存控制子模块被配置为用于生成待接收的数据帧的接收缓存控制符。
进一步改进的方案中,所述流量控制模块还被配置为用于监听正在使用的应用程序,并监听应用程序传输的数据帧的个数,当检测到第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,根据应用程序发送的数据帧的个数决定进行二进制退避算法的应用程序。
进一步改进的方案中,所述接收模块包括地址过滤子模块,所述地址过滤子模块被配置为用于判断本地是否存有与所述数据帧的目的IP对应的过滤规则表,根据过滤规则表中查找对应的过滤规则;所述过滤规则表包括的字段包括源IP地址、源端口、目的端口和传输层协议、第一哈希值和第二哈希值;其中第一哈希值是将IP地址按照固定的位数生成的HASH码;第二哈希值是将IP地址按照随机位数生成的HASH码。
进一步改进的方案中,所述流量控制模块内设置有优先发送队列,所述优先发送队列用于缓存Pause帧。
本发明提供的千兆单光口服务器适配器,支持电脑端接口和光纤端口,可实现服务器与台式机等高端设备的通信;通过设置第一发送数据子模块、第二发送数据子模块和第一发送模块及第二发送模块解决了不断发送pause帧导致的传输速率降低的问题。
附图说明
图1为现有技术公开的以太网MAC控制器IP核的结构框图;
图2为本发明一些实施例提供的一种千兆单光口服务器适配器的结构框图;
图3为本发明一些实施例中发送缓存模块的结构框图;
图4为本发明另一些实施例中发送缓存模块的结构框图;
图5为本发明第三个实施例中发送缓存模块的结构框图;
图6为本发明一些实施例中接收缓存模块的结构框图。
具体实施方式
以上实施例仅仅是本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进均应落入本发明的权利要求书确定的保护范围内。
图1示出了现有技术公开的以太网MAC控制器IP核的结构框架,具体包括:
PHY接口模块:根据PHY的工作模式,将MII和GMII接口不同的数据位宽进行转换,从而提供给上层发送模块和接收模块统一的数据位宽;
发送模块:主要功能为按照CSMA/CD机制完成信道接入控制,以及将上层的待发数据封装成以太网帧的格式,为其添加前导码、帧起始定界符、PAD和CRC校验字段并发出;
接收模块:进行单播/组播/广播帧的过滤,进行CRC校验,滤除帧碎片并把合法的帧传输至上层,及在接收结束后向上层报告帧接收的状态;
流量控制模块:完成全双工下流量控制的功能;
发送缓存/接收缓存:实现对发送/接收帧缓存的管理;
AHB总线接口:外部总线接口,完成与ARM核及其他AHB接口单元的通信;
MII管理模块:完成对PHY工作模式的监控和设置;
时钟管理模块:功能为产生不同工作模式下各个模块的工作时钟和时钟使能信号;
寄存器和中断模块:负责系统模式配置及中断管理。
本申请公开的千兆单光口服务器适配器内的MAC层控制器对图1中公开的MAC层控制器的部分模块的功能进行了进一步的改进。具体参见图2。
如图2所示,本发明其中一些实施例提供一种千兆单光口服务器适配器,所述服务器适配器包括:
一个PHY层控制器,
其中,PHY层控制器为常规的物理层芯片,例如可以为802.3PHY;其收发数据的流程如下:以发送数据为例,PHY层控制器在发送数据时,收到MAC层控制器传输的数据,每4bit增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。接收数据时流程反之。
一个MAC层控制器,
一个PCIE接口,连接到所述MAC层控制器上;
其中,所述PCIE接口用于连接主机,实现主机通过服务器适配器与另一端设备的通讯。
一个千兆光纤端口,所述千兆光纤端口被配置为连接到所述PHY层控制器上;
所述MAC层控制器包括总线接口、接收缓存模块、发送缓存模块、流量控制模块、接收模块、第一发送模块、第二发送模块和PHY接口;
所述总线接口被配置为与PCIE接口连接;
其中,总线接口可以为AHB总线接口;总线接口为外部接口,完成与ARM核及其他接口单元的通信;
所述接收缓存模块与总线接口连接,被配置为用于对接收的数据帧缓存进行管理;
其中,接收缓存模块将有效的数据帧存入接收,并记录数据帧的存储信息及接收状态信息;
所述发送缓存模块与总线接口连接,被配置为用于对发送的数据帧缓存进行管理;
其中,发送缓存模块暂存待发送的数据帧,并记录发送状态信息;
如图3所示,所述发送缓存模块包括:
第一发送数据子模块,所述第一发送数据子模块被配置为用于缓存待发送的数据帧;
第二发送数据子模块,当流量控制模块比较出第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述第二发送数据子模块被配置为用于缓存待发送的数据帧;
其中,第一发送数据子模块和第二发送数据子模块均为读指针可载入的异步FIFO,位宽为32位,深度为1024,工作模式mode设置为0;
所述第一发送模块与PHY接口连接,被配置为用于通过PHY接口将第一发送数据子模块内缓存的待发送的数据帧发送至PHY层控制器;
所述第二发送模块与PHY接口连接,被配置为用于通过PHY接口将第二发送数据子模块缓存的待发送的数据帧发送至PHY层控制器;
其中,PHY接口主要作用是将MII接口4位数据位宽和GMII接口8位数据位宽统一为8位位宽,同时负责将rx_er,col及crs信号转发给发送和接收模块,以及将mtx_er信号转发给PHY层控制器。
第一发送模块和第二发送模块还用于按照CSMA/CD机制完成信道接入控制,将待发送的数据帧封装成以太网的格式,为其添加前导码、帧起始定界符、PAD和CRC校验字段然后发出。
所述接收模块与PHY接口连接,被配置为用于对数据帧进行解析,将合法帧缓存至接收缓存模块;
其中,接收模块具体完成的任务如下:
1)识别前导码和帧起始定界符,检测帧边界;
2)单播/组播/广播地址过滤;
3)对数据帧进行CRC校验;
4)对数据帧进行长度检查;
5)将合法帧移除前导码、帧起始定界符、PAD及CRC字段后交给上层;
6)接收结束后向上层报告帧接收状态。
所述流量控制模块还被配置为用于实时监测第一发送数据子模块内缓存的数据帧的数量,并与数据帧门限阈值进行比较;还被配置为用于控制第二发送模块在预设时间后,读取第二发送数据子模块内的数据帧并发送。
其中预设时间可以是人为规定的时间例如可以为30ms、1s、2s等,也可以根据现有技术公开的发送一个pause帧解析出的暂停时间。
此外,流量控制模块还被配置为完成全双工/半双工下流量控制的功能。
需要说明的是,本申请提供的千兆单光口服务器适配器也可以配置现有技术公开的MII管理模块、时钟管理模块和寄存器和中断模块,此处不做具体限定。
本申请提供的千兆单光口服务器适配器接收数据和发送数据的流程如下:
发送数据的流程:主机将待发送的数据帧通过PCIE接口暂存至发送缓存模块内,第一发送模块从发送缓存模块内读取数据,并通过PHY接口将待发送的数据帧发送至PHY层控制器。
接收数据的流程如下:连接PHY层控制器的设备通过PHY接口将待发送的数据发送给接收模块,接收模块对接收的数据帧进行解析、处理,将合法帧缓存至接收缓存模块内,主机读取接收缓存模块内存储的数据帧。
本发明提供的第二发送模块发送数据的流程如下:当流量控制模块监测到第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,在预设时间段内,流量控制模块控制第二发送模块读取第二发送数据子模块内缓存的数据帧并发送。
在一些优选的实施例中,当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,流量控制模块将流量状态寄存器内缓存流量控制字段改成1,继续检测,当缓存的数据帧的数量不大于数据帧门限阈值时,将流量控制字段改成0。
主机缓存数据的流程如下:主机读取流量状态寄存器(存储在接收缓存模块)内的流量控制字段,当为1时,表示第一发送数据子模块内缓存的数据帧已满,此时,主机将待发送的数据缓存至第二发送数据子模块内;当流量控制字段变成0时,主机继续将待发送的数据缓存至第一发送数据子模块中。通过以上限定解决了不断发送pause帧导致的传输速率降低的问题。
继续参考图3,本实施例在实施例1的基础上,所述发送缓存模块还包括:
第一发送队列,所述第一发送队列被配置为用于缓存发送缓存描述符;
发送完成队列,所述发送完成队列被配置为用于缓存发送完成后的帧序号及发送状态;
其中,发送队列和发送完成队列为异步FIFO。
发送缓存描述符描述了帧在发送数据FIFO中存储的信息,每个发送缓存描述符的长度为32位,包括4个字段,分别为:帧序号(8比特)、帧长度(12比特)、帧存储首地址(10比特)和保留字段(2比特)。
发送缓存控制子模块,所述发送缓存控制子模块被配置为用于生成待发送数据帧对应的发送缓存描述符;
其中,发送缓存控制子模块还用于对各模块之间数据的读取进行控制和管理。
发送缓存状态队列,当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述发送缓存状态队列被配置为读取发送完成队列内最后一个发送状态为发送成功的帧序号,并记录该帧序号之后的所有帧序号。
发送缓存的流程如下:
当主机有数据要发送时,首先通过总线接口读取第一发送数据子模块中未使用的存储大小。如果剩余发送存储充足,则主机接着读取并保存第一发送数据的当前写指针wptr,并将所要发送的数据写入到第一发送数据子模块中。最后主机将帧序号(由主机产生)、帧长度及所保存的帧存储首指针写入第一发送队列。发送缓存模块随即开始该数据帧的发送,并在发送完成后将帧序号及发送状态信息写入发送完成队列。主机通过读取发送完成队列即可得知每个帧的发送状态。
当发送缓存状态队列读取到第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,读取发送完成队列内最后一个发送状态为发送成功的帧序号,并记录该帧序号之后的所有帧序号,当主机读取到发送缓存状态队列为非空时,读取其内缓存的帧序号,并从读取的首帧开始将数据帧缓存至第二发送数据子模块内。
本发明通过设置第一发送数据子模块和第二发送数据子模块及发送缓存状态队列,当判断出第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,直接将未成功发送的数据帧缓存至第二发送缓存子模块内,在预设时间后通过第二发送模块发送,降低了由于数据溢出存在的丢包情况。
如图4所示,本实施例在实施例1的基础上,所述第二发送数据子模块被配置为用于在预设时间内更新缓存第一发送数据子模块发送的第n个数据帧到最后一数据帧,并当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述第二发送数据子模块还被配置为用于缓存待发送的数据帧;
其中,第一发送数据子模块为读指针可载入的异步FIFO,位宽为32位,深度为1024,工作模式mode设置为0;
更新缓存为第二发送数据子模块缓存第一发送数据子模块发送的数据帧,当第一发送数据子模块发送n帧后,每发送一数据帧,第二发送数据子模块将缓存的首帧更新为第n+1帧,依次类推。其中第二发送数据子模块缓存第一发送数据子模块发送的数据帧的容量一般为1-5ms内发送的数据帧个数。
在一些优选的实施例中,第二发送缓存子模块设置两个缓存区,一个具有固定的容量,用于缓存第一发送数据子模块发送的数据帧,另一个用于缓存主机传输的数据帧。
所述发送缓存模块还包括:
第一发送队列,所述第一发送队列被配置为用于缓存发送缓存描述符;
发送完成队列,所述发送完成队列被配置为用于缓存发送完成后的帧序号及发送状态;
其中,发送队列和发送完成队列为异步FIFO。
发送缓存描述符描述了帧在发送数据FIFO中存储的信息,每个发送缓存描述符的长度为32位,包括4个字段,分别为:帧序号(8比特)、帧长度(12比特)、帧存储首地址(10比特)和保留字段(2比特)。
发送缓存控制子模块,所述发送缓存控制子模块被配置为用于生成待发送数据帧对应的发送缓存描述符;
其中,发送缓存控制子模块还用于对各模块之间数据的读取进行控制和管理。
发送缓存的流程如下:
当主机有数据要发送时,首先通过总线接口读取第一发送数据子模块中未使用的存储大小。如果剩余发送存储充足,则主机接着读取并保存第一发送数据子模块的当前写指针wptr,并将所要发送的数据写入到第一发送数据子模块中。最后主机将帧序号(由主机产生)、帧长度及所保存的帧存储首指针写入第一发送队列。发送缓存模块随即开始该数据帧的发送,当发送到第n帧时,第一发送数据子模块从第n帧开始将数据帧缓存至第二发送缓存子模块内,当主机检测到第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时(通过接收缓存模块读取流量控制模块监测的情况),将待发送的其余数据帧缓存至第二发送数据子模块中。
本发明通过设置第一发送数据子模块和第二发送数据子模块,当判断出第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,直接将未成功发送的数据帧缓存至第二发送缓存子模块内,在预设时间后,通过第二发送模块发送,提高了数据传输的效率,降低了由于数据溢出存在的丢包情况。由于第二发送数据子模块内事先从第n帧开始更新缓存,因此,有效避免了数据溢出过程没有成功发送的数据帧造成的丢包问题。
如图5所示,在一些优选的实施例中,所述发送缓存模块还包括:
第二发送队列,所述第二发送队列被配置为环形队列,用于缓存写指针及对应的帧序号;
第三发送队列,所述第三发送队列被配置为环形队列,用于缓存读指针及对应的帧序号;
所述第一发送队列和第一发送数据子模块均为环形队列,所述第一发送数据子模块、第一发送队列、第二发送队列和第三发送队列各数据结构的深度相等;在一个循环时间段t内,N-1=N1+N2,其中N为第一发送队列存储帧序号的个数,N1为第二发送队列内存储帧序号的个数,N3为第三发送队列存储帧序号的个数;
所述循环时间段为读指针或写指针循环一圈的时间;也可以是人为设定例如可以为1ms、2ms等。
发送状态判断子模块,所述发送状态控制子模块被配置为用于记录第一发送数据子模块内数据帧存储状态,当存储状态接近满时,该位为1,当存储状态接近空时,该位为0;还被配置为用于判断N1和N2的大小,当N1>N2时,此时刻,第一发送数据子模块存储状态接近空,当N1<N2时,此时刻,第一发送数据子模块存储状态接近满,并在第一发送数据子模块内标注上对应标识。
主机读取第一发送数据子模块内的空满标识,判断是否继续发送数据帧,进而降低了数据的溢出现象,并且显著降低了握手机制产生的亚稳态问题。
在一些优选的实施例中,当流量控制模块将流量状态寄存器内缓存流量控制字段改成1,继续检测,当缓存的数据帧的数量不大于数据帧门限阈值时,将流量控制字段改成0。
其中,数据帧门限阈值x按照如下方法计算:
x=(N1+N2-1)/t。
本申请首先对第一发送数据子模块内缓存的数据帧的数量进行控制,根据第一发送数据子模块内缓存的数据帧的情况切换待发送数据的缓存,然后对数据帧门限阈值进行限定,进而解决了由于不断发送pause帧导致的传输速率降低的问题,显著提高了传输速率。
如图6所示,在一些优选的实施例中,所述接收缓存模块包括:
接收数据子模块,所述接收数据子模块被配置为环形队列,用于缓存接收的数据帧供主机读取;
第一接收队列,所述第一接收队列被配置为用于缓存接收缓存控制符;
第二接收队列,所述第二接收队列被配置为环形队列,所述环形队列上存在空和满的标志,还被配置为用于在一个循环时间段t内,缓存接收数据子模块每一读指针和写指针的读写对应的帧序号;
所述接收数据子模块、第一接收队列和第二接收队列的容量和深度相等;
接收空满判断子模块,所述接收空满判断子模块用于读取第二接收队列内的读指针和写指针对应的帧序号,当读指针对应的位置为空,且与其邻近的位置不存在写指针帧序号时,判断第二接收队列内空状态,当写指针对应的位置为满,且与其邻近的位置不存在读指针编号,该环形队列为满状态;
接收缓存控制子模块,所述接收缓存控制子模块被配置为用于生成待接收的数据帧的接收缓存控制符。还被配置为对各模块之间的管理和控制。
其中,接收缓存控制符3个字段:接收帧存放首地址(16比特)、接收帧长度(16比特)及帧接收状态(16比特)。每个接收缓存描述符占用两个32位的存储单元。
主机读取待接收的数据帧的方法为:首先,第一接收队列非空时产生接收中断,主机响应中断,从第一接收队列中读取第一个帧的接收缓存描述符。如果该帧没有发生错误,则主机将帧存储首指针载入到接收数据子模块中,随后开始读取帧数据;如果该帧发生接收错误,则主机继续从第一接收队列中读取下一个接收缓存描述符,并直接将第二帧的存储首指针载入到接收数据子模块中,而不需要将第一个错误帧的数据一一读出。
现有技术公开的接收数据子模块均为指针可载入的异步FIFO,其存在空满标记困难的问题,并且利用握手机制解决空满标记问题还会带来亚稳态问题。现有的环形队列虽然存在空满标志,但是存在判断不准确的问题,由于空满判断的不准确会造成数据的溢出和读空造成数据读取错误,为了克服上述问题,本申请将第一接收数据子模块设置成环形队列,并且增设了第二接收队列和接收空满判断子模块,根据一个循环周期内,读指针和写指针的位置判断空满,提高了判断的准确性,并且克服了握手机制存在的亚稳态问题,避免了数据溢出和数据读空造成的问题。
在一些优选的实施例中,所述流量控制模块还被配置为用于监听正在使用的应用程序,并监听应用程序传输的数据帧的个数,当检测到第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,根据应用程序发送的数据帧的个数决定进行二进制退避算法的应用程序。例如将数据帧发送个数低于主机要发生数据帧个数的70%的应用程序进行二进制退避算法。
通过对各应用程序的监听,根据应用程序发送数据帧个数,对部分应用程序进行二进制退避算法,因此解决了所以应用程序均二进制退避算法而产生的短期吞吐量低和长期延迟方差不稳定的问题。
在一些优选的实施例中,所述接收模块包括地址过滤子模块,所述地址过滤子模块被配置为用于判断本地是否存有与所述数据帧的目的IP对应的过滤规则表,根据过滤规则表中查找对应的过滤规则;所述过滤规则表包括的字段包括源IP地址、源端口、目的端口和传输层协议、第一哈希值和第二哈希值;其中第一哈希值是将IP地址按照固定的位数生成的HASH码;第二哈希值是将IP地址按照随机位数生成的HASH码。
利用固定位数和随机位数生成不同的HASH码,进而实现对IP地址的过滤,提高了过滤效果和准确性。
在一些优选的实施例中,所述流量控制模块内设置有优先发送队列,所述优先发送队列用于缓存Pause帧。
当流量控制模块接收到Pause帧时,将Pause帧缓存至优选队列内。本发明通过在流量控制模块内设置有优先发送队列,克服现有技术存在的Pause帧需要等待发送造成的数据溢出问题。
Claims (7)
1.一种千兆单光口服务器适配器,其特征在于,所述适配器包括:
一个PHY层控制器,
一个MAC层控制器,
一个PCIE接口,连接到所述MAC层控制器上;和
一个千兆光纤端口,所述千兆光纤端口被配置为连接到所述PHY层控制器上;
所述MAC层控制器包括总线接口、接收缓存模块、发送缓存模块、流量控制模块、接收模块、第一发送模块、第二发送模块和PHY接口;
所述总线接口被配置为与PCIE接口连接;
所述接收缓存模块与总线接口连接,被配置为用于对接收的数据帧缓存进行管理;
所述发送缓存模块与总线接口连接,被配置为用于对发送的数据帧缓存进行管理;
所述发送缓存模块包括:
第一发送数据子模块,所述第一发送数据子模块被配置为用于缓存待发送的数据帧;
第二发送数据子模块,当流量控制模块比较出第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述第二发送数据子模块被配置为用于缓存待发送的数据帧;
所述第一发送模块与PHY接口连接,被配置为用于通过PHY接口将第一发送数据子模块内缓存的待发送的数据帧发送至PHY层控制器;
所述第二发送模块与PHY接口连接,被配置为用于通过PHY接口将第二发送数据子模块缓存的待发送的数据帧发送至PHY层控制器;
所述接收模块与PHY接口连接,被配置为用于对数据帧进行解析,将合法帧缓存至接收缓存模块;
所述流量控制模块还被配置为用于实时监测第一发送数据子模块内缓存的数据帧的数量,并与数据帧门限阈值进行比较;还被配置为用于控制第二发送模块在预设时间后,读取第二发送数据子模块内的数据帧并发送;
所述流量控制模块内设置有优先发送队列,所述优先发送队列用于缓存Pause帧;当所述第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,流量控制模块将流量状态寄存器内缓存流量控制字段改成1,继续检测,当缓存的数据帧的数量不大于数据帧门限阈值时,将流量控制字段改成0;
所述第二发送数据子模块被配置为用于在预设时间内更新缓存第一发送数据子模块发送的第n个数据帧到最后一数据帧,并当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述第二发送数据子模块还被配置为用于缓存待发送的数据帧;
所述发送缓存模块还包括:
第一发送队列,所述第一发送队列被配置为用于缓存发送缓存描述符;
发送完成队列,所述发送完成队列被配置为用于缓存发送完成后的帧序号及发送状态;
发送缓存控制子模块,所述发送缓存控制子模块被配置为用于生成待发送数据帧对应的发送缓存描述符。
2.如权利要求1所述的千兆单光口服务器适配器,其特征在于,所述发送缓存模块还包括:
第一发送队列,所述第一发送队列被配置为用于缓存发送缓存描述符;
发送完成队列,所述发送完成队列被配置为用于缓存发送完成后的帧序号及发送状态;
发送缓存控制子模块,所述发送缓存控制子模块被配置为用于生成待发送数据帧对应的发送缓存描述符;
发送缓存状态队列,当第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,所述发送缓存状态队列被配置为读取发送完成队列内最后一个发送状态为发送成功的帧序号,并记录该帧序号之后的所有帧序号。
3.如权利要求1所述的千兆单光口服务器适配器,其特征在于,所述发送缓存模块还包括:
第二发送队列,所述第二发送队列被配置为环形队列,用于缓存写指针及对应的帧序号;
第三发送队列,所述第三发送队列被配置为环形队列,用于缓存读指针及对应的帧序号;
所述第一发送队列和第一发送数据子模块均为环形队列,所述第一发送数据子模块、第一发送队列、第二发送队列和第三发送队列各数据结构的深度相等;在一个循环时间段t内,N-1=N1+N2,其中N为第一发送队列存储帧序号的个数,N1为第二发送队列内存储帧序号的个数,N3为第三发送队列存储帧序号的个数;
发送状态判断子模块,所述发送状态控制子模块被配置为用于记录第一发送数据子模块内数据帧存储状态,当存储状态接近满时,该位为1,当存储状态接近空时,该位为0;还被配置为用于判断N1和N2的大小,当N1>N2时,此时刻,第一发送数据子模块存储状态接近空,当N1<N2时,此时刻,第一发送数据子模块存储状态接近满,并在第一发送数据子模块内标注上对应标识。
4.如权利要求3所述的千兆单光口服务器适配器,其特征在于,所述数据帧门限阈值x按照如下公式计算:
x=(N1+N2-1)/t。
5.如权利要求1所述的千兆单光口服务器适配器,其特征在于,所述接收缓存模块包括:
接收数据子模块,所述接收数据子模块被配置为环形队列,用于缓存接收的数据帧供主机读取;
第一接收队列,所述第一接收队列被配置为用于缓存接收缓存控制符;
第二接收队列,所述第二接收队列被配置为环形队列,所述环形队列上存在空和满的标志,还被配置为用于在一个循环时间段t内,缓存接收数据子模块每一读指针和写指针的读写对应的帧序号;
所述接收数据子模块、第一接收队列和第二接收队列的容量和深度相等;
接收空满判断子模块,所述接收空满判断子模块用于读取第二接收队列内的读指针和写指针对应的帧序号,当读指针对应的位置为空,且与其邻近的位置不存在写指针帧序号时,判断第二接收队列内空状态,当写指针对应的位置为满,且与其邻近的位置不存在读指针编号,该环形队列为满状态;
接收缓存控制子模块,所述接收缓存控制子模块被配置为用于生成待接收的数据帧的接收缓存控制符。
6.如权利要求1所述的千兆单光口服务器适配器,其特征在于,所述流量控制模块还被配置为用于监听正在使用的应用程序,并监听应用程序传输的数据帧的个数,当检测到第一发送数据子模块内缓存的数据帧的数量大于数据帧门限阈值时,根据应用程序发送的数据帧的个数决定进行二进制退避算法的应用程序。
7.如权利要求1所述的千兆单光口服务器适配器,其特征在于,所述接收模块包括地址过滤子模块,所述地址过滤子模块被配置为用于判断本地是否存有与所述数据帧的目的IP对应的过滤规则表,根据过滤规则表中查找对应的过滤规则;所述过滤规则表包括的字段包括源IP地址、源端口、目的端口和传输层协议、第一哈希值和第二哈希值;其中第一哈希值是将IP地址按照固定的位数生成的HASH码;第二哈希值是将IP地址按照随机位数生成的HASH码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010415160.8A CN111600809B (zh) | 2020-05-15 | 2020-05-15 | 一种千兆单光口服务器适配器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010415160.8A CN111600809B (zh) | 2020-05-15 | 2020-05-15 | 一种千兆单光口服务器适配器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111600809A CN111600809A (zh) | 2020-08-28 |
CN111600809B true CN111600809B (zh) | 2023-11-21 |
Family
ID=72191475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010415160.8A Active CN111600809B (zh) | 2020-05-15 | 2020-05-15 | 一种千兆单光口服务器适配器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111600809B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500393B (zh) * | 2021-12-31 | 2024-03-15 | 伟乐视讯科技股份有限公司 | 一种mac一对多个phy模块的通信方法及通信设备 |
CN114915604A (zh) * | 2022-05-23 | 2022-08-16 | 北京计算机技术及应用研究所 | 一种基于fpga的降低网络链路层拥塞的系统与方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002176464A (ja) * | 2000-12-07 | 2002-06-21 | Fuji Xerox Co Ltd | ネットワークインタフェース装置 |
CN104735077A (zh) * | 2015-04-01 | 2015-06-24 | 积成电子股份有限公司 | 一种使用环形缓存和环形队列实现udp高效并发的方法 |
CN105406998A (zh) * | 2015-11-06 | 2016-03-16 | 天津津航计算技术研究所 | 基于fpga的双冗余千兆以太网介质访问控制器ip核 |
CN110602166A (zh) * | 2019-08-08 | 2019-12-20 | 百富计算机技术(深圳)有限公司 | 解决数据重复发送问题的方法、终端设备和存储介质 |
-
2020
- 2020-05-15 CN CN202010415160.8A patent/CN111600809B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002176464A (ja) * | 2000-12-07 | 2002-06-21 | Fuji Xerox Co Ltd | ネットワークインタフェース装置 |
CN104735077A (zh) * | 2015-04-01 | 2015-06-24 | 积成电子股份有限公司 | 一种使用环形缓存和环形队列实现udp高效并发的方法 |
CN105406998A (zh) * | 2015-11-06 | 2016-03-16 | 天津津航计算技术研究所 | 基于fpga的双冗余千兆以太网介质访问控制器ip核 |
CN110602166A (zh) * | 2019-08-08 | 2019-12-20 | 百富计算机技术(深圳)有限公司 | 解决数据重复发送问题的方法、终端设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
董继承等.一种带优先级队列的千兆以太网MAC 设计.《电子设计工程》.2011,第116-119页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111600809A (zh) | 2020-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6065073A (en) | Auto-polling unit for interrupt generation in a network interface device | |
JP4554863B2 (ja) | ハードウェアが削減されたネットワークアダプタ及び通信方法 | |
US8619809B2 (en) | Method, system, and program for managing a speed at which data is transmitted between network adaptors | |
US6662234B2 (en) | Transmitting data from a host computer in a reduced power state by an isolation block that disconnects the media access control layer from the physical layer | |
US9438535B2 (en) | Method and system for a plurality of physical layers for network connection | |
US6516352B1 (en) | Network interface system and method for dynamically switching between different physical layer devices | |
EP1304850B1 (en) | Ethernet device and method for extending ethernet fifo buffer | |
US5732286A (en) | FIFO based receive packet throttle for receiving long strings of short data packets | |
EP1783951B1 (en) | Cable sense mode for intelligent power saving in absence of link pulse | |
US20070047572A1 (en) | Explicit flow control in Gigabit/10 Gigabit Ethernet system | |
CN111600809B (zh) | 一种千兆单光口服务器适配器 | |
US20080209089A1 (en) | Packet-Based Parallel Interface Protocol For A Serial Buffer Having A Parallel Processor Port | |
CN109218154B (zh) | 一种基于fpga的千兆以太网到slip的转换系统 | |
US20050138238A1 (en) | Flow control interface | |
JP2000269997A (ja) | Lan中継交換装置 | |
JP2011239469A (ja) | 低遅延のデータパケット受信及び処理 | |
WO2014166102A1 (zh) | 一种数据处理的方法、装置及系统 | |
CN113810109B (zh) | 一种多协议多业务光纤通道控制器及其工作方法 | |
CN113676386B (zh) | 一种fc-ae-1553总线协议报文通讯系统 | |
EP1988470B1 (en) | Network device and transmission method thereof | |
CN111555800B (zh) | 一种千兆双光口服务器适配器 | |
US7802031B2 (en) | Method and system for high speed network application | |
CN108614792B (zh) | 1394事务层数据包存储管理方法及电路 | |
US20030088796A1 (en) | Communication adapter | |
US20040174819A1 (en) | Physical layer (PHY) with smart cable analyzing (SCA) and apparatus employing the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |