发明名称 一种通用多核网络处理器流量控制的方法
摘要 本发明涉及一种通用多核网络处理器的流量控制方法。该方法为软件线程从内存中读取报文进行处理之前,必须获取报文I/O引擎为其分配的credit,线程每处理发送一个报文需要消耗一个单位的credit信息,当线程没有剩余的credit信息时无法处理报文。线程控制模块用于维护线程的credit信息,判断线程能否处理发送报文,若可以,则从主存中读取报文,并将报文发送到线程处理模块进行处理。同时当credit信息即将消耗完成时,线程控制模块又将从报文I/O引擎获得新的credit信息。本方法可以合理调节各个线程的发送速率,使各个线程公平的共享硬件处理资源,并且不会降低线程的处理能力。
申请公布号 CN103428099B 申请公布日期 2016.02.24
申请号 CN201310364979.6 申请日期 2013.08.21
申请人 中国人民解放军国防科学技术大学 发明人 陈一骄;胡勇庭;李韬;苏金树;吕高锋;孙志刚;崔向东;赵国鸿;毛席龙
分类号 H04L12/801(2013.01)I 主分类号 H04L12/801(2013.01)I
代理机构 湖南省国防科技工业局专利中心 43102 代理人 冯青
主权项 一种通用多核网络处理器的流量控制方法,其特征在于,软件线程从内存中读取报文进行处理之前,获取网络加速引擎为其分配的credit,线程每处理发送一个报文需要消耗一个单位的credit信息,当线程没有剩余的credit信息时无法处理报文;网络加速引擎中设置一个mailbox寄存器组,用于记录分配给线程的credit信息;该方法包括如下步骤:a对每个发送线程的credit进行初始化;b报文I/O引擎将接收的网络报文分派到不同软件线程进行处理;I/O引擎包括:Ingress模块、Egress模块、dispatch模块、DMA RX模块、DMA TX模块与PCIe总线;其中,Ingress模块为报文入口,Egress模块为报文出口,dispatch模块负责将报文送往不同的处理线程,DMA RX模块与DMA TX模块负责硬件直接访问主存,PCIe为系统的总线;c软件处理线程对报文进行处理,将描述符发送给报文I/O引擎;d报文I/O引擎根据描述符从主存中取出报文进行发送;e 报文I/O引擎对线程的credit进行更新;所述步骤a包含了以下步骤:a1:对报文I/O引擎中的mailbox寄存器组进行初始化,每个mailbox寄存器的值都等于报文I/O引擎可以接收的报文描述符数除以线程数;a2:将报文I/O引擎中的mailbox寄存器组的值通知线程;所述步骤b中,dispatch模块可以根据线程处理速率的快慢对报文进行选择性的分派,处理速率快的线程会被分到更多的报文,从而实现线程分派的公平性;也可以根据不同的报文种类将其分派到不同的线程;所述步骤c包含了以下步骤:c1:若线程的credit大于0,线程从主存中提取、处理报文并发送报文描述符,线程的credit值减1;c2:若线程的credit等于0,则等待credit的更新;所述步骤d包含了以下步骤:d1:报文I/O引擎接收并处理报文描述符向内存发送DMA读请求;d2:主存将报文发送给DMA TX模块并发送出去;d3:报文I/O引擎对mailbox寄存器组中的值进行更新;所述步骤e在报文I/O引擎向线程更新credit时,会设置一个合适的时间,使得线程的credit即将使用完成时便获取新的credit,使线程的处理过程不出现中断,用分派到各个线程的报文数减去报文I/O引擎接收到的报文描述符个数可以得知线程中缓存的报文个数,当线程中缓存的报文数目少于一次DMA写操作时间内线程可以处理的最多报文数时,则需要报文I/O引擎向线程更新credit。
地址 410073 湖南省长沙市砚瓦池正街47号