一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种跨交换芯片ACL管理方法及其系统与流程

2022-04-30 11:43:43 来源:中国专利 TAG:

一种跨交换芯片acl管理方法及其系统
技术领域
1.本发明通信
技术领域
,尤其是涉及一种跨交换芯片acl管理方法及其系统。
背景技术
:2.acl(accesscontrollist,访问控制列表)语句顺序决定了对数据的控制顺序。acl的语句是一种自上而下的逻辑排列关系。数据匹配过程中是依次对语句进行比较,一旦匹配成功则按照当前语句控制策略处理,不在与之后的语句进行比较。因此,正确的语句顺序才能得到所需的控制效果,而增加规则语句的优先级配置,可以提高使用acl的灵活性。3.不同交换芯片实现acl功能的方式不同,在用户界面与交换芯片接口之间,增加一层适配层,用以屏蔽不同交换芯片的细节,实现跨平台管理交换芯片acl,这也是本技术方案实现在通信系统软件框架中的位置。acl规则最长的匹配字段长度不同,有的交换芯片一条规则就能满足所有命令行的配置需求,而有的交换芯片需要多条acl规则拼装来实现一条命令行的需求,需要使调用交换芯片acl接口的过程透明化,达到跨平台的效果;不同类型acl规则的优先级是不一样的,协议acl规则的优先级低于命令行acl规则优先级。4.本技术属于通信系统适配交换芯片api(applicationprogramminginterface,应用程序接口)的中间层,属于用户态,且需要从通信系统的内核态获取命令行下发的数据。5.公开于该
背景技术
部分的信息仅仅旨在加深对本发明的总体
背景技术
的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。技术实现要素:6.本发明的目的在于提供一种跨交换芯片acl管理方法及其系统,以解决现有技术中存在的技术问题。7.为了实现上述目的,本发明采用以下技术方案:8.本发明提供一种跨交换芯片acl管理方法,其包括支持内核态和用户态配置acl规则、支持acl优先级属性、支持acl实例管理机制、支持统一的通信接口;9.其中,支持内核态和用户态配置acl规则,包括:10.在通信系统中,用户态模块通过socket套接字发送acl配置信息,内核态模块通过伪文件系统传送acl配置信息;11.其中,支持acl优先级属性,包括:12.用户根据工程需要配置优先级,决定acl的生效顺序;13.其中,支持acl实例管理机制,包括:14.插入配置时,根据配置优先级查找合适的待下发acl实例号,移动待插入点前面或后面的配置,插入新的配置;删除配置时,查找待删除配置对用的acl实例号,删除后设置bitmap数据结构;黑洞回收机制,包含插入时回收黑洞和定时回收黑洞,插入时回收黑洞尽最大努力减少黑洞数量,定时回收黑洞确保黑洞占用率保持在阈值之下,能收敛黑洞数量;15.其中,支持统一的通信接口,包括:16.封装/解析消息的pack/unpack接口,通信库从用户态发送/接受消息的msgusersend/msguserrecv接口,通信库从内核发送消息的msgkernelsend接口,通信库从用户态/内核态获取交换芯片所支持的所有acl字段对用的长度值gettypelengthfromuser/gettypelengthfromkernel。17.优选地,守护进程将通信库发送来的配置消息,添加到消息处理队列尾部,待该消息处理完后,再返回处理结果,唤醒等待的调用者,从而实现同步通信。18.优选地,在通信库首次调用之时,一次性获取所有acl字段长度值。19.优选地,acl配置插入实例区块的方法包括:20.首先,根据acl配置优先级,查找待插入位置点i;21.其次,在插入点前面和后面分别找到第一个空闲的实例位置b和a;22.再次,比较i-b与a-i的大小,若i-b小,则向前依次移动插入点i之前的i-b个实例;否则向后依次移动插入点i之后的a-i个实例;23.最后,将配置插入待插入位置点i。24.优选地,回收acl实例资源的方法,包括:插入时回收黑洞和定时回收黑洞,插入时回收黑洞是实时的尽最大努力的解决方案,定时回收黑洞是异步的保证黑洞收敛的解决方案,两个方案配合使用,将黑洞维持在可接受的范围内;25.插入时回收黑洞,是在插入acl配置时,尽可能减少已有的黑洞,其机制采用所述的acl配置插入实例区块的方法;26.定时回收黑洞,当黑洞占用比超过预定阈值时,启动定时器,定时器超时后,如黑洞占用比仍超过预定阈值,则启动回收流程;首先,按顺序获取黑洞所在位置;其次,按黑洞位置从小到大的顺序依次填充黑洞点;最后,在整个acl区块分区内,执行上述两个过程。27.优选地,开发人员按需划分实例区块;当一条acl规则配置属性过多,开启本发明的实例聚合功能,此时实例管理的基本单位由一个物理实例变成两个物理实例组成的逻辑实例。28.本发明提供一种跨交换芯片acl管理系统,采用所述的跨交换芯片acl管理方法。29.采用上述技术方案,本发明具有如下有益效果:30.本发明提供acl优先级配置方法,提供用户态向用户态、内核态向用户态发送acl配置的通信方法,通过acl实例管理机制使通信系统软件跨平台跨交换芯片地管理acl资源,并提供统一的编程接口。附图说明31.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。32.图1为本发明实施例提供的系统框架图;33.图2为本发明实施例提供的通信数据tlv组织形式示意图;34.图3为本发明实施例提供的socket通信c/s模型示意图;35.图4为本发明实施例提供的伪文件通信模型示意图;36.图5为本发明实施例提供的实例区块划分图示意图;37.图6为本发明实施例提供的插入机制示意图;38.图7为本发明实施例提供的插入时移动配置改进流程图;39.图8为本发明实施例提供的定时回收黑洞图。具体实施方式40.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。41.以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。42.实施例一43.结合图1至图8所示,本实施例提供一种跨交换芯片acl管理方法,其包括支持内核态和用户态配置acl规则、支持acl优先级属性、支持acl实例管理机制、支持统一的通信接口;其中,支持内核态和用户态配置acl规则,包括:在通信系统中,用户态模块通过socket套接字发送acl配置信息,内核态模块通过伪文件系统传送acl配置信息;其中,支持acl优先级属性,包括:用户根据工程需要配置优先级,决定acl的生效顺序;其中,支持acl实例管理机制,包括:插入配置时,根据配置优先级查找合适的待下发acl实例号,移动待插入点前面或后面的配置,插入新的配置;删除配置时,查找待删除配置对用的acl实例号,删除后设置bitmap数据结构;黑洞回收机制,包含插入时回收黑洞和定时回收黑洞,插入时回收黑洞尽最大努力减少黑洞数量,定时回收黑洞确保黑洞占用率保持在阈值之下,能收敛黑洞数量;其中,支持统一的通信接口,包括:封装/解析消息的pack/unpack接口,通信库从用户态发送/接受消息的msgusersend/msguserrecv接口,通信库从内核发送消息的msgkernelsend接口,通信库从用户态/内核态获取交换芯片所支持的所有acl字段对用的长度值gettypelengthfromuser/gettypelengthfromkernel。44.实施例二45.本实施例提供一种跨交换芯片acl管理系统,采用所述的跨交换芯片acl管理方法。本实施例将跨交换芯片acl管理实现系统划分为六个大的功能模块,包括有用包(utils)、通信层(communication)、通信库(communicationlib)、映射层(mapping)、实例管理层(management)和调用层(call),如图1所示。utils实用工具包,包含基本的数据结构(list、queue、hash)及其基本操作(增删改查)、数据tlv封装和解析等;通信层接受通信系统其他模块的数据,在用户态socket套接字模式中作为服务器端,持续监听其他模块的链接,在内核态数据传递模式中,持续同步读取acl配置数据;通信库作为通信系统其他功能模块与守护进程通信的入口点,完成acl配置的下发,与通信层对应;映射层完成acl配置数据与acl实例间一一对应的映射,通过配置数据可以快速定位到实际生效的acl实例;实例管理层根据优先级属性重新排列acl实例的顺序,优先级高的排在前面,实现acl优先级功能;调用层主要适配守护进程与交换芯片api数据结构,屏蔽交换芯片数据结构细节,完成守护进程初始化工作。46.综合分析现有通信设备厂商关于acl的实现,本发明尽可能全地整合上述通信厂商关于acl的分类,将acl分为预留acl、二层acl、三层acl、混合acl、自定义模板acl、协议acl和预留acl。如将上述分类以优先级再次分类,则协议acl自成一类,其他的为一类,且协议acl这一类acl优先级低。同时,acl在使用方面还分为出方向和入方向。47.首先,详述有用包中通信数据的封装和解析,有用包中基本数据结构及其使用不做描述。48.通信数据的组织形式,都基于tlv的封装思想,其实现情况如图2所示。第一层tlv结构(简称一类acl)中,以上acl分类类型作为“t”,每个一类acl分类下面,根据acl设置字段的类型作为第二层tlv结构(简称二类acl)中的“t”;一条消息中可以有多个一类tlv,而每个一类tlv里面可以包含多个二类acl。后续可以根据情况扩展三类tlv、四类tlv等。注意,每个消息的第一个一类tlv固定填写acl的动作类型,且一个消息就是一条acl规则。向外提供统一编程接口pack()/unpack()。49.值得说明的是,acl字段类型不同对应的长度也不同,即二类acl的长度是根据类型变化的。所以在通信库开始发送acl配置消息前,需向通信层获取芯片已支持acl字段类型所对应的所有长度值,存储以备后续发送acl配置消息时使用。50.其次,详述通信层和通信库的实现,按其通信形式的不同,分为socket通信和伪文件通信。51.socket通信基于c/s模型,完成进程间通信。守护进程启动socket监听,当通信系统中其他功能模块a调用共享库配置acl时,守护进程与之建立链接,接收acl配置消息,守护进程将消息放入消息队列的尾部,待处理线程处理完消息后返回模块a处理结果。处理流程如图3所示。52.伪文件通信用于获取内核态模块的acl配置消息。由于内核态资源是整个系统公用的,所以需要注意资源(配置消息)的同步问题。通信库在内核态维护一个消息队列,将要发送给守护进程的消息插入内核消息队列尾部,等待用户态逐一获取处理并返回。守护进程创建线程processa通过ioctl读取/proc目录下的文件(需自己创建)内容,获取内核的消息队列头的消息,复制数据到用户态,添加到守护进程的消息队列尾部,同时休眠processa。守护进程处理完消息队列后,唤醒processa,将处理结果再次通过ioctl传递到内核,唤醒内核任务,读取内核消息队列头部,处理下一个acl配置消息。处理流程如图4所示。53.通信库与通信层的通信是同步的,通信层维护消息队列,避免多进程竞争通信造成数据不同步的问题;通信库与通信层的通信是全方面,不仅支持用户态进程间通信,而且支持用户态与内核态的通信。54.最后,由于映射层、实例管理层和调用层之间联系紧密,将他们放一起详述。55.在通信系统初始本发明时,需要初始化交换芯片关于acl的功能,其中acl实例所在区块的分类尤为重要。本发明为屏蔽不同交换芯片关于acl实例区块实现细节,提出两套区块划分方案。其实现主要在调用层。56.第一套方案,所有的实例区块不区分acl用途,不同用途acl都可以在整个区块内设置,acl实例排列次序取决于优先级,优先级作为不同acl划分的依据。优先级越大,排在区块内部越靠前;若优先级相同,则先下发的acl实例排在区块内部的前面。此方案优点是实现简单,缺点是对用户使用优先级的要求高。57.第二套方案,先按不同acl用途划分实例区块,再在已划分区块的基础上,添加优先级的配置选项,即优先级为区块的局部变量,如图5所示。此方案优点是用户使用简单,不必关心全局优先级划分;缺点是实现复杂,后续扩展性差。58.映射层是外部acl配置数据与本发明下发驱动数据的联系者,维护他们之间一一对应的关系,便于使用者进行增删改查的基本操作。之所以单独作为本发明的一个功能层,主要是屏蔽acl配置数据的细节,屏蔽了acl命令差异。其主要功能是解析acl配置消息,并将解析的数据通过hash-table的形式管理。对于几千级别的数据,hash-table数据结构在数据增删改查的性能上都不错。59.实例管理层是本发明的重难点,是基于已经划分好的实例区块进行管理的,使用bitmap数据结构记录实例使用情况,是维护管理acl、屏蔽交换芯片acl功能细节的核心。管理的基本思想是,所有将要下发交换芯片的acl实例配置,是严格按照优先级越大越靠前的次序设置的;优先级相同,则acl实例先下发设置在区块前面,后下发设置在后。60.有的交换芯片支持相连两个实例聚合为一个大的逻辑实例,新的的逻辑实例可以匹配更多的acl字段,从而实现更精准的acl匹配规则。而有的交换芯片并不支持实例聚合功能,为适配所有芯片,本发明支持开发者根据芯片功能对该属性进行配置。如不配置实例聚合,则实例管理的基本单位是单个物理实例;如配置实例聚合,则实例管理的基本单位是两个物理实例聚合的逻辑实例。61.假设交换芯片有n个区块,每个区块有m个实例。下面以n个连续的区块作为对象,在不配置实例聚合的情况下,详述实例管理的插入、删除和黑洞回收等机制。62.现要求依次配置优先级分别为20、30、10、20四个配置c1、c2、c3和c4。其操作过程如图6所示。c1作为第一个插入,直接放入实例1的位置,如图6中的(a)所示;当c2插入时,由于c2的优先级大于c1的优先级,所以将c1及其后面配置都往后移动一位,把c2插入在c1之前,如图如图6中的(b)所示;当插入c3时,由于c3小于所有配置好的优先级,所致直接将c3插入c1后面即可,如图6中的(c)所示;当插入c4时,其优先级大于c3且等于c1,所以c4应该排在c3之前且在c1之后,如图6中的(d)所示。假设再配置一个优先级为50的配置c5,则其插入原理与上面一致,首先比较优先级,得知其优先级大于第一个实例里的配置c2,所以将前面四个配置依次往后移动一位,在第一个实例处插入c5,最后配置为,从第一个实例到第五个实例,其排列顺序为c5、c2、c1、c4、c3,严格按优先级排序。63.在插入的过程中,从效率的角度出发,移动配置的个数越小越好。所以,在上述插入原理中做了一个小的优化,尽量减少移动配置的个数。即在找到待插入配置的位置时,比较一下待插入位置前的配置个数number_before和待插入后的配置个数number_after,如果number_before大于number_after,且后面有足够的空余位置供移动用,则向后移动;如果number_before小于number_after,且前面有足够的空余位置供移动用,则向前移动;如果number_before等于number_after,则向前向后移动皆可。更详细的细节如图7所示。64.删除动作比较简单,通过待删除acl配置找到该配置实际生效的实例号,直接调用实例删除函数,将该配置对应的bitmap数据清零,这样删除的大体流程就基本结束。65.删除后,会在bitmap结构中留下未使用的黑洞。这些黑洞需要回收,本来稀缺的acl实例资源可能在多次插入删除后,留下很大规模的黑洞,浪费资源。本发明提出2种解决方案,即插入时回收黑洞和定时回收黑洞。66.插入时回收黑洞,即在插入流程中,在确定待插入位置i后,开始执行移动操作之时,需要找到距离待插入点最近的黑洞点b。如向后移动,则以黑洞点b为移动的尾部,以待插入点i为头部,向后开始移动;如向前移动,则以黑洞点b为移动的头部,以待插入点i为尾部,向前开始移动。这种方式的优点是,既可以即减少移动次数,又可以减少黑洞点。缺点是,当插入过程不涉及移动配置时,黑洞数量不会较少。67.所以需要定时回收黑洞的方法,确保黑洞数量维持在合理的范围内。具体机制是,设置一个黑洞与管理区块实例总数比的一个黑洞回收阈值,当超过该阈值时,启动定时器,如在定时器超时后比值还是大于阈值,则启动回收流程。即以记录的黑洞点为准,从小到大地减少黑洞。具体流程如图8所示。值得注意的是,插入时回收黑洞和定时回收黑洞需要同时使用,插入时回收黑洞是尽可能回收黑洞,而定时回收黑洞则确保acl实例资源中黑洞数目始终收敛在一个合理值内。68.总之,通过本发明,在通信系统中增加适配交换芯片acl接口调用的中间层,支持用户态和内核态全面通信方式,支持开发人员定制acl区块按需分类,支持优先级配置属性,并提供开发人员统一的编程接口,最终实现本发明跨交换芯片、跨命令行平台的特性。使大型通信软件系统易于开发、维护和扩展,节省开发成本。69.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献