一种软硬协同的可编程拥塞控制系统和方法与流程

文档序号:37639933发布日期:2024-04-18 18:00阅读:9来源:国知局
本发明属于数据中心的数据通信,尤其涉及一种软硬协同的可编程拥塞控制系统和方法。
背景技术
::1、随着ai大模型训练、分布式存储等应用的兴起,rdma技术在数据中心中得到越来越广泛的部署,以实现“高带宽、低时延、高吞吐”等特性。而实现rdma无损网络的关键是一套高效、灵活的拥塞控制算法,用于控制发包速率,实现在保证高吞吐的条件下不丢包。2、为实现上述目标,不同的厂家提出了不同的拥塞控制算法,例如微软提出的基于cnp的dcqcn算法,谷歌提出的基于rtt的swift算法等等,然而现有的rdma网卡通常只支持1种拥塞控制算法,单一的算法难以满足多种不同应用场景中的高性能业务需求,并且由于算法大都是出厂时即已集成,用户难以灵活配置或者二次开发,缺少灵活性和普适性。因而用户迫切希望能在同一张智能网卡或者dpu能提供一套可编程的拥塞控制算法框架和接口,用户可根据不同的应用场景灵活编排和设计算法,实现低成本、可编程、可定制,满足不同的业务需求。技术实现思路1、鉴于以上现有技术的不足,发明的目的在于提供一种软硬协同的可编程拥塞控制系统和方法,提供了上层通用的可编程接口框架和多种事件状态监测接口,支持用户针对不同的业务场景自定义不同的拥塞控制算法。2、本发明的第一方面提供一种软硬协同的可编程拥塞控制系统,包括:3、拥塞节点cp模块,用于感知拥塞状态并标识ecn,当ip报文经过拥塞节点cp模块队列时,若拥塞节点cp模块队列的深度超过拥塞水线,将ip头中的ecn标记位置1;4、通知节点np模块,用于接收和识别拥塞节点cp模块生成的带有ecn标记的数据包,生成拥塞通知cnp报文,并将生成的拥塞通知cnp报文返回发送端;5、响应节点rp模块,用于接收通知节点np模块生成的拥塞通知cnp报文并根据拥塞通知cnp报文的接收情况和业务报文的接收情况调节软件端可编程的拥塞控制算法,再根据cc算法控制硬件端业务报文的发送速率。6、优选的,所述拥塞节点cp模块为交换机。7、优选的,所述通知节点np模块为接收端网卡。8、优选的,所述通知节点np模块生成的拥塞通知cnp报文和正常的业务报文一起发送或通过带外通道发送。9、优选的,所述接收端网卡包括用于发送正常拥塞报文的传输协议引擎和用于处理拥塞通知cnp报文的cnp生成器。10、优选的,所述响应节点rp模块包括cpu和发送端网卡,包括:11、cc algorithm engine模块,运行在cpu内,具有可编程能力,用于根据需求自定义拥塞控制算法;12、mailbox queue模块,运行在cpu内,用于软硬件交互,当硬件接收到拥塞通知cnp报文、确认ack报文或否认nak报文时,将事件状态写入maxilbox中,实现与软件信息交互;13、mailbox record模块,运行在cpu内,用于维护mailbox queue的生产指针和消费指针,实现对mailbox queue模块的管理;14、transport protocol engine模块,运行在网卡内,用于处理业务报文和控制业务报文的发送;15、cc controller模块,运行在网卡内,用于根据每条业务流的粒度,缓存和处理拥塞控制算法事件和业务流上下文信息。16、优选的,所述cc controller模块包括:17、数据包解析模块,主要用于识别和提取拥塞通知cnp报文、确认ack/否认nak报文的有效字段传给event handler模块;18、event handler模块,用于拥塞通知cnp报文、ack事件、丢包和超时事件状态的处理和统计,并将统计结果作为可编程拥塞控制cc算法的输入转发给cpu;19、mailbox processor模块,用于处理cpu内的mailbox的上送;20、db processor模块,用于处理cpu向网卡发送的doorbell信息,所述doorbell信息包括向硬件请求一个flow id、向硬件配置cc算法的参数和向硬件更新流的token;21、cc context table模块,用于缓存和维护每条业务流与拥塞控制相关的上下文信息,包括每条业务流可用的token。22、本发明的第二方面提供一种软硬协同的可编程拥塞控制方法,基于上述系统实现,包括:23、s1,配置响应节点rp模块,并在有新的业务流发包时,初始化响应节点rp模块;24、s2,当有业务报文发送时,响应节点rp模块网卡transport protocol engine模块根据flowid查找cc context table获得token值,根据token值控制可发送的业务报文个数,发送完毕后将剩余的token值更新至cc context table模块中;25、s3,业务报文经过拥塞节点cp模块,若拥塞节点cp模块队列的深度超过拥塞水线,则将经过该队列的报文中的ecn标记置1;26、s4,通知节点np模块收到业务报文后,如正常返回确认ack报文,如丢包返回nck报文;若通知节点np模块识别到报文的ecn标记有效,则触发cnp_generator模块向响应节点rp模块返回拥塞通知cnp报文;27、s5,响应节点rp模块根据一个时间周期内收到的拥塞通知cnp报文个数、ack报文数、nak丢包数、超时事件的个数和rtt测量值,更新flowid业务流的token值,若token值低于设置的拥塞水线值,则cc algorithm engine模块向发送端网卡发送token_db,将更新后的token值发给硬件,实现软硬件协同。28、优选的,s1中配置响应节点rp模块,并在有新的业务流发包时,初始化响应节点rp模块,其中,配置响应节点rp模块包括:29、配置响应节点rp模块cpu内mailbox queue模块,接收发送端网卡上送的报文事件统计信息,并将mailbox queue模块的物理首地址、每个mailbox的大小、mailbox queue模块的队列深度和mailbox record模块的物理地址通过mailbox_cfg_db下发给发送端网卡;30、发送端网卡接收到cpu内mailbox queue模块下发的mailbox_cfg_db后,通过dbprocessor接收和解析mailbox的配置信息,并转发和缓存在mailbox processor模块中;31、将通过响应节点rp模块中cc algorithm engine模块编排和编译自定义的cc算法参数配置,通过cc_param_db下发给发送端网卡;32、发送端网卡接收后通过db processor接收和处理cc算法配置参数并缓存在cccontext table中;完成响应节点rp模块配置;33、其中初始化响应节点rp模块,包括:34、当响应节点rp模块有新的业务流发包时,首先响应节点rp模块中cc algorithmengine模块向网卡下发一个flowid_db,请求flowid并携带流的初始token值;其中,flowid是用于标识流id的唯一id号,cc contex table也基于flowid缓存和索引状态信息;token是cc算法中用于控制发包数量的令牌值;35、响应节点rp模块网卡内cc_contex_table模块给新的业务流分配flowid,将初始token值缓存在表中,并将flowid发送给mailbox processor模块;36、响应节点rp模块网卡内mailbox processor模块将新分配的flowid通过dma写回可用的mailbox里,并更新mb record里的pi指针,完成响应节点rp模块初始化。37、优选的,所述s5中响应节点rp模块根据一个时间周期内收到的拥塞通知cnp报文个数、ack报文数、nak丢包数、超时事件的个数和rtt测量值,更新flowid业务流的token值,若token值低于设置的拥塞水线值,则cc algorithm engine模块向发送端网卡发送token_db,将更新后的token值发给硬件,实现软硬件协同,包括:38、响应节点rp模块内的event handler模块统计一个时间周期内收到的拥塞通知cnp报文个数、ack报文数、nak丢包数、超时事件的个数和rtt测量值并发送给mailboxprocessor模块,mailbox processor模块再将信息写回mailbox queue模块的可用mailbox里;39、响应节点rp模块cpu内的cc algorithm engine模块读取mailbox中携带的不同报文和事件状态的统计信息作为cc算法的输入,根据算法模型更新对应flowid业务流的token值,并更新mailbox的ci指针;40、当flowid的token值更新后,响应节点rp模块cpu内cc algorithm engine模块向发送端网卡发送token_db,将更新后的token值发给硬件;41、db_pocessor模块接收后解析flow id和token值并发送给cc_context_table模块,cc_context_table模块将收到的token值缓存在表中;42、当transport protocol模块需要发送数据包时,transport protocol模块读取的cc context table模块中的token值,或者由cc context table模块通过mailbox_processor模块向cc algorithm engine模块发送最新的token值,若token值低于设置的拥塞水线值,则cc algorithm engine模块向发送端网卡发送token_db,将更新后的token值发给硬件,实现软硬件协同。43、本发明有益效果如下:44、采用本发明的一种软硬协同的可编程拥塞控制系统和方法后,具有如下优势:45、提供了通用的可编程接口,可提供多种事件状态监测接口,支持用户自定义算法,针对不同的业务场景开发不同的拥塞控制算法,例如cnp的拥塞控制、基于rtt的拥塞控制、基于丢包率的拥塞控制。46、提供的可编程拥塞控制系统可提供带外的cnp报文和rtt测量结果,实现传输协议无关的通过可编程cc框架,可适用于基于udp/tcp传输网络,也可以用于基于rdma的无损网络。47、灵活的软硬件协同设计,充分发挥软硬件优势实现高带宽、低时延、精细化拥塞控制。部署在网卡硬件中的event_handler模块充分利用硬件的线速处理能力,实现高带宽下cnp报文和业务报文状态的高效识别和状态聚合,并上送cpu。48、部署在cpu侧的cc_algorithm_engine提供灵活的软件可编程能力,以硬件上送的不同事件状态信息作为算法输入而无需将算力消耗在报文识别解析、状态聚合等事务上,有效释放算力以提供更高的业务流的并发处理能力。49、高效的软硬件交互机制,通过通用的mailbox和多种db通知机制,实现软硬件状态的实时同步。基于时间窗口的事件状态统计有效地压缩了软硬件状态同步频次,提高软硬件通信效率。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1