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

一种具有分级状态自动维护的状态编程方法与流程

2022-06-25 00:15:31 来源:中国专利 TAG:


1.本发明涉及网络技术和通信技术领域,尤其涉及一种具有分级状态自动维护的状态编程方法。


背景技术:

2.软件定义网络(sdn,software define networks),解耦了网络的控制面与数据面,在控制面与数据面之间采用统一的南向接口,有效的降低了网络设备管理和网络应用部署的难度,提高了网络的灵活性。控制面中的sdn控制器产生网络报文的处理决策,并通过南向接口将处理决策以流表的形式下发给数据面中的sdn交换机,sdn交换机依据流表规则处理网络报文。sdn的网络架构,为网络带来了编程性和灵活性,加速了网络应用的创新。
3.sdn虽然在一定程度上解决了传统网络中存在的问题,但在可扩展性方面仍存在诸多挑战。由于sdn交换机无法在本地记录状态,所有的状态都在sdn控制器上存储,因此当网络事件发生时,sdn交换机需要将触发状态变化的报文上送到sdn控制器来更新状态。sdn控制器更新状态后,产生此报文的处理决策,并利用南向接口将此决策通知给sdn交换机。sdn集中式的网络架构,决定了少数的sdn控制器要管理多数的sdn交换机,因此由sdn控制器记录状态的机制,限制了sdn数据面的可扩展性,成为亟待解决的重要问题。
4.解决上述问题的关键在于赋予sdn交换机主动处理报文的能力。目前业界常用的做法是在sdn交换机中记录状态并根据本地状态改变报文处理决策,来实现sdn交换机主动处理报文。但现有方法(如:p4、open state等)仍存在诸多缺陷,一方面,在记录状态的数量和长度上,存在严格的限制,造成了sdn交换机内状态使用的局限性;另一方面,缺乏对sdn交换机内部状态空间的有效管理,需要sdn控制器上使用状态的应用来自行管理sdn交换机中状态空间的分配和回收。当同一sdn交换机内部署了多个应用,且多个应用都需要使用状态时,在如何充分利用并合理分配状态空间,保证状态信息的一致性、正确性等问题上仍面临严峻挑战。


技术实现要素:

5.本发明的目的在于克服上述技术缺陷,提出了一种具有分级状态自动维护的状态编程方法,所述方法适用于sdn交换机,所述方法包括:
6.sdn交换机可以从外部获取一个状态声明,获取的状态声明可以来自但不限于sdn控制器;状态具有不同的等级,状态的属性由被称为状态声明的属性集合配置或赋值;
7.将状态存储在状态区中,状态区通过索引被引用;
8.sdn交换机可以从外部获取一个表项,获取的表项可以来自但不限于sdn控制器;表项的动作域中的动作可以使用状态;
9.回收状态在状态区中占用的空间。
10.作为上述方法的一种改进,状态数值是但不限于一个二、十、或十六进制的数值。
11.作为上述方法的一种改进,所述状态声明包括但不限于:
12.(1)状态标识,在状态区中唯一的标识状态;
13.(2)等级,说明状态的等级;
14.(3)状态区标识,说明存储状态的状态区;
15.(4)长度,说明状态的长度,长度的单位是字节或比特;
16.(5)状态声明标识,唯一的标识一个状态声明;
17.(6)引用数,说明在表项的动作域中,存在动作使用此状态的表项的总数。
18.作为上述方法的一种改进,所述等级按照共享报文范围划分,高等级的共享报文范围不小于低等级的,等级最低的共享报文范围内只有一个报文,等级最高的共享报文范围内有sdn交换机中的全部报文,等级可以使用但不限于正整数表示,数字越大等级越高。
19.作为上述方法的一种改进,同一共享报文范围内的报文具有基于报文字段的匹配关系,其中匹配关系包括但不限于,报文的全部字段与具体数值匹配、报文的部分字段与具体数值匹配、报文的部分字段与任意数值匹配、报文的字段不与任何数值匹配。
20.作为上述方法的一种改进,所述状态区是用于存储状态数值的区域,状态区是一个有顺序有确定长度的串结构,串中元素可以是但不限于比特、字节、字符,一个状态以连续序号的方式存储在状态区中,状态区具有对已存状态进行位置移动和元素数量计算的能力,状态区具有唯一的标识,状态区中存储的状态具有相同的等级。
21.作为上述方法的一种改进,所述索引在状态区生成时确定,索引可以是但不限于指针,直接或间接的指向状态区,通过索引可以引用状态区,索引与一个报文字段匹配关系存在对应关系,此报文字段匹配关系,是状态区中存储状态的等级对应的共享报文范围的报文字段匹配关系。
22.作为上述方法的一种改进,所述状态存储在状态区中,根据说明此状态的状态声明中的状态区标识,判断一个状态区是否具有长度不小于该状态声明中的长度的连续空间,若是,则将状态存储在此状态区中,并将状态在此状态区中的位置与状态声明中的状态标识关联,否则就放弃将该状态存储在相应的状态区中。
23.作为上述方法的一种改进,所述表项的动作域中的动作可以使用状态,表项动作域中的动作的参数可以是状态声明标识,sdn交换机添加此表项时,获取动作参数中的状态声明标识代表的状态声明,并将此状态声明中的引用数加1,动作处理报文时,获取此动作参数中状态声明标识代表的状态声明,根据状态声明中的等级,确定共享报文范围,通过共享报文范围的报文字段匹配关系获取索引,使用获取的索引和此状态声明中的状态标识进行状态的读写操作,其中索引用于引用一个状态区,状态标识说明了状态在此状态区的位置。
24.作为上述方法的一种改进,所述回收状态在状态区中占用的空间,具体包括:使用状态的动作,其所在的一个表项被删除时,获取此动作参数中的状态声明标识代表的状态声明,并将此状态声明的引用数减1,当此状态声明的引用数减为0时,根据状态声明中的等级,确定共享报文范围,通过共享报文范围的报文字段匹配关系获取索引,通过获取的索引引用一个状态区,并在此状态区中删除一个状态,此状态在状态区中的位置通过状态声明中的状态标识获取,此状态的长度等于状态声明中的长度,删除此状态后,释放此状态占用的状态区空间。
25.本发明的优势在于:
26.本发明的方法通过对状态划分等级,在sdn交换机内使用状态区存储状态,并利用状态声明自动维护状态在状态区中占用空间的分配与回收,为使用者提供了具有分级状态自动维护的状态编程的方法,降低了状态使用的难度,增加状态使用的灵活性,增加了sdn交换机中状态空间的利用率。
附图说明
27.图1(a)是本发明的生成存储1级状态的状态区的示意图;
28.图1(b)是本发明的生成存储2级状态的状态区的示意图;
29.图1(c)是本发明的生成存储3级状态的状态区的示意图;
30.图1(d)是本发明的生成存储4级状态的状态区的示意图;
31.图2是本发明的状态区存储状态的示意图;
32.图3是本发明的表项动作域中的动作使用状态的示意图;
33.图4是本发明的状态在状态区中占用的空间被回收的示意图。
具体实施方式
34.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
35.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
36.在下面的实施例中,按照单个报文、匹配同一表项的所有报文、进入同一流表的所有报文、交换机中的所有报文这4种共享报文范围,划分为4个等级,等级使用正整数表示,4种共享报文范围对应的状态等级分别为1级状态,2级状态,3级状态,4级状态。
37.状态区是一个以字节为单位的一维数组,生成状态区时,由sdn交换机为其分配指定字节长度的内存空间,并生成一个指向这个状态区的指针,sdn交换机将该指针作为状态区的索引,生成的状态区的具体字节长度由sdn交换机的配置确定,其中存储1、2、3、4级状态的状态区长度分别为16字节、16字节、32字节、64字节,状态区中字节的序号分别为1~16、1~16、1~32、1~64。
38.图1(a)是生成存储1级状态的状态区的方法,sdn交换机接收报文p后,生成一个存储1级状态的状态区,此状态区的状态区标识为p1,存储1级状态的状态区标识按照报文到达sdn交换机的顺序确定,将指向此状态区的指针ptr1作为状态区的索引,记录于sdn交换机内部存储报文p的结构中,sdn交换机中处理报文p的动作可以获得报文p中记录的索引。
39.图1(b)是生成存储2级状态的状态区的方法,sdn交换机添加表项e时,生成一个存储2级状态的状态区,此状态区的状态区标识为e1,存储2级状态的状态区标识按照表项在流表中的顺序确定,将指向此状态区的指针ptr2作为状态区的索引,记录于sdn交换机内部存储表项e的结构中,表项e动作域中的动作可以获得表项e中记录的索引。
40.图1(c)是生成存储3级状态的状态区的方法,sdn交换机添加流表t时,生成一个存储3级状态的状态区,生成状态区的状态区标识为t1,存储3级状态的状态区标识按照流表在sdn交换机中的顺序确定,将指向此状态区的指针ptr3作为状态区的索引,记录于sdn交
换机内部存储流表t的结构中,流表t中所有表项动作域中的动作都可以获得流表t中记录的索引。
41.图1(d)是生成存储4级状态的状态区的方法,sdn交换机启动后,生成一个存储4级状态的状态区,生成状态区的状态区标识为s1,存储4级状态的状态区标识按照sdn交换机的id确定,将指向此状态区的指针ptr4作为状态区的索引,记录于sdn交换机的公共区域中,此sdn交换机中所有流表中的所有表项动作域中的动作都可以获得sdn交换机的公共区域中记录的索引。
42.图2是状态区存储状态示意图。
43.sdn交换机中使用状态空间表记录各个状态区可存储状态的连续空间,状态空间表中使用状态区标识代表一个状态区,使用字节序号的范围说明状态区可存储状态的连续空间,例如状态区t1的可存储状态的连续空间是{4,32},表示状态区t1的第4字节到第32字节这段连续空间可以存储状态。
44.图2中sdn交换机从sdn控制器获取一个状态声明,sdn使用此状态声明中的状态区标识t1,查找状态空间表,获得状态区t1的可存储状态的连续空间是{4,32},这段空间长度为28大于状态声明中的长度4,则将状态区t1中的第4字节到第8字节用于存储此状态,并将状态区中存储此状态的第一个字节的序号4,作为此状态的状态标识。状态区t1存储此状态后,可存储状态的连续空间变为{8,32}。
45.图3是表项动作域中的动作使用状态示意图。
46.表项e1的动作域中动作output包含状态声明标识state1,获取此标识代表的状态声明,将状态声明中的引用数加1,加1后此状态声明的引用数等于1,由于此状态声明中的等级为3,则获取表项e1所在的流表t中记录的索引ptr3,ptr3是指向状态区的指针,因为状态声明中的状态标识为0,长度为4字节,所以动作使用的状态存储在状态区t1的前4个字节中,综上确定状态值为0x00000001。
47.图4是状态在状态区中占用的空间被回收的示意图。
48.表项e1被删除时,由于表项e1动作域中output参数中包含状态声明标识state1,所以将状态声明标识state1代表状态声明的引用数减1,此引用数减1后变为0,回收此状态声明说明的状态在状态区中占用的空间。
49.由于此状态声明中的等级为3,则获取表项e1所在的流表t中记录的索引ptr3,ptr3是指向状态区的指针,删除此状态区中的一个状态,删除的状态在状态区中的位置通过状态声明中的状态标识和长度确定,因为此状态声明中的状态标识是0,长度是4,所以将状态区t1中前4个字节的数据删除,并释放这段空间。释放后,根据状态声明中的状态区标识t1,将状态空间表中状态区t1的可存储状态的连续空间由{4,32}更新为{0,32}。
50.最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
再多了解一些

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

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

相关文献