一种基于sdn的全局流表生成方法及装置的制造方法_3

文档序号:9202669阅读:来源:国知局
在第一交换设备的信息之后,之后继续识别第二交换设备的下一跳交换设备,直至将该集合中的交换设备的信息排序完成;
[0069]如果否,根据网络拓扑图中的标记及该第一交换设备转发该数据流的端口,识别该集合中第一交换设备连接的下一跳第二交换设备,将该下一跳第二交换设备的信息排列在该第一交换设备的信息之后,当该下一跳第二交换设备的端口非无效端口时,继续识别该集合中与第二交换设备连接的下一跳第三交换设备,直至查找到的第三交换设备的端口为无效端口 ;并根据网络拓扑图中的标记识别该集合中第一交换设备连接的上一跳第二交换设备,将该上一跳交换设备的信息排列在第一交换设备的信息之前,当该集合中与该上一跳第二交换设备连接的交换设备非一台时,继续识别该集合中与该第二交换设备连接的上一跳第三交换设备,直至查找到该集合中与第三交换设备连接的交换设备为一台。下面结合图2中的网络拓扑图,对本发明实施例进行详细说明。
[0070]根据网络设备及其间的连接关系,将网络拓扑抽象为网络拓扑图,如2所示的网络拓扑图,交换设备及其间的连接链路被抽象为图中的节点和边。网络控制器在内存中创建一个空的hashmap表,用以存储数据流的标识以及该数据流流经的交换设备的集合。当全局流表生成后,可以将全局流表保存到数据库中,根据全局流表的生成周期,可以定期更新数据库中保存的全局流表,或者为了便于后续查询,定位故障,也可以按照每个生成周期保存每个全局流表。
[0071]以每个流表项中数据流的标识信息作为key,每一条数据流对应的转发链路集合作为value,查找每条转发链路对应的交换设备及其转发端口的二元组集合,数据流的匹配域字段如图3A所示,其记录了数据流的标识信息,具体的该匹配域字段记录了该数据流由交换设备的哪个端口接收和转发,该数据流的源地址信息和目的地址信息等,具体的由于匹配域字段中记录的内容属于现有技术,在此就不对图3A所示的匹配域字段的具体内容进行描述。
[0072]网络控制器获取网络拓扑图中每台交换设备当前保存的转发流表。遍历每一条流表项,将流表项中记录的匹配域字段中的数据流标识作为hashmap表的key,将该流表项中记录的转发该数据流的该交换设备的标识信息和其转发该数据流的端口作为value记录到hashmap表中。
[0073]之后,遍历下一条流表项,判断该流表项的匹配域字段中记录的数据流标识key是否已经记录在hashmap表中,如果该流表项中记录的数据流标识key已经记录在hashmap表中,则将该流表项中记录的转发该数据流的交换设备的标识信息及转发该数据流的端口作为value记录到该key对应的value中;如果该流表项中记录的数据流标识key未记录在hashmap表中,则在hashmap表存储该数据流标识key,并将该流表项中记录的转发该数据流的交换设备的标识信息及转发该数据流的端口作为value记录到该key对应的value中。
[0074]依次按照上述方式,查找每条流表项,直至遍历完当前网络拓扑图中所有交换设备的流表项。遍历完所有的流表项后,hashmap表存储了当前网络拓扑图中记录的所有的交换设备间传输的数据流,key存储了所有数据流的标识信息,每个key对应的value中存储了转发该数据流的转发链路集合即二元组集合,通过该二元组集合则可获得该数据流流经的所有交换设备以及交换设备转发该数据流的转发端口。
[0075]通过上述方式得到的每个数据流的转发链路对应的集合中记录的交换设备的信息是无序排列,该集合并不能反映转发链路中交换设备的顺序,即该数据流依次流经了哪些交换设备,因此需要结合网络拓扑图,对每条数据流流经的转发链路对应的集合进行排序。
[0076]在每个集合中保存有多个二元组,该二元组中记录有交换设备的标识信息以及该交换设备转发该数据流的端口的信息。如上所示,某一条数据流对应的二元组集合为{(n3,2),(nl, 3),(n2, 2),(n6, 2),(n7, null) },null 标识该端口为无效端口,通过该集合可知,该数据流流经交换设备nl、n2、n3、n6和n7,分别通过nl的3端口、n2的2端口、n3的2端口、n6的2端口和n7的null端口转发。
[0077]在确定的该转发链路对应的交换设备的信息的二元组集合中,根据转发数据流的顺序,确定转发链路中交换设备的信息的存储顺序。首先遍历该二元组集合,针对每个集合,根据该集合中记录的交换设备的信息,在网络拓扑图中对交换设备进行标记。在实际操作中即是搜索hashmap表找到每个二元组所代表的链路,将该二元组对应链路的标志位由O置为I。
[0078]之后,采用广度优先搜索算法,在该集合中选择任一一个交换设备的信息,例如取第一个二元组(π3,2)。由于交换设备η3转发该数据流的端口非无效端口,因此该交换设备η3不位于转发链路的末端,根据网络拓扑图,判断该二元组集合中与交换设备η3连接的交换设备非一台,因此可以确定该交换设备η3位于转发链路的中间。
[0079]该数据流中交换设备η3转发该数据流的端口为端口 2,根据网络拓扑图,确定在该集合中交换设备π3连接的下一跳交换设备为η6,网络拓扑图中,与η6相连的链路有(n6, I) (n6, 2) (η6, 3),但是根据网络拓扑标记信息可知(η6,2)已被标记,所以交换设备η6转发该数据流的端口为端口 2。因交换设备η6转发该数据流的端口非无效端口,因此交换设备π6也非该转发链路的末端,交换设备η6转发该数据流的端口为端口 2,根据网络拓扑图识别该集合中与交换设备η6连接的下一跳交换设备为η7,将交换设备η7的信息记录在交换设备η6的信息之后。交换设备η7转发该数据流的端口为无效端口,因此可知交换设备η7位于该转发链路的末端。
[0080]根据上述方式可知按照数据流流经的顺序,依次为交换设备η3、η6和η7,该数据流对应的二元组集合还包括交换设备nl和η2的信息,根据网络拓扑图中的标记可知,与交换设备η3相连的相邻交换设备为η2,η6,由网络拓扑中的标记可知,交换设备η2,η6都被做过标记,但η6已经被搜索过,所以可知η3的上一跳为η2,因此将交换设备η2的信息排列在交换设备η3的信息之前,该二元组集合中与交换设备η2连接的交换设备为nl和n3,因此交换设备π2仍位于转发链路的中间。根据网络拓扑图中的标记可知,交换设备nl和n3都被做过标记,交换设备n3已经被搜索过,因此可知,交换设备nl位于交换设备n2的上一跳,因此将交换设备nl的信息排列在交换设备n2的信息之前。该二元组集合中与交换设备nl连接的交换设备为n2,因此交换设备nl位于转发链路的首端。因此采用上述方式,可以在该集合中根据转发数据流的顺序,确定转发链路中交换设备的信息的顺序为Knl,3),(n2, 2),(n3, 2),(n6, 2),(n7, null)}。
[0081]采用上述方式,可以根据转发数据流的顺序,在每个集合中确定交换设备的信息的存储顺序。
[0082]图3B本发明实施例生成的全局流表的结构,该全局流表包括数据流标识Flow id以及该数据流的路径flow path,在该数据流的路径中记录有交换设备的标识信息以及转发该数据流的端口的信息,另外,在该全局流表中还可以记录该数据流中包含的交换设备的数量Matching entryset。如图3B所示,在该全局流表中记录有两个数据流,其标识分别为flowl和flow2,该两个数据流路径分别包括4台和3台交换设备,其中flowl的数据流路径为交换设备nl、n2、n3和n6,经由交换设备η I的3端口、交换设备η2的2端口、交换设备η3的2端口和交换设备η6的2端口转发,flow2的数据流路径为交换设备n6、n5和n2,经由交换设备n6的3端口、交换设备n5的2端口和交换设备n2的无效端口转发。
[0083]在本发明实施例中数据流在流经网络的过程中,可能其某些字段会被修改,当该数据流被修改后,该流在后续转发的过程中,对其进行描述的match字段将会发生变化。由于match字段发生了变化,根据本发明的上述实施例该数据流将会被作为两个数据流进行统计,但是实际上两个数据流实际上属于一个数据流,该两个数据流流经的路径是相同的,为了保证确定
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1