一种报文接收方法及网络设备的制造方法

文档序号:9352712阅读:866来源:国知局
一种报文接收方法及网络设备的制造方法
【技术领域】
[0001] 本发明实施例涉及通信技术领域,尤其涉及一种报文接收方法及网络设备。
【背景技术】
[0002] 随着多核技术的发展,具有多个中央处理器(Central Processing Unit,CPU)内 核的网络设备,可以通过分流功能将从外部设备接收到的数据报文分流到接收接口的多个 接收队列中,使得每个CPU内核对应接收一个接收队列的报文,从而达到多核接收同一接 收接口的报文的目的。通常,每个接收队列对应一种类型的报文,当某种类型报文的流量持 续突发时,通过单个CPU内核从当前接收队列接收该类型的报文时,容易出现丢包现象,很 难满足网络设备对接收性能的要求,因而需要通过多核来接收该接收队列的报文。
[0003] 任一 CPU内核从某一接收队列接收报文时都需要访问该接收队列的缓冲区描述 符(Buffer Description,BD)构成的BD环数据结构,该BD环属于临界资源,可以通过自旋 锁进行保护。在任一 CPU内核访问BD环之前,可以通过获取自旋锁来阻止其它CPU内核对 BD环的访问,并在完成报文接收后释放自旋锁,以解除对BD环的锁定。为了加快报文接收, 网络设备通常采用软件轮询方式从接收队列接收报文,在该种情况下,参见图1所示的多 核竞争自旋锁的示意图,各CPU内核通过竞争自旋锁来访问BD环以从接收队列接收报文; 并且,当其中一个CPU内核获取到自旋锁并进行报文接收时,其它CPU内核仍会频繁地竞争 自旋锁,从而使得系统资源开销较大,导致系统性能下降。

【发明内容】

[0004] 本发明实施例提供一种报文接收方法及网络设备,能够解决现有技术中通过多个 CPU内核从同一接收队列接收报文时,由于频繁竞争自旋锁导致的系统资源开销大,系统性 能下降的问题。
[0005] 为达到上述目的,本发明的实施例采用如下技术方案:
[0006] 第一方面,提供一种报文接收方法,网络设备的中央处理器CPU内核包括宿主核 和辅助核,任一报文接收队列对应一个宿主核和至少一个辅助核,所述方法包括:
[0007] 通过所述宿主核从所述接收队列接收报文,所述宿主核持有自旋锁;
[0008] 在所述宿主核完成本轮报文的接收并进行报文处理时,若确定满足预设条件,则 由所述辅助核竞争持有所述自旋锁,并通过获取到所述自旋锁的辅助核从所述接收队列接 收报文;
[0009] 在所述宿主核完成报文处理后,由所述宿主核优先竞争并持有所述自旋锁。
[0010] 结合第一方面,在第一方面的第一种可能的实现方式中,所述确定满足预设条件 包括:
[0011] 预设参考值;
[0012] 根据所述宿主核本轮从所述接收队列接收到的报文数量确定档位;
[0013] 根据所述档位以及状态机的当前状态,确定所述状态机的将来状态并结合预设步 长机制调整所述参考值;
[0014] 若所述参考值落入预设范围,则确定满足预设条件。
[0015] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式 中,所述根据所述宿主核本轮从所述接收队列接收到的报文数量确定档位包括:
[0016]当所述宿主核本轮从所述接收队列接收到的报文数量小于第一预设值时,确定所 述档位为第一档;
[0017]当所述宿主核本轮从所述接收队列接收到的报文数量大于或者等于所述第一预 设值且小于第二预设值时,确定所述档位为第二档;
[0018]当所述宿主核本轮从所述接收队列接收到的报文数量大于或者等于所述第二预 设值且小于第三预设值时,确定所述档位为第三档;
[0019]当所述宿主核本轮从所述接收队列接收到的报文数量大于或者等于第三预设值 且小于或者等于第四预设值时,确定所述档位为第四档。
[0020] 结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式 中,所述根据所述宿主核本轮从所述接收队列接收到的报文数量确定的档位以及状态机的 当前状态,确定所述状态机的将来状态包括:
[0021] 当所述档位为第一档时,确定所述状态机的将来状态为空闲;
[0022] 当所述档位为第二档时,确定所述状态机的将来状态与所述状态机的当前状态一 致;
[0023]当所述档位为第三档时,若所述状态机的当前状态为繁忙,则确定所述状态机的 将来状态为趋向空闲;若所述状态机的当前状态为保持、空闲、趋向繁忙或趋向空闲,则确 定所述状态机的当前状态为空闲;
[0024]当所述档位为第四档时,若所述状态机的当前状态为空闲,则确定所述状态机的 将来状态为趋向繁忙;若所述状态机的当前状态为保持、繁忙、趋向繁忙、或趋向空闲,则确 定所述状态机的将来状态为繁忙。
[0025] 结合第一方面的第二或第三种可能的实现方式,在第一方面的第四种可能的实现 方式中,根据所述宿主核本轮从所述接收队列接收到的报文数量确定的档位以及状态机的 当前状态,并结合预设步长机制调整所述参考值包括:
[0026]当所述档位为第一档时,将所述参考值增加第一预设步长;
[0027]当所述档位为第二档时,保持所述参考值不变;
[0028]当所述档位为第三档时,若所述状态机的当前状态为保持或空闲,则将所述参考 值增加第二预设步长;若所述状态机的当前状态为繁忙、趋向繁忙或趋向空闲,则保持所述 参考值不变;
[0029]当所述档位为第四档时,若所述状态机的当前状态为保持、繁忙或趋向繁忙,则将 所述参考值减小第三预设步长;若所述状态机的当前状态为空闲或趋向空闲,则保持所述 参考值不变;
[0030] 对所述参考值进行校正;
[0031] 其中,所述第一预设步长、所述第二预设步长和所述第三预设步长为正数,所述第 四预设步长大于所述第一预设步长和所述第二预设步长。
[0032] 第二方面,提供一种网络设备,所述网络设备的中央处理器CPU内核包括宿主核 和辅助核,任一报文接收队列对应一个宿主核和至少一个辅助核,所述网络设备包括:
[0033] 接收单元,用于通过所述宿主核从所述接收队列接收报文,所述宿主核持有自旋 锁;
[0034] 处理单元,用于在所述宿主核完成本轮报文的接收并进行报文处理时,若确定满 足预设条件,则由所述辅助核竞争持有所述自旋锁,并通过获取到所述自旋锁的辅助核从 所述接收队列接收报文;
[0035] 所述处理单元还用于,在所述宿主核完成报文处理后,由所述宿主核优先竞争并 持有所述自旋锁。
[0036] 结合第二方面,在第二方面的第一种可能的实现方式中,所述处理单元具体用 于:
[0037] 预设参考值;
[0038] 根据所述宿主核本轮从所述接收队列接收到的报文数量确定档位;
[0039] 根据所述档位以及状态机的当前状态,确定所述状态机的将来状态并结合预设步 长机制调整所述参考值;
[0040] 若所述参考值落入预设范围,则确定满足预设条件。
[0041] 结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式 中,所述处理单元具体用于:
[0042]当所述宿主核本轮从所述接收队列接收到的报文数量小于第一预设值时,确定所 述档位为第一档;
[0043]当所述宿主核本轮从所述接收队列接收到的报文数量大于或者等于所述第一预 设值且小于第二预设值时,确定所述档位为第二档;
[0044]当所述宿主核本轮从所述接收队列接收到的报文数量大于或者等于所述第二预 设值且小于第三预设值时,确定所述档位为第三档;
[0045]当所述宿主核本轮从所述接收队列接收到的报文数量大于或者等于第三预设值 且小于或者等于第四预设值时,确定所述档位为第四档。
[0046] 结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式 中,所述处理单元具体用于:
[0047]当所述档位为第一档时,确定所述状态机的将来状态为空闲;
[0048]当所述档位为第二档时,确定所述状态机的将来状态与所述状态机的当前状态一 致;
[0049]当所述档位为第三档时,若所述状态机的当前状态为繁忙,则确定所述状态机的 将来状态为趋向空闲;若所述状态机的当前状态为保持、空闲、趋向繁忙或趋向空闲,则确 定所述状态机的当前状态为空闲;
[0050]当所述档位为第四档时,若所述状态机的当前状态为空闲,则确定所述
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1