专利名称:转发资源访问方法和路由系统的制作方法
技术领域:
本发明涉及数据通信技术,特别涉及转发资源访问方法和路由系统。
背景技术:
目前,路由系统的多核化非常普遍,其中,在多核路由系统中,至少有一个核作为主核,运行操作系统,用于负责管理和建立转发资源,剩余的核为从核,不运行操作系统,用于负责利用所述转发资源进行报文转发。为了提高多核路由系统的转发性能,通过非对称多处理(AMP =Asymmertric Multiprocessing)模式处理路由系统的多核是优先选择。通常,在AMP模式下,需要区分转发资源的写者和读者,其中,由于主核用于负责管理和建立转发资源,其可作为转发资源的写者,而从核用于负责利用转发资源进行报文转发,其可作为转发资源的读者。在AMP模式下,使用传统的自旋锁(Spin-Lock)控制多核对转发资源互斥访问。 但是,该互斥访问会影响多核路由系统的转发性能,特别是在整个路由系统中核的数量非常多时,该影响会非常明显。其中,互斥访问影响多核路由系统的转发性能主要是由于自旋锁所在cache区域频繁更新造成的,而自旋锁所在cache区域频繁更新的原因是针对每一核,不论是主核还是从核,当其访问转发资源时,就需要将自旋锁更新至自身的cache区域中,并更新该自旋锁的取值,而由于多核对cache —致性的探听,则会导致每次更新cache 的操作都会使其他核的cache区域无效,这使得其他核下次更新自旋锁时需要从内存读取相关内容,比如,如果是主核下次更新自旋锁时从内存读取相关内容,则会降低主核管理转发资源的效率,而如果是从核下次更新自旋锁时从内存读取相关内容,则会降低从核转发报文的效率;并且,自旋锁的更新通常是基于报文的,由于报文发送的频度非常高,从而导致自旋锁更新的频度也非常高,大大浪费资源。
发明内容
本发明提供了转发资源访问方法和路由系统,以避免采用传统自旋锁控制多核对转发资源互斥访问带来的问题。本发明提供的技术方案包括—种转发资源访问方法,该方法应用于包含主核和从核的多核路由系统中,该方法包括配置针对整个转发资源表的互斥访问锁,所述互斥访问锁中存在各个从核对应的请求位和应答位;每一从核检测所述互斥访问锁中自身对应的请求位当前是否取值为第一设定值, 如果否,则利用所述转发资源表中的转发资源执行报文转发处理,如果是,则在所述互斥访问锁中自身对应的应答位当前未取值为第二设定值时,设置所述互斥访问锁中自身对应的应答位取值为第二设定值,并返回检测所述互斥访问锁中自身对应的请求位当前是否取值为第一设定值;
所述主核在向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,之后设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并检测所述互斥访问锁中各个从核对应的应答位当前是否被该各个从核设置为第二设定值,如果是,则执行向所述转发资源表写转发资源的操作,并在写转发资源完成后,清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值;如果否,则返回检测所述互斥访问锁中各个从核对应的应答位是否被该各个从核设置为第二设定值。一种路由系统,该路由系统包括主核和多个从核;其关键在于,该路由系统还包括互斥访问锁配置单元;所述互斥访问锁配置单元用于配置针对整个转发资源表的互斥访问锁,所述互斥访问锁中存在各个从核对应的请求位和应答位;每一从核包括第一检测单元、转发单元和第一设置单元;其中,所述第一检测单元,用于检测所述互斥访问锁中自身所在从核对应的请求位当前是否取值为第一设定值;所述转发单元,用于在所述第一检测单元的检测结果为否时,利用所述转发资源表中的转发资源执行报文转发处理;所述第一设置单元,用于在所述第一检测单元的检测结果为是时,在所述互斥访问锁中自身所在从核对应的应答位当前未取值为第二设定值时,设置所述互斥访问锁中自身所在从核对应的应答位取值为第二设定值,并触发所述第一检测单元继续执行检测;所述主核包括清除单元、第二设置单元、第二检测单元和写单元;其中,所述清除单元,用于在其所处的主核向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,并发送设置通知给所述第二设置单元;以及在接收到清除通知后,清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值;所述第二设置单元,用于接收到所述设置通知后,设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并发送检测通知给所述第二检测单元;所述第二检测单元,用于接收到所述检测通知后,检测所述互斥访问锁中各个从核对应的应答位当前是否被该各个从核设置为第二设定值,如果检测结果为否,则继续执行检测;所述写单元,用于在所述第二检测单元的检测结果为是时,向所述转发资源表写转发资源的操作,并在写转发资源完成后,发送清除通知给所述清除单元。由以上技术方案可以看出,本发明中,通过主核在向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,之后设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,可以看出该主核对转发资源的写访问需要互斥,但是,该互斥并不需要刷新所述互斥访问锁对应的cache区域,而只是设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并且,针对每一从核,该每一从核仅根据所述互斥访问锁中自身对应的请求位当前未取值为第一设定值时,利用所述转发资源表中的转发资源执行报文转发处理,即从核对转发资源的读访问无需互斥,这显然与传统自旋锁控制转发资源互斥访问不同,完全避免了采用传统自旋锁控制多核对转发资源互斥访问带来的问题。
图1为本发明实施例提供的流程图;图2为本发明实施例提供的路由系统结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明提供的流程可包括图1所示的步骤参见图1,图1为本发明实施例提供的流程图。该流程应用于包含主核和从核的多核路由系统中,其中,主核运行操作系统,用于负责管理和建立转发资源,从核不运行操作系统,用于负责利用所述转发资源进行报文转发。如图1所示,该流程可包括以下步骤步骤101,配置针对整个转发资源表的互斥访问锁,所述互斥访问锁中存在各个从核对应的请求位和应答位。这里,转发资源表用于存放转发资源,配置针对整个转发资源表的互斥访问锁,即为所有转发资源配置一个互斥访问锁。如果应用于至少一个转发资源写者、多个转发资源读者的AMP模式下,则该AMP模式下,所有转发资源只有一个互斥访问锁,并非针对每一转发资源分别配置一个互斥访问锁。以下为便于描述,可简称互斥访问锁为biglock。步骤102,每一从核检测biglock中自身对应的请求位当前是否取值为第一设定值,如果否,则利用所述转发资源表中的转发资源执行报文转发处理,如果是,则在biglock 中自身对应的应答位当前未取值为第二设定值时,设置biglock中自身对应的应答位取值为第二设定值,并返回检测biglock中自身对应的请求位当前是否取值为第一设定值。本步骤102中,每一从核检测所述互斥访问锁中自身对应的请求位当前是否取值为第一设定值的操作可在完成一个报文的转发后执行,也可在开始一个报文的转发之前执行,本发明并不具体限定。步骤103,主核在向所述转发资源表写转发资源时先清除biglock中各个从核对应的应答位所取的第二设定值,之后设置biglock中各个从核对应的请求位取值为第一设定值,并检测biglock中各个从核对应的应答位当前是否被该各个从核设置为第二设定值,如果是,则执行向所述转发资源表写转发资源的操作,如果否,则返回检测biglock中各个从核对应的应答位是否被该各个从核设置为第二设定值。在步骤102和步骤103中,第一设定值、第二设定值取值无关,两者可以相等,比如均为1,也可以不等,比如一个取值为0,另一个取值为1,本发明并不具体限定。另外,本步骤103中,所述主核清除biglock中各个从核对应的应答位所取的第二设定值包括所述主核更新biglock中各个从核对应的应答位所取的第二设定值为其他值。所述主核清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值包括所述主核更新所述互斥访问锁中各个从核对应的请求位所取的第一设定值为其他值还有,本步骤103中,主核之所以设置所述互斥访问锁中各个从核对应的请求位
6取值为第一设定值,目的是为了表示该主核当前正请求biglock,这样,防止从核也请求 biglock,实现主核写转发资源的互斥访问。而当主核检测出biglock中各个从核对应的应答位被该各个从核设置为第二设定值时,则表示主核成功获取到biglock,可以执行向所述转发资源表写转发资源的操作。至此,完成图1所示的流程。
从图1所示的流程可以看出,本发明中,从核对转发资源的读访问无需互斥,仅需要主核对转发资源的写访问互斥,而该互斥并不需要对biglock对应的cache区域频繁刷新,这完全避免了采用传统自旋锁控制多核对转发资源互斥访问带来的问题。以上对本发明提供的方法进行描述,下面对本发明提供的路由系统进行描述参见图2,图2为本发明实施例提供的路由系统结构图。如图2所示,该路由系统包括主核和多个从核;其关键在于,该路由系统还包括互斥访问锁配置单元。其中,所述互斥访问锁配置单元用于配置针对整个转发资源表的互斥访问锁,而所述互斥访问锁中存在各个从核对应的请求位和应答位;而每一从核,如图2所示,可包括以下单元第一检测单元、转发单元和第一设置单元;其中,所述第一检测单元,用于检测所述互斥访问锁中自身所在从核对应的请求位当前是否取值为第一设定值;其中,所述第一检测单元检测所述互斥访问锁中自身所在从核对应的请求位当前是否取值为第一设定值的操作是在所述转发单元完成一个报文的转发后执行,或者是在所述转发单元开始一个报文的转发之前执行,本发明并不限定。所述转发单元,用于在所述第一检测单元的检测结果为否时,利用所述转发资源表中的转发资源执行报文转发处理;所述第一设置单元,用于在所述第一检测单元的检测结果为是时,在所述互斥访问锁中自身所在从核对应的应答位当前未取值为第二设定值时,设置所述互斥访问锁中自身所在从核对应的应答位取值为第二设定值,并触发所述第一检测单元继续执行检测;至于所述主核,如图2所示,该主核可包括以下单元清除单元、第二设置单元、第二检测单元和写单元;其中,所述清除单元,用于在其所处的主核向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,并发送设置通知给所述第二设置单元;以及在接收到清除通知后,清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值;所述第二设置单元,用于接收到所述设置通知后,设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并发送检测通知给所述第二检测单元;所述第二检测单元,用于接收到所述检测通知后,检测所述互斥访问锁中各个从核对应的应答位当前是否被该各个从核设置为第二设定值,如果检测结果为否,则继续执行检测;所述写单元,用于在所述第二检测单元的检测结果为是时,向所述转发资源表写转发资源的操作,并在写转发资源完成后,发送清除通知给所述清除单元。需要说明的是,本发明中,所述第一设定值和所述第二设定值相同,或者不同。另外,本发明中,所述清除单元清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值可包括所述清除单元更新所述互斥访问锁中各个从核对应的应答位所取的第二设定值为其他值;所述清除单元清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值包括所述清除单元更新所述互斥访问锁中各个从核对应的请求位所取的第一设定值为其他值。至此,完 成本发明提供的路由系统描述。由以上技术方案可以看出,本发明中,通过主核在向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,之后设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,可以看出该主核对转发资源的写访问需要互斥,但是,该互斥并不需要刷新所述互斥访问锁对应的cache区域,而只是设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并且,针对每一从核,该每一从核仅根据所述互斥访问锁中自身对应的请求位当前不取值为第一设定值时,利用所述转发资源表中的转发资源执行报文转发处理,即从核对转发资源的读访问无需互斥,这显然与传统自旋锁控制转发资源互斥访问不同,完全避免了采用传统自旋锁控制多核对转发资源互斥访问带来的问题。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种转发资源访问方法,该方法应用于包含主核和从核的多核路由系统中,其特征在于,该方法包括配置针对整个转发资源表的互斥访问锁,所述互斥访问锁中存在各个从核对应的请求位和应答位;每一从核检测所述互斥访问锁中自身对应的请求位当前是否取值为第一设定值,如果否,则利用所述转发资源表中的转发资源执行报文转发处理,如果是,则在所述互斥访问锁中自身对应的应答位当前未取值为第二设定值时,设置所述互斥访问锁中自身对应的应答位取值为第二设定值,并返回检测所述互斥访问锁中自身对应的请求位当前是否取值为第一设定值;所述主核在向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,之后设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并检测所述互斥访问锁中各个从核对应的应答位当前是否被该各个从核设置为第二设定值,如果是,则执行向所述转发资源表写转发资源的操作,并在写转发资源完成后,清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值;如果否,则返回检测所述互斥访问锁中各个从核对应的应答位当前是否被该各个从核设置为第二设定值。
2.根据权利要求1所述的方法,其特征在于,每一从核检测所述互斥访问锁中自身对应的请求位当前是否取值为第一设定值的操作是在完成一个报文的转发后执行,或者是在开始一个报文的转发之前执行。
3.根据权利要求1所述的方法,其特征在于,所述第一设定值和所述第二设定值无关, 两者相同或者不同。
4.根据权利要求1所述的方法,其特征在于,所述主核清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值包括所述主核更新所述互斥访问锁中各个从核对应的应答位所取的第二设定值为其他值;所述主核清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值包括所述主核更新所述互斥访问锁中各个从核对应的请求位所取的第一设定值为其他值。
5.一种路由系统,该路由系统包括主核和多个从核;其特征在于,该路由系统还包括 互斥访问锁配置单元;所述互斥访问锁配置单元用于配置针对整个转发资源表的互斥访问锁,所述互斥访问锁中存在各个从核对应的请求位和应答位;每一从核包括第一检测单元、转发单元和第一设置单元;其中,所述第一检测单元,用于检测所述互斥访问锁中自身所在从核对应的请求位当前是否取值为第一设定值;所述转发单元,用于在所述第一检测单元的检测结果为否时,利用所述转发资源表中的转发资源执行报文转发处理;所述第一设置单元,用于在所述第一检测单元的检测结果为是时,在所述互斥访问锁中自身所在从核对应的应答位当前未取值为第二设定值时,设置所述互斥访问锁中自身所在从核对应的应答位取值为第二设定值,并触发所述第一检测单元继续执行检测;所述主核包括清除单元、第二设置单元、第二检测单元和写单元;其中,所述清除单元,用于在其所处的主核向所述转发资源表写转发资源时先清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值,并发送设置通知给所述第二设置单元;以及在接收到清除通知后,清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值;所述第二设置单元,用于接收到所述设置通知后,设置所述互斥访问锁中各个从核对应的请求位取值为第一设定值,并发送检测通知给所述第二检测单元;所述第二检测单元,用于接收到所述检测通知后,检测所述互斥访问锁中各个从核对应的应答位当前是否被该各个从核设置为第二设定值,如果检测结果为否,则继续执行检测;所述写单元,用于在所述第二检测单元的检测结果为是时,向所述转发资源表写转发资源的操作,并在写转发资源完成后,发送清除通知给所述清除单元。
6.根据权利要求5所述的路由系统,其特征在于,所述第一检测单元检测所述互斥访问锁中自身所在从核对应的请求位当前是否取值为第一设定值的操作是在所述转发单元完成一个报文的转发后执行,或者是在所述转发单元开始一个报文的转发之前执行。
7.根据权利要求5所述的路由系统,其特征在于,所述第一设定值和所述第二设定值无关,两者相同,或者不同。
8.根据权利要求5所述的路由系统,其特征在于,所述清除单元清除所述互斥访问锁中各个从核对应的应答位所取的第二设定值包括所述清除单元更新所述互斥访问锁中各个从核对应的应答位所取的第二设定值为其他值;所述清除单元清除所述互斥访问锁中各个从核对应的请求位所取的第一设定值包括 所述清除单元更新所述互斥访问锁中各个从核对应的请求位所取的第一设定值为其他值。
全文摘要
本发明提供了转发资源访问方法和路由系统。该方法包括配置针对整个转发资源表的互斥访问锁,互斥访问锁存在各个从核对应的请求位和应答位;每一从核检测互斥访问锁中自身对应的请求位当前是否取值为第一设定值,是则在互斥访问锁中自身对应的应答位当前不为第二设定值时,将自身对应的应答位取值为第二设定值,返回检测;主核在向转发资源表写转发资源时清除各个从核对应的应答位所取的第二设定值,之后设置各个从核对应的请求位取值为第一设定值,检测各个从核对应的应答位是否被该各个从核设置为第二设定值,如果是,向转发资源表写转发资源,在写转发资源完成后,清除互斥访问锁中各个从核对应的请求位所取的第一设定值;如果否,返回检测。
文档编号H04L12/56GK102355423SQ20111031817
公开日2012年2月15日 申请日期2011年10月19日 优先权日2011年10月19日
发明者曹淋 申请人:迈普通信技术股份有限公司