管理流规则表的方法和交换器与流程

文档序号:17817439发布日期:2019-06-05 21:55阅读:145来源:国知局
本发明是有关于一种比对流量表的方法及交换器,特别是一种应用于软件定义网络中,能够加快比对速度的管理流规则表的方法及交换器。
背景技术
::在传统网络的架构中,个别交换器的规则设定是由专属的路由算法所控制,因此当某个路由规则需要改变设定,必须透过人工来处理并设定路径上相关交换器的规则。软件定义网络(softwaredefinednetworks,sdn)则提供了更好的解决办法。软件定义网络将交换器的控制层和数据层分离,并将控制层移到集中式的架构中,也就是说,软件定义网络可利用同一个控制管理的逻辑掌握并操作各个交换器的流量表(flowtable)设定,而交换器则是被动地配合来自控制层的规则变动,并专注于流量传输。软件定义网络将控制层及数据层分离的架构使得网络拓朴能够具有可扩展性、可管理性及可程序化等特性。控制器和交换器是软件定义网络的两个基本组件,控制器负责网络的基本控管功能,例如设定交换器的流量表规则,并随时掌握网络的状态信息。交换器则基于控制器所设定的流量表中的流量规则来进行封包传送,并被动响应来自控制器的指令。控制器与交换器之间会使用特定的协议,例如开放流(openflow)协议来沟通,控制器可以透过增加、删除或修改交换器上的流量规则来控制网络上的流量分布。在软件定义网络的应用中,由于三态内容寻址内存(ternarycontentaddressablememory,tcam)具有在线性时间内高速比对的优点,因此常被用来储存交换器中的流量表,然而相较于一般的内容寻址内存,三态内容寻址内存所需的面积较大,同时也需要较高的功率消耗和较高的成本,因此在实作上无法设置大容量的三态内容寻址内存,而导致流量表的容量较小,容易造成流量表满溢(overflow)的问题,甚至导致封包遗失,导致传输效率较低。在现有技术中,常会透过逾时(timeout)或是快取(cache)的机制来解决流量表满溢的问题。举例来说,若是采取逾时机制,则流量表中的流规则只要存在超过预定时间,即便在流量表尚未满溢的情况下也会被剔除。然而如此一来,便可能不必要地浪费流量表的容量,使得效率难以提升。若是采取快取机制,则当流量表满溢时,系统便会优先剔除最久没使用过的流规则。然而倘若将流规则剔除后,却开始接收大量对应于被剔除的流规则的封包,则将导致大量的封包无法实时传递,而付出庞大的代价。也就是说,如何从满溢的流量表中选择代价较低的流规则加以剔除,便成为了能否提高封包传输效率的关键之一。技术实现要素:本发明的目的在于提供一种管理流规则表的方法及交换器,旨在减少剔除流规则时可能带来的额外运算成本及传输成本,进而提升整体的传输效率。本发明的一实施例提供一种管理流规则表的方法,应用于软件定义网络(softwaredefinednetworking,sdn)的交换器中。管理流规则表的方法包含当交换器接收到封包时,将封包的时间戳印记录于数据结构中,根据数据结构中所记录的多个时间戳印建立多个流量模型,其中每一流量模型是记录在多个间隔时间内接收到流量模型所对应的流规则的多个封包的数量,根据多个流量模型的内容计算交换器于特定时间内接收到流规则表中多个流规则所对应的多个封包数量期望值,及当交换器接收到流规则变更讯息(flowmodmessage)且流规则表已经填满时,移除多个流规则中对应于最小封包数量期望值的流规则。本发明的另一实施例提供一种应用于软件定义网络之交换器,交换器包含流规则表、数据结构及处理器。流规则表用以储存多个流规则。处理器用以当交换器接收到封包时,将封包的时间戳印记录于数据结构中,根据数据结构中所记录的多个时间戳印建立多个流量模型,根据多个流量模型的内容计算交换器于特定时间内接收到流规则表中多个流规则所对应的多个封包数量期望值,及当交换器接收到流规则变更讯息且流规则表已经填满时,移除多个流规则中对应于最小封包数量期望值的流规则。其中每一流量模型是记录在多个间隔时间内接收到流量模型所对应的一流规则的多个封包的数量。本发明的交换器及管理流规则表的方法可以计算流规则表中每一个流规则在特定时间内接收到的封包数量期望值,并在流规则表满溢时,从中挑选出具有最小封包数量期望值的流规则并加以淘汰,以减少剔除流规则时可能带来的额外运算成本及传输成本,进而能够提升整体的传输效率。附图说明图1为本发明一实施例的交换器的示意图。图2为图1中数据结构的示意图。图3为本发明一实施例的流量模型的示意图。图4为本发明一实施例的管理流规则表的方法流程图。其中,100-交换器;110-流规则表;120-数据结构;130-处理器;fr1至fr10-流规则;122-树状数据结构;124-哈希表;122a、122b-叶节点;k1至kx-键;st1至stn-时间戳印;fm1-流量模型;200-方法;s210至s240-步骤。具体实施方式图1为本发明一实施例的交换器100的示意图。交换器100可例如为应用于软件定义网络(softwaredefinednetworking,sdn)中的交换器。交换器100包含流规则表110、数据结构120及处理器130。流规则表110可用来储存流规则,在图1的实施例中,流规则表110储存有流规则fr1至fr10。流规则fr1至fr10可用来转送不同类型的封包,也就是说,当交换器100接收到封包时,交换器100可根据封包的头文件(header)信息查找对应的流规则,并根据流规则所定义的内容将封包转送至下一个目的地。然而,倘若流规则表110中并没有流量封包所对应的流规则,则交换器100会转向软件定义网络中的控制器发出收取封包的请求讯息(packet-in),以作进一步的分析动作。相对的,控制器也会向交换器100发出流规则变更讯息(flowmod)以变更交换器100的流规则表110中的流规则,例如增加新的流规则。然而当流规则表110已经被填满时,交换器100就必须将原先存在于流规则表110中的至少一项流规则淘汰,以容置新增的流规则。倘若在淘汰了一项流规则后的短时间内,交换器100又大量接收到对应于这项已淘汰之流规则的封包,将使得封包在队列中等待甚至被舍弃,而大大降低整体的传输效率。此外,由于不同类型的流量封包有不同的传输特性,例如有的流量封包会在间隔较久之后再大批传来,有的流量封包则是较为固定的在较短间隔时间内传来。因此为了避免传输效率降低,本发明的交换器100可根据每一个流规则在一预定时间内会接收到对应的封包数量期望值来做为淘汰流规则的依据。在本发明的部分实施例中,处理器130可在交换器100接收到封包时,将封包的时间戳印(timestamp)记录于数据结构120中。图2为本发明一实施例的数据结构120的示意图。在图2中,数据结构120可包含根据因特网协议(internetprotocol,ip)来源地址及因特网协议目的地址所建立的树状数据结构122。换言之,在图2中,树状数据结构122的每一个子节点都可对应到因特网协议来源地址及因特网协议目的地址的一个位,以网络第三层(l3)的32位的因特网协议地址为例,树状数据结构122的高度即为64层,亦即可完整对应到两组因特网协议地址,亦即树状数据结构122位于最左边的叶节点(leafnode)122a会对应到因特网协议的来源地址及因特网协议的目的地址皆为0.0.0.0的流量封包,而树状数据结构122位于最右边的叶节点122b则会对应到因特网协议的来源地址及因特网协议的目的地址皆为255.255.255.255的流规则。在图2中,树状数据结构122的上半部可用来对应因特网协议的来源地址,而树状数据结构122的下半部可用来对应因特网协议的目的地址。透过树状数据结构122,除了能够迅速找出对应的流规则的数据外,还可以用来找寻聚合后的流规则。也就是说,当交换器100欲取得由多个流规则所聚合而成的聚合后流规则的对应数据时,交换器100便可根据这些流规则所涵盖的流量,找寻对应的子树以取得对应的资料。如此一来,就能够更有弹性的管理和使用数据结构120中所储存的数据。此外,数据结构120还可包含设置于树状数据结构122的多个叶节点的多个哈希表124。哈希表124是以每一流规则的来源端口及目的埠为键(key),并以每一封包的时间戳印为值(value),且在本发明的部分实施例中,每一个键可以对应到多个值。在本发明的部分实施例中,在哈希表124的同一个键底下,可以利用简单的储存结构,例如串行,来储存对应到相同流规则的流量封包的时间戳印,然而本发明并不以此为限。举例来说,当交换器100接收到流量封包时,交换器100可先根据流量封包中的因特网协议来源地址及因特网协议目的地址来存取此流量封包所对应的叶节点,并进一步将流规则的来源端口及目的埠带入预定的哈希函数以取得流量封包所对应的键。以图2中叶节点122a下所储存的哈希表124为例,哈希表124可包含多个键k1至kx,其中x为正整数,倘若流量封包经计算后所对应的键为k1,则处理器130便可将流量封包的时间戳印储存在对应于键k1的串行中。在图2中,对应于键k1的串行储存有一系列的时间戳印st1至sty,其中y为正整数,而时间戳印st1至stn都是对应到相同流规则的流量封包的时间戳印。此外,本发明并不限定数据结构120须包含树状数据结构122及哈希表124,在本发明的部分实施例中,交换器100亦可根据系统的需求改以其他种类的数据结构来实际操作。由于时间戳印记录着每个封包的发送时间,因此处理器130可以根据数据结构120中所记录的时间戳印建立流量模型。流量模型主要是记录在多个间隔时间内接收到流量模型所对应的流规则的多个封包的数量。图3为本发明一实施例的流量模型fm1的示意图。在图3中,水平坐标为距离上一次接收到对应相同流规则的封包的间隔时间,其单位可例如为秒,而垂直坐标则为封包数量。举例来说,流量模型fm1可对应到流规则表110中的第一流规则,而在图3中,间隔时间在0.4至0.6秒的区间内的封包数量为10,间隔时间在0.6至0.8秒的区间内的封包数量为8,表示在数据结构120中所记载的封包记录中,有10个对应到第一流规则的封包都是在距离上一次接收到同样类型的流量封包后的0.4至0.6秒内被交换器100接收,而有8个对应到第一流规则封包都是在距离上一次接收到同样类型的流量封包后的0.6至0.8秒内被交换器100接收。在本发明的部分实施例中,间隔时间在0.4至0.6秒的区间内的封包数量可包含在第0.4秒所接收到的封包,但不包含在第0.6秒所接收到的封包,然而本发明并不以此为限。在本发明的部分实施例中,为了避免太过频繁地更新流量模型,同时又能根据足够多的时间戳印来呈现接近较真实的分布情况,处理器130可在哈希表124的序列具有一预定数量的值之后,才根据数据结构120中所记录的时间戳印建立流量模型,例如当序列中的时间戳印已累计到30个以上时,才开始建立流量模型。此外,在将每个流量封包抵达交换器的事件视为独立事件的情况下,我们可将在间隔时间0.4至0.6秒内的封包数量10乘以每一个封包出现的机率(在图3中共有23个封包,且每个封包出现的机率相同),并将所得到的结果视为距离前一次接收到同类型流量封包后,间隔0.4至0.6秒内会接收到的封包数量期望值,亦即按照此定义,便能够根据流量模型fm1计算交换器100于特定时间内,接收到对应于第一流规则的封包数量期望值em,例如式(1)所示。换言之,封包数量期望值em为对应于特定时间内,在各间隔时间内的封包数量期望值e[ai]的总和。举例来说,若现在的时间点为第0.7秒,而前一次接收到对应于第一流规则的封包的时间点是第0.1秒(表示现在时间点距离上次接收封包的时间点已经历时0.6秒),则在计算接下来的特定时间0.4秒内,亦即在时间点第1.1秒之前,所接收到对应第一流规则的封包数量的期望值时,即表示实际上预计算的封包数量期望值em是在距离上次接收到封包后间隔超过0.6秒且在1.0秒内的封包数量期望值,因此应包含在图3中,间隔时间在0.6至0.8秒及间隔时间在0.8至1.0秒的封包数量期望值总和,亦即由于每个流规则在特定时间内会接收到的封包数量期望值即表示在特定时间内可能会接收到对应流规则的封包数量的多寡,因此可看作是将此流规则淘汰后,在特定时间内可能会需要付出的代价。在本发明的实施例中,在计算好每个流规则在特定时间内会接收到的封包数量期望值之后,当交换器100接收到流规则变更讯息且流规则表110已经填满时,处理器130便可移除流规则fr1至fr10中,对应于最小封包数量期望值的流规则,以容纳新增的流规则。由于对应至最小封包数量期望值的流规则会被认为是在特定时间内接收到最少封包的流规则,表示将之淘汰的代价相对最小,因此会被处理器130优先淘汰。在本发明的部分实施例中,特定时间可例如为系统默认或用户设定的参数,然而倘若特定时间设定得过短,则可能导致封包数量期望值em必须频繁地更新,反而降低交换器100的运算效能,因此在本发明的部分实施例中,特定时间tc可符合式(2)的限制。tc+tn-tl≥ti………………………………式(2)其中tn表示现在的时间点,tl表示上次接收封包的时间点,而ti则表示流量模型中对应到已接收到封包的最小时间间隔,以图3为例,ti可为0.4秒。现在的时间点tn减去上次接收封包的时间点tl的差值表示现在的时间点tn距离上次接收封包的时间点之间的时间间隔,而此一时间间隔再加上特定时间tc则应该大于或等于流量模型中对应到已接收到封包的最小时间间隔ti。在此情况下,计算出来的封包数量期望值em应会大于0,因此能够更有效地作为淘汰流规则的依据。此外,为避免交换器100太过频繁的计算封包数量期望值,以及为避免封包数量期望值不够实时,而导致交换器100的效能降低,在本发明的部分实施例中,处理器130可在流规则表110的容量超过一预定百分比时,根据流量模型的内容计算交换器100于特定时间内接收到流规则表110中流规则fr1至fr10所对应的封包数量期望值。如此一来,就能在流规则表110即将满溢时才计算封包数量期望值,以避免太过频繁的计算,同时也能确保封包数量期望值符合流规则表110满溢时的近况。图4为本发明一实施例的管理流规则表的方法200的流程图,方法200可应用于交换器100,并可包含步骤s210至s240。s210:当交换器100接收到封包时,将封包的时间戳印记录于数据结构120中;s220:处理器130根据数据结构120中所记录的多个时间戳印建立多个流量模型;s230:根据处理器130所建立的流量模型的内容计算交换器100于特定时间内接收到流规则表中流规则fr1至fr10所对应的多个封包数量期望值;s240:当交换器100接收到流规则变更讯息且流规则表110已经填满时,移除流规则表110中对应于最小封包数量期望值的流规则。在步骤s210中,处理器130可将封包的时间戳印储存在例如图2所示的数据结构120中,而在步骤s220中,处理器130便可根据数据结构120中所记录的多个时间戳印建立多个流量模型。在本发明的部分实施例中,方法200可在数据结构120的哈希表124中的序列已储存一预定数量的值之后再对应地执行步骤s220。在步骤s230中,方法200可根据步骤s220所建立的流量模型计算流规则fr1至fr10所对应的多个封包数量期望值,并在步骤s240中,当流规则表110已满溢且又须新增流规则时,将流规则表110中对应于最小封包数量期望值的流规则淘汰。在本发明的部分实施例中,步骤s230可在流规则表110的容量超过一预定百分比时执行,如此一来,就不至于过分频繁地计算封包数量期望值,也能够避免计算所得的封包数量期望值与执行步骤s240时的情况相差太远。综上所述,本发明的实施例所提供的交换器及管理流规则表的方法可以计算流规则表中每一个流规则在特定时间内接收到的封包数量期望值,并在流规则表满溢时,从中挑选出具有最小封包数量期望值的流规则并加以淘汰,以减少剔除流规则时可能带来的额外运算成本及传输成本,进而能够提升整体的传输效率。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1