一种双帧头自适应检测与VLAN硬件分流方法及系统与流程
本发明涉及fpga高速数据采集与传输,尤其涉及一种双帧头自适应检测与vlan硬件分流方法及系统。
背景技术:
1、在fpga高速多通道数据采集场景中,fpga将来自多个通道的串行数据封装为帧格式后,通过pcie dma写入主机内存。上层软件需要按照帧类型将数据分发至不同的消费进程进行处理。在gb/s级数据吞吐量下,纯软件方案面临严峻的cpu占用瓶颈。
2、现有技术主要存在以下问题:
3、第一,传统fpga帧检测逻辑仅支持单一固定长度的帧头。当不同通道使用不同帧头长度时,传统方案需要预先烧写不同的fpga比特流或重新配置fpga逻辑,无法在运行期动态切换。部分方案采用额外的模式选择寄存器位来区分不同帧头宽度,但这增加了硬件资源消耗,且存在模式寄存器值与实际帧头长度不一致的软件配置错误风险。此外,部分方案采用fpga收发器内置的字对齐器进行可编程模式匹配,但字对齐器属于物理层功能,其模式检测宽度受限于收发器架构,且模式在编译时固定,不支持运行期通过软件写寄存器切换应用层帧头宽度。
4、第二,传统fpga数据采集方案中,fpga通常仅将原始接收数据写入单一环形缓冲区,帧类型的解析与分流完全由上层软件完成。当存在多个消费速率不等的接收端时,慢消费者会在环形缓冲区中形成头线阻塞,即后续帧即使属于快速消费者也会被堵塞在慢消费者尚未消费的帧之后,导致整体系统吞吐受限于最慢的消费者。
技术实现思路
1、本发明提出了一种双帧头自适应检测与vlan硬件分流方法及系统,旨在解决现有技术中存在的在fpga高速多通道数据采集场景中,如何在无需增加额外硬件寄存器和逻辑资源的前提下,实现帧头长度的运行期即时切换的技术问题。
2、第一方面,本发明提供了一种双帧头自适应检测与vlan硬件分流方法,包括:
3、在fpga中设置第一帧头配置值与第二帧头配置值,以所述第二帧头配置值是否为零作为模式判据:若所述第二帧头配置值为零,则以第一帧头宽度进行帧起始检测,仅匹配所述第一帧头配置值;若所述第二帧头配置值为非零,则以第二帧头宽度进行帧起始检测,要求所述第一帧头配置值与所述第二帧头配置值级联匹配;
4、帧起始命中后,由fpga硬件从帧数据流中提取分类标识字段,将所述分类标识字段连同帧数据地址偏移组装为索引条目,通过独立索引dma通道写入主机内存;
5、主机端驱动软件从所述索引条目中读取所述分类标识字段,依据可编程规则集确定帧所属虚拟局域网,将包含帧数据地址偏移的帧描述符投递至对应虚拟局域网的独立帧队列,所述帧描述符指向共享物理环形接收缓冲区中的帧载荷数据且不拷贝帧数据本身;
6、全局读指针由所有活跃虚拟局域网队列的消费进度中的最小值决定推进,被暂停的虚拟局域网不参与所述最小值的计算。
7、进一步地,所述级联匹配要求所述第一帧头配置值与所述第二帧头配置值在同一数据节拍内的连续两个槽位同时匹配,且所述第一帧头配置值不得落在该数据节拍的末槽位。
8、进一步地,从第一帧头宽度模式切换至第二帧头宽度模式时,用于字段提取的所有偏移值统一增加补偿值,所述补偿值等于所述第二帧头宽度与所述第一帧头宽度之差,所有偏移值均以帧头起始字节为基准零点。
9、进一步地,所述索引条目包含帧头配置值、帧序号、帧数据地址偏移以及多个用户可配置的提取字段,所述多个提取字段中的预定位置为所述分类标识字段;所述索引环形缓冲区与所述共享物理环形接收缓冲区位于同一大页内存的不同偏移区段,共享同一pcie基地址寄存器翻译窗口。
10、进一步地,所述可编程规则集包含多条规则,每条规则包含匹配值、掩码和虚拟局域网标识,路由判决时按顺序扫描规则集,若所述分类标识与当前规则的匹配值在所述掩码指定的位上相等则命中该规则,以该规则的虚拟局域网标识作为路由结果;若遍历全部规则均未命中则将帧丢弃;若规则的虚拟局域网标识为预定丢弃值,则将该帧丢弃。
11、进一步地,投递至对应虚拟局域网的独立帧队列包括:检查目标虚拟局域网的暂停状态标志,若处于暂停状态则直接丢弃该帧且不阻塞所述全局读指针的推进;若处于非暂停状态则执行投递;若目标虚拟局域网无消费者进程则直接丢弃该帧;所述暂停状态标志通过原子操作进行读写以保证并发安全。
12、进一步地,全局读指针的推进包括:遍历所有虚拟局域网,对每个处于活跃状态且非暂停状态的虚拟局域网计算消费进度相对于当前读指针的距离,取所有距离中的最小值作为推进步长;若所述推进步长超过硬件写指针相对于当前读指针的距离,则将所述推进步长钳位于硬件写指针的距离。
13、进一步地,在无任何虚拟局域网被消费时自动进入无消费者模式,驱动仅推进读指针紧跟写指针以释放缓冲空间,不执行帧解析与路由投递;当任一虚拟局域网首次被消费后系统从所述无消费者模式单调切换至有消费者模式,不再回退。
14、进一步地,主机端驱动软件通过ioctl接口在运行期整体替换所述可编程规则集,替换操作原子生效;通过所述ioctl接口对任意虚拟局域网执行动态暂停操作后,后续命中该虚拟局域网的帧在软件路由层被丢弃而不进入队列;通过所述ioctl接口执行恢复操作后,恢复对该虚拟局域网的帧的正常投递;所述暂停操作不停止fpga硬件dma对所述共享物理环形接收缓冲区的持续写入。
15、第二方面,本发明提供了一种双帧头自适应检测与vlan硬件分流系统,所述系统用于执行所述方法,包括:
16、fpga硬件层,包含帧头检测模块和字段提取模块,所述帧头检测模块包含第一帧头配置寄存器和第二帧头配置寄存器,以所述第二帧头配置寄存器的值是否为零控制帧头检测逻辑在第一帧头宽度模式与第二帧头宽度模式之间切换,所述字段提取模块在帧起始命中后从帧数据流中提取至少包含分类标识字段在内的多个字段并组装为索引条目;
17、pcie dma传输层,包含主数据dma通道和独立索引dma通道,所述主数据dma通道将帧载荷数据写入主机内存中的共享物理环形接收缓冲区,所述独立索引dma通道将所述索引条目写入主机内存中的索引环形缓冲区;
18、主机内核驱动层,包含索引解析线程、虚拟局域网路由规则引擎和每虚拟局域网队列管理模块,所述索引解析线程从所述索引环形缓冲区读取索引条目并提取分类标识字段,所述虚拟局域网路由规则引擎依据可编程规则集确定帧所属虚拟局域网,所述每虚拟局域网队列管理模块将包含共享缓冲区地址偏移的帧描述符投递至对应队列而不拷贝帧载荷数据;
19、全局读指针协同推进模块,用于取所有活跃且非暂停虚拟局域网队列消费进度中的最小值以更新fpga硬件读指针寄存器;
20、用户态接口层,用于提供所述规则集的运行期替换、虚拟局域网的动态暂停或恢复、以及统计信息读取功能。
21、本发明的技术效果是:
22、(1)利用fpga硬件中第二帧头配置寄存器的写入值的零或非零状态作为隐含哨兵,控制帧头检测逻辑在第一宽度模式与第二宽度模式之间切换,无需额外的模式选择寄存器或逻辑资源,同时消除了显式模式寄存器方案中模式值与实际帧头长度不一致的配置错误风险;
23、(2)由fpga硬件在帧检测的同时从帧的指定字节偏移处提取分类标识字段,并随索引条目经独立dma通道递交主机,使分类标识提取完全在硬件数据通路中零延迟完成,避免了高速率下cpu逐帧扫描数据流的性能瓶颈;
24、(3)所有虚拟局域网的帧载荷数据共享同一物理环形接收缓冲区,每个虚拟局域网维护一个独立帧队列且仅存储描述符而不拷贝帧数据,消除了帧数据的多次内存拷贝;全局读指针由所有活跃虚拟局域网队列的消费进度中的最小值决定推进,在共享物理缓冲区上实现了多消费者安全隔离;
25、(4)支持对任意虚拟局域网执行运行期动态暂停,被暂停的虚拟局域网不参与全局读指针的最小值推进计算,使慢消费者的阻塞效应被隔离在其自身暂停域内,快速消费者完全不受影响,从根本上消除了头线阻塞。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com