1.一种稳定可靠的软件定义网络实现方法,其特征在于,所述网络包括控制器、交换机和设备,设备为网络终端节点;控制器包括中心控制器和本地控制器,所述网络包含一个中心控制器和两个以上的本地控制器;交换机包括中间交换机和末端交换机;所述网络划分为两个以上的子网,一个子网由一个本地控制器、两个以上的中间交换机、两个以上的末端交换机以及两个以上的设备构成;中心控制器用于管理本地控制器,本地控制器用于管理所在子网的交换机和设备;末端交换机与设备链路相连,与设备直接通信,一个中间交换机与其他中间交换机或者末端交换机或者本地控制器链路相连,不能与设备直接通信;
一个控制器配置两个以上的接口,一个接口由一个接口ID唯一标识,接口ID值为正整数;中心控制器的每个接口与本地控制器链路相连;本地控制器的一个接口与中心路由器链路相连,其余接口与中间交换机链路相连;
一个交换机配置一个上游接口和两个以上的下游接口;一个上游接口或者下游接口由接口ID唯一标识;接口ID值为正整数;
一个中间交换机的上游接口与一个本地控制器或者另一个中间交换机链路相连;中间交换机的下游接口与一个末端交换机或者另一个中间交换机链路相连;
一个末端交换机的上游接口与一个中间交换机链路相连;一个末端交换机的下游接口与一个设备链路相连;
一个设备配置一个接口,该接口与末端交换机链路相连;
如果一个接口的接口ID为f,那么该接口简写为接口f;一个末端交换机具有唯一的坐标,一个本地控制器维护一个交换机表,一个交换机表项由接口ID集合和坐标构成;网络中的消息由消息类型值、接口ID集合、坐标和负载构成;
消息类型值如下表所示:
消息类型值 消息名称
1 交换机注册消息
2 控制器注册消息
3 设备注册消息
4 请求消息
5 响应消息
在末端交换机ES1的坐标为(x1,y1),所在子网的本地控制器为LC1的条件下,末端交换机ES1通过下述过程定期向本地控制器LC1执行注册操作:步骤101:开始;
步骤102:末端交换机ES1创建一个交换机注册消息,该交换机注册消息的消息类型值为1,接口ID集合为空,坐标为(x1,y1),负载为空;末端交换机ES1通过上游接口发送该交换机注册消息;
步骤103:判断是本地控制器LC1从接口f1接收到交换机注册消息还是中间交换机从接口f2接收到交换机注册消息,如果是本地控制器LC1接收到交换机注册消息,则执行步骤
105,否则执行步骤104;
步骤104:中间交换机从接口f2接收到交换机注册消息后,将接口f2加入到该交换机注册消息的接口ID集合中并作为最后一个元素存在,从上游接口转发该交换机注册消息,执行步骤103;
步骤105:本地控制器LC1从接口f1接收到交换机注册消息后,将接口f1加入到该交换机注册消息的接口ID集合中并作为最后一个元素存在,查看交换机表,如果存在一个交换机表项,该交换机表项的坐标域值等于该交换机注册消息的坐标域值,则执行步骤106,否则执行步骤107;
步骤106:本地控制器LC1选择一个交换机表项,该交换机表项的坐标域值等于该交换机注册消息的坐标域值,将该交换机表项的接口ID集合更新为该交换机注册消息的接口ID集合,执行步骤108;
步骤107:本地控制器LC1创建一个交换机表项,该交换机表项的坐标域值等于该交换机注册消息的坐标域值,该交换机表项的接口ID集合等于该交换机注册消息的接口ID集合;
步骤108:结束。
2.根据权利要求1所述的一种稳定可靠的软件定义网络实现方法,其特征在于,中心控制器维护一个控制器表,一个控制器表包含接口ID域,横坐标区间域和纵坐标区间域;
本地控制器LC1创建交换机表后,查看交换机表并创建横坐标区间域[xmin,xmax]和纵坐标区间域[ymin,ymax],其中,xmin等于所有交换机表项的坐标域值中最小的横坐标值,xmax等于所有交换机表项的坐标域值中最大的横坐标值,ymin等于所有交换机表项的坐标域值中最小的纵坐标值,ymax等于所有交换机表项的坐标域值中最大的纵坐标值;
本地控制器LC1执行下述过程定期向中心控制器CC1执行注册操作:步骤201:开始;
步骤202:本地控制器LC1构建一个控制器注册消息,该控制器注册消息的消息类型值为2,接口ID集合为空,坐标为空,负载为横坐标区间[xmin,xmax]和纵坐标区间[ymin,ymax],本地控制器LC1通过与中心控制器CC1链路相连的接口发送该控制器注册消息;
步骤203:中心控制器CC1从接口f3接收到该控制器注册消息,然后查看控制器表,判断是否存在一个控制器表项,该控制器表项的接口ID等于接口f3,是则执行步骤204,否则执行步骤205;
步骤204:中心控制器CC1从接口f3接收到该控制器注册消息后,选择一个控制器表项,该控制器表项的接口ID等于f3,将该控制器表项的横坐标区间和纵坐标区间分别更新为该控制器注册消息负载中的横坐标区间和纵坐标区间;执行步骤206;
步骤205:中心控制器CC1从接口f3接收到该控制器注册消息后,创建一个控制器表项,该控制器表项的接口ID等于f3,该控制器表项的横坐标区间和纵坐标区间分别等于该控制器注册消息负载中的横坐标区间和纵坐标区间;
步骤206:结束。
3.根据权利要求1所述的一种稳定可靠的软件定义网络实现方法,其特征在于,一个末端交换机维护一个设备表,一个设备表项包含坐标域、接口ID域和生命周期域;如果一个末端交换机检测到一个设备表项的生命周期衰减为0,则删除该设备表项;
设备D1与末端交换机ES1链路相连,设备D1定期向末端交换机ES1执行下述注册操作:步骤301:开始;
步骤302:设备D1发送一个设备注册消息,该设备注册消息的消息类型值为3,接口ID集合为空,坐标为设备D1的坐标,负载为空;
步骤303:末端交换机ES1从接口f4接收到该设备注册消息,然后查看设备表,判断是否存在一个设备表项,该设备表项的接口ID等于接口f4,是则执行步骤304,否则执行步骤
305;
步骤304:末端交换机ES1选择一个设备表项,该设备表项的接口ID等于f4,将该设备表项的坐标更新为该设备注册消息中的坐标,将该设备表项的生命周期设置为最大值,执行步骤306;
步骤305:末端交换机ES1创建一个设备表项,该设备表项的接口ID等于f4,该设备表项的坐标设置为该设备注册消息中的坐标,该设备表项的生命周期设置为最大值;
步骤306:结束。
4.根据权利要求3所述的一种稳定可靠的软件定义网络实现方法,其特征在于,在设备D1的坐标为(x3,y3),设备D2的坐标为(x4,y4),设备D1与末端交换机ES1链路相连,设备D2与末端交换机ES1链路相连的条件下,设备D1通过下述过程获取坐标为(x4,y4)的数据:步骤401:开始;
步骤402:设备D1发送一个请求消息,该请求消息的消息类型值为4,接口ID集合为空,坐标为(x4,y4),负载为空;
步骤403:末端交换机ES1从接口f5接收到该请求消息,将接口f5加入到该请求消息的接口ID集合且作为最后一个元素;末端交换机ES1查看设备表,选择一个设备表项,该设备表项的坐标域值等于该请求消息的坐标域值,从该设备表项的接口ID所标识的接口发送该请求消息;
步骤404:设备D2接收到该请求消息后,发送一个响应消息,该响应消息的消息类型值为5,接口ID集合等于该请求消息的接口ID集合,坐标等于该请求消息的坐标,负载为响应数据;
步骤405:末端交换机ES1接收到响应消息后,选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;
步骤406:设备D1接收到该响应消息后,保存该响应消息负载中的数据;
步骤407:结束。
5.根据权利要求4所述的一种稳定可靠的软件定义网络实现方法,其特征在于,在设备D1的坐标为(x3,y3),设备D3的坐标为(x5,y5),设备D1与末端交换机ES1链路相连,设备D3与末端交换机ES2链路相连,末端交换机ES1和末端交换机ES2属于同一个子网S1,该子网的本地控制器为LC1的条件下,设备D1通过下述过程获取坐标为(x5,y5)的数据:步骤501:开始;
步骤502:设备D1发送一个请求消息,该请求消息的消息类型值为4,接口ID集合为空,坐标为(x5,y5),负载为空;
步骤503:判断是本地控制器LC1从接口f6还是交换机从接口f7接收到该请求消息,如果是本地控制器LC1则执行步骤505,否则执行步骤504;
步骤504:交换机将接口f7加入到该请求消息的接口ID集合且作为最后一个元素,从上游接口发送该请求消息,执行步骤503;
步骤505:本地控制器LC1将接口f6加入到该请求消息的接口ID集合且作为最后一个元素;本地控制器LC1查看交换机表,选择一个交换机表项,该交换机表项的坐标与该请求消息的坐标距离最近,将该交换机表项的接口ID集合加入到该请求消息的接口ID集合,且该交换机表项的接口ID集合的第一个元素在该请求消息的接口ID集合的最后一个元素之后;
本地控制器LC1选择一个接口,该接口的接口ID等于该请求消息的接口ID集合中的最后一个元素,从该请求消息的接口ID集合中删除最后一个元素,从选中的接口发送该请求消息;
步骤506:判断是否末端交换机接收到请求消息,如果是则执行步骤508,否则执行步骤
507;
步骤507:中间交换机接收到该请求消息后,选择一个接口,该接口的接口ID等于该请求消息的接口ID集合中的最后一个元素,从该请求消息的接口ID集合中删除最后一个元素,从选中的接口发送该请求消息;执行步骤506;
步骤508:末端交换机选择一个设备表项,该设备表项的坐标域值等于该请求消息的坐标,从该设备表项的接口发送该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的消息类型值为5,接口ID集合等于该请求消息的接口ID集合,坐标等于该请求消息的坐标,负载为响应数据;
步骤509:判断是本地控制器LC1还是中间交换机接收到该响应消息,如果是本地控制器LC1则执行步骤511,否则执行步骤510;
步骤510:中间交换机从上游接口转发该响应消息,执行步骤509;
步骤511:本地控制器LC1选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;
步骤512:判断是设备D1还是交换机接收到响应消息,如果是设备D1则执行步骤514,否则执行步骤513;
步骤513:交换机接收到该响应消息后,选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;执行步骤512;
步骤514:设备D1接收到该响应消息后,保存该响应消息负载中的数据;
步骤515:结束。
6.根据权利要求5所述的一种稳定可靠的软件定义网络实现方法,其特征在于,在设备D1的坐标为(x3,y3),设备D4的坐标为(x6,y6),设备D1与末端交换机ES1链路相连,设备D4与末端交换机ES4链路相连,末端交换机ES1属于子网S1,该子网S1的本地控制器为LC1,末端交换机ES4属于子网S2,该子网S2的本地控制器为LC2,网络的中心控制器为CC1的条件下;如果满足条件1,设备D1通过下述过程从设备D4获取坐标为(x6,y6)的数据:条件1:中心控制器CC1存在一个控制器表项,横坐标x6属于控制器表项的横坐标区间且纵坐标y6属于控制器表项的纵坐标区间;
步骤601:开始;
步骤602:设备D1发送一个请求消息,该请求消息的消息类型值为4,接口ID集合为空,坐标为(x6,y6),负载为空;
步骤603:判断是本地控制器LC1从接口f8还是交换机从接口f9接收到该请求消息,如果是本地控制器LC1则执行步骤605,否则执行步骤604;
步骤604:交换机将接口f9加入到该请求消息的接口ID集合且作为最后一个元素,交换机从上游接口发送该请求消息,执行步骤603;
步骤605:本地控制器LC1将接口f8加入到该请求消息的接口ID集合且作为最后一个元素;本地控制器LC1从与中心控制器CC1链接的接口转发该请求消息;中心控制器CC1从接口f10接收到该请求消息后,将接口f10加入到该请求消息的接口ID集合且作为最后一个元素,然后选择一个控制器表项,横坐标x6属于该控制器表项的横坐标区间且纵坐标y6属于该控制器表项的纵坐标区间,从该控制器表项的接口ID域值所标识的接口转发该请求消息;本地控制器从接口f11接收到该请求消息后,将接口f11加入到该请求消息的接口ID集合且作为最后一个元素,该本地控制器查看交换机表,选择一个交换机表项,该交换机表项的坐标与该请求消息的坐标距离最近,将该交换机表项的接口ID集合加入到该请求消息的接口ID集合,且该交换机表项的接口ID集合的第一个元素在该请求消息的接口ID集合的最后一个元素之后;本地控制器选择一个接口,该接口的接口ID等于该请求消息的接口ID集合中的最后一个元素,从该请求消息的接口ID集合中删除最后一个元素,从选中的接口发送该请求消息;
步骤606:判断是末端交换机还是中间交换机接收到请求消息,如果是末端交换机则执行步骤608,否则执行步骤607;
步骤607:中间交换机选择一个接口,该接口的接口ID等于该请求消息的接口ID集合中的最后一个元素,从该请求消息的接口ID集合中删除最后一个元素,从选中的接口发送该请求消息,执行步骤606;
步骤608:末端交换机选择一个设备表项,该设备表项的坐标域值等于该请求消息的坐标,从该设备表项的接口发送该请求消息,设备接收到该请求消息后,发送一个响应消息,该响应消息的消息类型值为5,接口ID集合等于该请求消息的接口ID集合,坐标等于该请求消息的坐标,负载为响应数据;
步骤609:判断是本地控制器还是中间交换机接收到该响应消息,如果是本地控制器则执行步骤611,否则执行步骤610;
步骤610:中间交换机从上游接口转发该响应消息,执行步骤609;
步骤611:本地控制器选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;
步骤612:如果设备D1接收到响应消息,则执行步骤614,否则执行步骤613;
步骤613:控制器或者交换机接收到该响应消息后,选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;执行步骤612;
步骤614:设备D1保存该响应消息负载中的数据;
步骤615:结束。
7.根据权利要求6所述的一种稳定可靠的软件定义网络实现方法,其特征在于,在设备D1的坐标为(x3,y3),设备D5的坐标为(x7,y7),设备D1与末端交换机ES1链路相连,设备D5与末端交换机ES5链路相连,末端交换机ES1属于子网S1,该子网S1的本地控制器为LC1,末端交换机ES5属于子网S2,该子网S2的本地控制器为LC2,网络的中心控制器为CC1的条件下,如果不满足条件2,设备D1通过下述过程从设备D5获取坐标为(x7,y7)的数据:条件2:中心控制器CC1存在一个控制器表项,该横坐标x7属于控制器表项的横坐标区间且纵坐标y7属于控制器表项的纵坐标区间;
步骤701:开始;
步骤702:设备D1发送一个请求消息,该请求消息的消息类型值为4,接口ID集合为空,坐标为(x7,y7),负载为空;
步骤703:判断是本地控制器LC1从接口t1还是交换机从接口t2接收到该请求消息,如果是本地控制器LC1则执行步骤705,否则执行步骤704;
步骤704:交换机将接口t2加入到该请求消息的接口ID集合且作为最后一个元素,从上游接口发送该请求消息,执行步骤703;
步骤705:本地控制器LC1将接口t3加入到该请求消息的接口ID集合且作为最后一个元素;本地控制器LC1从与中心控制器CC1链接的接口转发该请求消息;中心控制器CC1从接口t4接收到该请求消息后,将接口t4加入到该请求消息的接口ID集合且作为最后一个元素,然后查看控制器表,根据公式(1)计算每个控制器表项E1与坐标(x7,y7)之间的距离d1:公式(1)中,xmin1为控制器表项E1的横坐标区间的下限,xmax1为控制器表项E1的横坐标区间的上限,ymin1为控制器表项E1的纵坐标区间的下限,ymax1为控制器表项E1的纵坐标区间的上限;
中心控制器CC1选择距离值最小的n个控制器表项,n为正整数,对于每个选择的控制器表项,中心控制器CC1从该控制器表项的接口ID域值所标识的接口转发该请求消息;本地控制器从接口t5接收到该请求消息后,将接口t5加入到该请求消息的接口ID集合且作为最后一个元素,该本地控制器查看交换机表,选择一个交换机表项,该交换机表项的坐标与该请求消息的坐标距离最近,将该交换机表项的接口ID集合加入到该请求消息的接口ID集合,且该交换机表项的接口ID集合的第一个元素在该请求消息的接口ID集合的最后一个元素之后;本地控制器选择一个接口,该接口的接口ID等于该请求消息的接口ID集合中的最后一个元素,从该请求消息的接口ID集合中删除最后一个元素,从选中的接口发送该请求消息;
步骤706:判断末端交换机还是中间交换机接收到请求消息,如果是末端交换机接收到请求消息,则执行步骤708,否则执行步骤707;
步骤707:中间交换机选择一个接口,该接口的接口ID等于该请求消息的接口ID集合中的最后一个元素,从该请求消息的接口ID集合中删除最后一个元素,从选中的接口发送该请求消息;执行步骤706;
步骤708:末端交换机接收到该请求消息后,查看设备表,如果存在一个设备表项,该设备表项的坐标域值等于该请求消息的坐标,则执行步骤709,否则执行步骤716;
步骤709:接收到请求消息的末端交换机选择一个设备表项,该设备表项的坐标域值等于该请求消息的坐标,从该设备表项的接口发送该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的消息类型值为5,接口ID集合等于该请求消息的接口ID集合,坐标等于该请求消息的坐标,负载为响应数据;
步骤710:判断是本地控制器还是中间交换机接收到该响应消息,如果是本地控制器则执行步骤712,否则执行步骤711;
步骤711:中间交换机从上游接口转发该响应消息,执行步骤710;
步骤712:本地控制器选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;
步骤713:如果设备D1接收到响应消息,则执行步骤715,否则执行步骤714;
步骤714:控制器或者交换机接收到该响应消息后,选择一个接口,该接口的接口ID等于该响应消息的接口ID集合中的最后一个元素,从该响应消息的接口ID集合中删除最后一个元素,从选中的接口发送该响应消息;执行步骤713;
步骤715:设备D1接收到该响应消息后,保存该响应消息负载中的数据;
步骤716:结束。