信息处理装置、配置方法、通信系统和程序的制作方法_3

文档序号:8303660阅读:来源:国知局
]")的"[flow_id]"表示分组处理信息之一的标识符。例如,标识信息"/floWS/[floW_id]"的数据(值)包括用于标识与分组处理信息相对应的分组的匹配条件,该分组处理信息对应于"[flow_id]"。例如,当接收到处理方法未知的分组时,控制装置I的DB操作逻辑单元11使用DB操作命令来在网络DB 2中搜索具有与分组相对应的匹配条件的分组处理信息。网络DB 2参考与分组有关的信息(例如首部信息),并向DB操作逻辑单元11通知具有与分组相对应的匹配条件的分组处理信息。基于所提供的分组处理信息,DB操作逻辑单元11指示网络4中的节点3处理分组。
[0124]存在以下情况:网络DB 2不具有用于参考与分组有关的信息(例如首部信息)并搜索具有与分组相对应的匹配条件的分组处理信息的DB操作命令。在这些情况下,控制装置I的DB操作逻辑单元11可以使用DB操作命令来从网络DB 2读取必需的分组处理信息并事先存储该信息。以这种方式,DB操作逻辑单元11可以通过简单地参考与分组有关的信息,确定对应的分组处理信息。基于所确定的分组处理信息,DB操作逻辑单元11给出与对网络4中的节点3的分组处理有关的指令。
[0125]与标识信息"/flows/[flow_id]"相对应的数据(值)包括:针对与匹配条件相匹配的分组的转发路径(“Path路径”)和要对与匹配条件相匹配的分组执行的处理(“Act1n动作”)。DB操作逻辑单元11向网络4中的节点3通知用于转发分组的指令,使得沿着分组处理信息中定义的转发路径转发分组。此外,如果要对分组执行的处理(“Act1n动作”)存在,则DB操作逻辑单元11指示网络4中的节点3执行处理。
[0126]图9示出了与向控制装置I转发的分组(作为处理方法未确定的分组)有关的数据库条目。网络DB 2可以将与处理方法未确定的分组有关的信息作为数据库条目进行管理。
[0127]与标识信息"/packets/in"相对应的数据(值)表示向控制装置I转发的分组(作为处理方法未确定的分组)的标识符的列表。例如,通过使用用于将值添加到列表的末尾的DB操作命令"push_tail"和用于从列表的顶部提取值的DB操作命令"pop_head",标识符列表被用作FIFO(先进先出)的队列。
[0128]例如,标识信息"/packets/in/[packet_id]"的数据(值)包括:分组的标识符、分组的接收时间、已经接收到分组的节点3的标识符和分组接收节点3的通信端口的标识符。
[0129]例如,如果分组被转发到控制装置1,则DB操作逻辑单元11使用DB操作命令来将与分组有关的信息存储到网络DB 2中。
[0130]与标识信息"/packets/out"相对应的数据(值)表示已经确定处理方法并需要从控制装置I向网络4返回的分组的标识符列表。例如,在与"/packets/in"相对应的队列中存储的分组中,将已经确定处理方法的分组存储到与"/packets/out"相对应的队列中。例如,与"/packets/out"相对应的数据(值)是列表并用作FIFO类型队列。
[0131]例如,与标识信息"/packets/out/[packet_id]"相对应的数据(值)包括:从控制装置I向其返回分组的节点的标识符、节点的通信端口中向其返回分组的端口的标识符和在分组中存储的数据(即分组自身)。
[0132]例如,DB操作逻辑单元11使用通知订阅命令来操作网络DB 2,使得如果分组存储在与"/packets/out"相对应的队列中并且如果操作键"/packets/out",则通知DB操作逻辑单元11。如果分组存储在队列中(即如果与"/packets/out"和"/packets/out/[packet_id]"相对应的条目被更新),则网络DB 2向DB操作逻辑单元11通知对与"/packets/out/[packet_id]"相对应的数据的更新。
[0133]标识信息"/packets/out/"和标识信息"/packets/out/[packet_id]"中存储的分组可以不对应于与"/packets/in"相对应的队列中存储的分组。以这种方式,控制装置I可以有效地输出分组。
[0134]图10和11示出了当DB操作逻辑单元11操作网络DB 2时所使用的DB操作命令。如图10和11所示,通过使用push (推)命令和pop (弹)命令,可以执行诸如向列表的任意位置插入数据和从列表的任意位置获取数据的操作。此外,例如,控制装置I使用要通知数据库中具有特定键的条目的改变的订阅命令。此外,例如,使用诸如get (获取)、put (设置)和delete (删除)等的命令来获取、设置和删除与节点、链路、流和分组有关的详细信息或节点、链路、流和分组的值。
[0135]通过使用在图10和11中所示的DB操作命令并操作如图7至9所示配置的网络DB 2,DB操作逻辑单元11可以以集中方式控制网络4。因此,通过使用DB操作命令并对网络DB 2的操作指令进行合并,运营商可以对控制装置I进行编程。DB操作命令的数量远小于普通编程中所使用的API或与其有关的函数所需的命令的数量。因此,与普通编程相比,运营商可以很容易地对控制装置I进行编程。
[0136]〈第三示例性实施例〉
[0137]接下来,将描述本公开的第三示例性实施例。可以通过具有各种功能的模块实现DB操作逻辑单元11。在第三示例性实施例中,开放流控制单元IlA被布置为DB操作逻辑单元Ilo
[0138]图12示出了根据第三示例性实施例的系统的配置。开放流控制单元11A具有基于开放流协议来控制网络4的功能。将假定由与开放流协议兼容的节点3配置网络4来描述第三示例性实施例。在第三示例性实施例中,如果需要的话,网络4将被称为开放流网络。
[0139]图13示出了开放流控制单元IlA的配置。开放流控制单元IlA包括:拓扑处理单元110、流处理单元111和分组处理单元112。
[0140]拓扑处理单元110使用DB操作命令来经由DB接口单元10对网络DB2进行操作。例如,拓扑处理单元110对网络DB 2进行操作以将拓扑信息设置到网络DB 2中。此外,例如,拓扑处理单元110对网络DB 2进行操作以从网络DB 2获取拓扑信息。
[0141]图14示出了拓扑处理单元110对网络DB 2进行操作的操作示例。拓扑处理单元110使用命令"push_tail (/nodes)"来将添加到开放流网络的节点的标识符添加到条目列表"/nodes"的末尾。此外,拓扑处理单元110使用命令"put (/nodes/[node_id],<node_info>)"来将与"<node_info>"(作为命令的变量)相对应的信息添加到条目"/nodes/[node_id] " ([node_id]是添加到条目"/nodes"的节点的标识符)。例如,拓扑处理单元110将第一示例性实施例中描述的信息添加到条目"/nodes/[node_id]"。
[0142]通过使用命令"push_tail(/nodes, <node_info>)"而不是以上命令"push_tail (/nodes)",可以共同地执行以上系列操作。在这种情况下,可以省略对命令"put (/nodes/[node_id],<node_info>)"的执行。
[0143]拓扑处理单元110使用命令"push_tail (/links)"来将添加到开放流网络的节点间链路的标识符添加到条目列表"/links"的末尾。此外,拓扑处理单元110使用命令"put (/links/[link_id], <link_info>)"来将与"<link_info>"(作为命令的变量)相对应的信息添加到条目"/links/[link_id] " ([link_id]是添加到条目"/links"的链路的标识符)。例如,拓扑处理单元110将第一示例性实施例中描述的信息添加到条目"/links/[link_id]"。
[0144]通过使用命令"push_tail(/links, <link_info>)"而不是以上命令"push_tail (/links)",可以共同地执行以上系列操作。在这种情况下,可以省略对命令"put(/links/[link_id],<link_info>) 〃 的执行。
[0145]如果从开放流网络中删除某一节点或链路,则拓扑处理单元110使用命令"pop_at"来从节点或链路列表中删除已删除的节点或链路的标识符。如果从开放流网络中删除某一节点或链路,则拓扑处理单元110使用命令"delete"来从网络DB 2中删除与已删除的节点或链路相对应的条目。
[0146]通过使用命令"pop_at",可以共同地执行以上系列操作。因此,可以省略对命令"delete"的执行。
[0147]通过使用命令"get",拓扑处理单元110获取与所指定的标识信息(键)相对应的数据(值)。
[0148]流处理单元111使用DB操作命令来经由DB接口单元10对网络DB 2进行操作。例如,流处理单元111对网络DB 2进行操作以将分组处理信息设置到网络DB 2中。此外,例如,流处理单元111对网络DB 2进行操作来在网络DB 2中搜索与处理方法未知的分组相对应的分组处理信息。
[0149]图15示出了流处理单元111对网络DB 2进行操作的操作示例。如果控制装置I从开放流网络接收到处理方法未知的分组,则流处理单元111从分组处理单元112接收到用于搜索针对分组的处理方法的请求。例如,分组处理单元112使用命令"get_matching_flow(〈packet_info>)"来请求流处理单元111搜索针对分组的处理方法。作为命令的变量的"<packet_info> "是与处理方法未知的分组有关的信息(例如首部信息或分组自身)。
[0150]基于来自分组处理单元112的请求,流处理单元111在网络DB 2中搜索具有与"〈paCket_inf0>"相对应的匹配条件的分组处理信息。流处理单元111从网络DB 2接收所获取的分组处理信息的标识符("flow.1d")。例如,基于所接收的标识符并通过使用命令"get (/flows/[flow_id])",流处理单元111获取分组处理信息。流处理单元111向分组处理单元112提供该分组处理信息。如果不存在与搜索条件匹配的这种分组处理信息,则流处理单元111向分组处理单元112通知该效果。
[0151]如果网络DB 2不具有用于搜索具有与"<packet_info>"相对应的匹配条件的分组处理信息的命令,则流处理单元111可以使用DB操作命令来从网络DB 2读取必需的分组处理信息并事先存储该信息。以这种方式,流处理单元11可以通过参考与分组有关的信息,来确定对应的分组处理信息。
[0152]如果不存在对应的分组处理信息,则分组处理单元112使用命令"push_tail (/packets/in, <packet_info>)"来将所接收的分组添加到网络DB 2。
[0153]如果存在对应的分组处理信息,则分组处理单元112请求流处理单元111对分组进行处理。
[0154]基于所获取的分组处理信息,流处理单元111将分组处理操作(即分组处理规则)设置到开放流网络的节点3中,并同时使节点3基于该分组处理信息从节点3的恰当的节点通信端口输出所接收的分组。
[0155]例如,分组处理操作是采取基于开放流协议所定义的格式的信息,并用于使节点3处理分组。分组处理操作包括:用于标识由节点3接收的分组的标识条件和用于对与标识条件相匹配的分组进行处理的方法。流处理单元111将分组处理操作设置到节点3中,并且节点3将所设置的分组处理操作存储在存储器中。节点3在存储器中搜索具有与所接收的分组相匹配的标识条件的分组处理操作。如果节点3基于所检索的分组处理操作,发现具有与所接收的分组相匹配的标识条件的分组处理操作,则节点3对所接收的分组进行处理(例如通过由分组处理操作所指定的通信端口转发分组)。
[0156]例如,流处理单元111基于分组处理信息中包括的匹配条件,将该标识条件设置到分组处理操作中。
[0157]基于分组处理信息中包括的路径信息(Path路径),流处理单元111识别开放流网络中的分组转发路径。流处理单元111向分组转发路径上的节点3通知分组处理操作。基于分组处理操作,流处理单元111可以指示转发路径上的每个节点3沿着与分组处理信息相对应的转发路径来转发分组。也就是说,当流处理单元111指示节点3转发分组时,每个节点3中设置的分组处理操作包括用于通过与转发路径相对应的通信端口来转发分组的方法。
[0158]如果分组处理信息包括例如需要对分组执行的预定处理(Act1n动作),则流处理单元111确定需要执行预定处理(Act1n动作)的节点3。流处理单元111在所确定的节点3中设置分组处理操作,在分组处理操作中定义了被确定为预定处理的处理(例如首部重写或封装/解封装)。
[0159]例如,流处理单元111使用命令“subscribe订阅”,使得当在网络DB 2中执行预定更新(分组处理信息或链路信息的更新)时,网络DB 2向流处理单元111通知与更新有关的信息。如果由命令“订阅”指定的信息被更新,则网络DB 2使用命令"publish"来向流处理单元111通知该信息。例如,基于通过使用命令"publish"提供的信息,流处理单元111确定是否改变在开放流网络中的节点3中已经设置的分组处理操作
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1