专利摘要
本发明提供了一种基于多路径的软件定义网络实现方法,所述网络包括一个核心控制器,两个以上的本地控制器,交换机和设备;本地控制器用于管理交换机,核心控制器用于管理本地控制器,设备为末端设备;设备通过交换机实现通信;所述网络通过本发明所提供的实现方法可快速获取网络数据,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
权利要求
1.一种基于多路径的软件定义网络实现方法,其特征在于,所述网络包括一个核心控制器,两个以上的本地控制器,交换机和设备;本地控制器用于管理交换机,核心控制器用于管理本地控制器,设备为末端设备;设备通过交换机实现通信;
一个核心控制器具有两个以上的接口,每个接口与一个本地控制器链路相连;一个本地控制器具有上游接口和两个以上的下游接口,上游接口与核心控制器链路相连,下游接口与交换机链路相连;
一个交换机具有两个以上的上游接口和两个以上的下游接口,每个上游接口与一个交换机或者本地控制器链路相连,每个下游接口与一个交换机或者一个设备链路相连;
交换机包括骨干交换机和接入交换机,骨干交换机的下游接口与交换机链路相连,接入交换机的下游接口与设备链路相连;
一个设备具有一个接口,该接口与接入交换机链路相连;
骨干交换机SW1的上游接口如果链接另一个骨干交换机SW2,且骨干交换机SW2与本地控制器LC2多跳可达,那么骨干交换机SW2与本地控制器LC2的距离小于骨干交换器SW1与本地控制器LC2的距离;
一个设备或者接入交换机由一个地址标识,一个地址由路由前缀和硬件ID构成;每个接入交换机的地址的硬件ID为0;接入交换机的路由前缀预先设置;
接入交换机定期发送信标消息,该信标消息的源地址为该接入交换机的地址,目的地址为广播地址,广播地址的每个比特位为1;设备接收到信标消息后,如果该信标消息的源地址的硬件ID为0,该设备则将自己的硬件ID与该信标消息的源地址的路由前缀相结合构建成一个地址;
接入交换机保存一个邻居表,一个邻居表项包括地址域,接口ID域和生命周期域;
一个接口由接口ID唯一标识,接口ID为f的接口可以简写为接口f;
设备D1与接入交换机ES1链路相连,设备D1获取地址后,执行下述过程建立邻居表:
步骤101:开始;
步骤102:设备D1发送一个信标消息,该信标消息的源地址为设备D1的地址,目的地址为接入交换机ES1的地址;
步骤103:接入交换机ES1从接口f1接收到信标消息后,查看邻居表,如果存在一个邻居表项,该邻居表项的接口ID为f1,接入交换机ES1则将该邻居表项的地址域更新为该信标消息的源地址,将该邻居表项的生命周期设置为最大值;否则,接入交换机ES1创建一个邻居表项,该邻居表项的接口ID为f1,该邻居表项的地址域为该信标消息的源地址,该邻居表项的生命周期设置为最大值;
步骤104:结束;
一个本地控制器维护一个本地控制器前缀表,本地控制器前缀表项包含路由前缀域,接口ID集合域和生命周期域;
一个核心控制器维护一个核心控制器前缀表,核心控制器前缀表项包含路由前缀域和接口域;
接入交换机ES1定期执行下述操作以建立前缀表:
步骤201:开始;
步骤202:接入交换机ES1设置一个接口ID集合参数s1,参数s1的初始值为空,接入交换机ES1从每个上游接口发送一个发布消息,该发布消息的源地址为接入交换机ES1的地址,目的地址为空,负载为参数s1;
步骤203:判断是本地控制器从接口x2还是交换机从接口x1接收到发布消息,如果是本地控制器则执行步骤205,否则执行步骤204;
步骤204:交换机从接口x1接收到发布消息后,将接口x1加入到该发布消息负载中的参数s1中并作为最后一个元素存在,从每个上游接口转发该发布消息,执行步骤203;
步骤205:本地控制器从接口x2接收到发布消息后,将接口x2加入到该发布消息负载中的参数s1中并作为最后一个元素存在;该本地控制器查看本地控制器前缀表,判断是否存在一个本地控制器前缀表项,该本地控制器前缀表项的路由前缀等于该发布消息源地址的路由前缀,且接口ID集合等于该发布消息负载中的参数s1,如果存在则本地控制器将该前缀表项的生命周期设置为最大值;否则,该本地控制器创建一个前缀表项,该前缀表项的路由前缀等于该发布消息源地址的路由前缀,接口ID集合等于该发布消息负载中的参数s1,将该前缀表项的生命周期设置为最大值;
步骤206:接收到发布消息的本地控制器查看本地控制器前缀表,判断是否只有一个本地控制器前缀表项的路由前缀域值等于该发布消息的源地址的路由前缀,如果是则执行步骤207,否则执行步骤208;
步骤207:接收到发布消息的本地控制器从上游接口发送一个前缀发布消息,该前缀发布消息的源地址和目的地址均为空,负载为接收到的发布消息的源地址的路由前缀;核心控制器从接口x3接收到该前缀发布消息后,创建一个核心控制器前缀表项,该核心控制器前缀表项的路由前缀域值等于该前缀发布消息负载中的路由前缀,接口ID域值等于x3;
步骤208:结束;
如果本地控制器LC1检测到前缀表项E1的生命周期衰减为0,则执行下述操作:步骤301:开始;
步骤302:本地控制器LC1查看本地控制器前缀表,判断是否至少存在两个前缀表项,这两个前缀表项的路由前缀等于前缀表项E1的路由前缀,如果是则执行步骤303,否则执行步骤304;
步骤303:本地控制器LC1从前缀表中删除前缀表项E1,执行步骤306;
步骤304:本地控制器LC1从上游接口发送一个删除消息,该删除消息的源地址和目的地址为空,负载为前缀表项E1的路由前缀,本地控制器LC1然后删除前缀表项E1;
步骤305:核心控制器从接口x4接收到删除消息后,选择一个前缀表项,该前缀表项的路由前缀等于该删除消息负载中的路由前缀且接口ID等于x4,删除选中的前缀表项;
步骤306:结束;
设备D1与接入交换机ES1链路相连,设备D2与接入交换机ES2链路相连;设备D1通过下述过程实现与设备D2的通信:
步骤401:开始;
步骤402:设备D1发送请求消息,该请求消息的源地址为设备D1的地址,目的地址为设备D2的地址,负载为随机数R1;接入交换机ES1接收到该请求消息后,从每个上游接口转发该请求消息;
步骤403:如果本地控制器接收到该请求消息,则执行步骤405,否则执行步骤404;
步骤404:从下游接口接收到请求消息的交换机从每个上游接口转发该请求消息,执行步骤403;
步骤405:本地控制器从一个下游接口接收到该请求消息后,查看前缀表,判断是否至少存在一个前缀表项,该前缀表项的路由前缀等于该请求消息的目的地址的路由前缀,如果是则执行步骤406,否则执行步骤407;
步骤406:接收到请求消息的本地控制器选择所有路由前缀等于该请求消息目的地址的路由前缀的前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该请求消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该请求消息,执行步骤408;
步骤407:接收到请求消息的本地控制器从上游接口转发该请求消息,核心控制器接收到请求消息后,选择路由前缀等于该请求消息目的地址的路由前缀的所有前缀表项,针对每个前缀表项,该核心控制器从该前缀表项的接口ID域值所标识的接口转发该请求消息;本地控制器从上游接口接收到请求消息后,选择路由前缀等于该请求消息目的地址的路由前缀的所有前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该请求消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该请求消息;
步骤408:判断是否设备D2接收到请求消息,如果是则执行步骤412,否则执行步骤409;
步骤409:判断是否接入控制器ES2接收到请求消息,如果是则执行步骤410,否则执行步骤411;
步骤410:接入控制器ES2接收到请求消息后,选择一个邻居表项,该邻居表项的地址域值等于该请求消息的目的地址,从该邻居表项的接口ID域值所标识的接口转发该请求消息,执行步骤408;
步骤411:交换机从上游接口接收到该请求消息后,选择该请求消息负载中的接口ID集合中的最后一个元素所标识的接口,从该接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤408;
步骤412:判断设备D2是否在预定时间PT1内接收到具有相同随机数,相同源地址和相同目的地址的请求消息,如果是,则执行步骤423,否则执行步骤413;
步骤413:设备D2保存接收到的请求消息,发送一个响应消息,该响应消息的源地址为该请求消息的目的地址,该响应消息的目的地址为该请求消息的源地址,负载为响应数据以及该请求消息负载中的随机数;接入交换机ES2接收到该响应消息后,从每个上游接口转发该响应消息;
步骤414:判断是否本地控制器接收到该响应消息,如果是则执行步骤416,否则执行步骤415;
步骤415:从下游接口接收到响应消息的交换机从每个上游接口转发该响应消息,执行步骤414;
步骤416:本地控制器从一个下游接口接收到该响应消息后,查看前缀表,判断是否至少存在一个前缀表项,该前缀表项的路由前缀等于该响应消息的目的地址的路由前缀,如果是则执行步骤417,否则执行步骤418;
步骤417:接收到响应消息的本地控制器选择所有路由前缀等于该响应消息目的地址的路由前缀的前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该响应消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该响应消息,执行步骤419;
步骤418:接收到响应消息的本地控制器从上游接口转发该响应消息,核心控制器接收到响应消息后,选择路由前缀等于该响应消息目的地址的路由前缀的所有前缀表项,针对每个前缀表项,该核心控制器从该前缀表项的接口ID域值所标识的接口转发该响应消息;本地控制器从上游接口接收到响应消息后,选择路由前缀等于该响应消息目的地址的路由前缀的所有前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该响应消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该响应消息;
步骤419:判断是否设备D1接收到响应消息,如果是则执行步骤423,否则执行步骤420;
步骤420:判断是否接入控制器ES1接收到响应消息,如果是则执行步骤421,否则执行步骤422;
步骤421:接入控制器ES1接收到响应消息后,选择一个邻居表项,该邻居表项的地址域值等于该响应消息的目的地址,从该邻居表项的接口ID域值所标识的接口转发该响应消息,执行步骤419;
步骤422:交换机从上游接口接收到该响应消息后,选择该响应消息负载中的接口ID集合中的最后一个元素所标识的接口,从该接口ID集合中删除最后一个元素,从选中的接口转发该响应消息,执行步骤419;
步骤423:判断设备D1是否在预定时间PT1内接收到具有相同随机数,相同源地址和相同目的地址的响应消息,如果是则执行步骤425,否则执行步骤424;
步骤424:设备D1保存接收到的响应消息中的响应数据,执行步骤426;
步骤425:设备D1丢弃接收到的响应消息;
步骤426:结束。
说明书
技术领域
本发明涉及一种实现方法,尤其涉及的是一种基于多路径的软件定义网络实现方法。
背景技术
软件定义网络作为一种新型通信网络,能够实现节点之间的多跳无线通信。随着网络技术的不断发展以及各种新应用的不断涌现,迫切需要提高网络性能。
目前,研究人员提出了通过软件定义网络获取网络服务的模式并定义了相应的协议栈,但是由于软件定义网络的体系结构与传统网络的体系结构不同,现有的网络获取服务的方法具有一些局限性。因此需要提出一种低延迟的软件定义网络实现方法,从而提高服务质量。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于多路径的软件定义网络实现方法。
技术方案:本发明公开了一种基于多路径的软件定义网络实现方法,所述网络包括一个核心控制器,两个以上的本地控制器,交换机和设备;本地控制器用于管理交换机,核心控制器用于管理本地控制器,设备为末端设备,例如电脑;设备通过交换机实现通信;
一个核心控制器具有两个以上的接口,每个接口与一个本地控制器链路相连;一个本地控制器具有上游接口和两个以上的下游接口,上游接口与核心控制器链路相连,下游接口与交换机链路相连;
一个交换机具有两个以上的上游接口和两个以上的下游接口,每个上游接口与一个交换机或者本地控制器链路相连,每个下游接口与一个交换机或者一个设备链路相连;
交换机包括骨干交换机和接入交换机,骨干交换机的下游接口与交换机链路相连,接入交换机的下游接口与设备链路相连;
一个设备具有一个接口,该接口与接入交换机链路相连;
骨干交换机SW1的上游接口如果链接另一个骨干交换机SW2,且骨干交换机SW2与本地控制器LC2多跳可达,那么骨干交换机SW2与本地控制器LC2的距离小于骨干交换器SW1与本地控制器LC2的距离;
一个设备或者接入交换机由一个地址标识,一个地址由路由前缀和硬件ID构成,硬件ID可以是MAC地址;每个接入交换机的地址的硬件ID为0;接入交换机的路由前缀预先设置,例如0xABCD,接入交换机的路由前缀设置根据地域设置,如同现在的IP地址的路由前缀;
接入交换机定期发送信标消息,该信标消息的源地址为该接入交换机的地址,目的地址为广播地址,广播地址的每个比特位为1;设备接收到信标消息后,如果该信标消息的源地址的硬件ID为0,该设备则将自己的硬件ID与该信标消息的源地址的路由前缀相结合构建成一个地址;
接入交换机保存一个邻居表,一个邻居表项包括地址域,接口ID域和生命周期域;
一个接口由接口ID唯一标识,接口ID为f的接口可以简写为接口f;
设备D1与接入交换机ES1链路相连,设备D1获取地址后,执行下述过程建立邻居表:
步骤101:开始;
步骤102:设备D1发送一个信标消息,该信标消息的源地址为设备D1的地址,目的地址为接入交换机ES1的地址;
步骤103:接入交换机ES1从接口f1接收到信标消息后,查看邻居表,如果存在一个邻居表项,该邻居表项的接口ID为f1,接入交换机ES1则将该邻居表项的地址域更新为该信标消息的源地址,将该邻居表项的生命周期设置为最大值,例如100ms;否则,接入交换机ES1创建一个邻居表项,该邻居表项的接口ID为f1,该邻居表项的地址域为该信标消息的源地址,该邻居表项的生命周期设置为最大值;
步骤104:结束。
设备通过上述过程建立邻居表,这样接入交换机可以获取设备的地址以及该设备连接的接口,根据接口和地址信息实现消息地正确转发。上述过程通过生命周期控制设备地接口和地址信息的有效性,从而确保了转发消息地正确性和通信地正确性以及实时性。
本发明所述方法中,一个本地控制器维护一个本地控制器前缀表,本地控制器前缀表项包含路由前缀域,接口ID集合域和生命周期域;
一个核心控制器维护一个核心控制器前缀表,核心控制器前缀表项包含路由前缀域和接口域;
接入交换机ES1定期执行下述操作以建立前缀表:
步骤201:开始;
步骤202:接入交换机ES1设置一个接口ID集合参数s1,参数s1的初始值为空,接入交换机ES1从每个上游接口发送一个发布消息,该发布消息的源地址为接入交换机ES1的地址,目的地址为空,负载为参数s1;
步骤203:判断是本地控制器从接口x2还是交换机从接口x1接收到发布消息,如果是本地控制器则执行步骤205,否则执行步骤204;
步骤204:交换机从接口x1接收到发布消息后,将接口x1加入到该发布消息负载中的参数s1中并作为最后一个元素存在,从每个上游接口转发该发布消息,执行步骤203;
步骤205:本地控制器从接口x2接收到发布消息后,将接口x2加入到该发布消息负载中的参数s1中并作为最后一个元素存在;该本地控制器查看本地控制器前缀表,判断是否存在一个本地控制器前缀表项,该本地控制器前缀表项的路由前缀等于该发布消息源地址的路由前缀,且接口ID集合等于该发布消息负载中的参数s1,如果存在则本地控制器将该前缀表项的生命周期设置为最大值,例如500ms;否则,该本地控制器创建一个前缀表项,该前缀表项的路由前缀等于该发布消息源地址的路由前缀,接口ID集合等于该发布消息负载中的参数s1,将该前缀表项的生命周期设置为最大值;
步骤206:接收到发布消息的本地控制器查看本地控制器前缀表,判断是否只有一个本地控制器前缀表项的路由前缀域值等于该发布消息的源地址的路由前缀,如果是则执行步骤207,否则执行步骤208;
步骤207:接收到发布消息的本地控制器从上游接口发送一个前缀发布消息,该前缀发布消息的源地址和目的地址均为空,负载为接收到的发布消息的源地址的路由前缀;核心控制器从接口x3接收到该前缀发布消息后,创建一个核心控制器前缀表项,该核心控制器前缀表项的路由前缀域值等于该前缀发布消息负载中的路由前缀,接口ID域值等于x3;
步骤208:结束。
接入交换机通过上述过程建立本地控制器前缀表和核心控制器前缀表,这样,本地控制器通过上述过程能够建立到达目的接入交换机的最优路由路径,由于上述过程通过生命周期来控制路由路径的有效性,从而确保了该路由路径的实时性和正确性。
本发明所述方法中,如果本地控制器LC1检测到前缀表项E1的生命周期衰减为0,则执行下述操作:
步骤301:开始;
步骤302:本地控制器LC1查看本地控制器前缀表,判断是否至少存在两个前缀表项,这两个前缀表项的路由前缀等于前缀表项E1的路由前缀,如果是则执行步骤303,否则执行步骤304;
步骤303:本地控制器LC1从前缀表中删除前缀表项E1,执行步骤306;
步骤304:本地控制器LC1从上游接口发送一个删除消息,该删除消息的源地址和目的地址为空,负载为前缀表项E1的路由前缀,本地控制器LC1然后删除前缀表项E1;
步骤305:核心控制器从接口x4接收到删除消息后,选择一个前缀表项,该前缀表项的路由前缀等于该删除消息负载中的路由前缀且接口ID等于x4,删除选中的前缀表项;
步骤306:结束。
本地控制器通过上述过程删除生命周期衰减为0的本地控制器前缀表,并更新核心控制器前缀表,这样,核心控制器和本地控制器能够实现消息的正确转发,从而确保数据通信的正确性和有效性。
本发明所书方法中,设备D1与接入交换机ES1链路相连,设备D2与接入交换机ES2链路相连;设备D1通过下述过程实现与设备D2的通信:
步骤401:开始;
步骤402:设备D1发送请求消息,该请求消息的源地址为设备D1的地址,目的地址为设备D2的地址,负载为随机数R1;接入交换机ES1接收到该请求消息后,从每个上游接口转发该请求消息;
步骤403:如果本地控制器接收到该请求消息,则执行步骤405,否则执行步骤404;
步骤404:从下游接口接收到请求消息的交换机从每个上游接口转发该请求消息,执行步骤403;
步骤405:本地控制器从一个下游接口接收到该请求消息后,查看前缀表,判断是否至少存在一个前缀表项,该前缀表项的路由前缀等于该请求消息的目的地址的路由前缀,如果是则执行步骤406,否则执行步骤407;
步骤406:接收到请求消息的本地控制器选择所有路由前缀等于该请求消息目的地址的路由前缀的前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该请求消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该请求消息,执行步骤408;
步骤407:接收到请求消息的本地控制器从上游接口转发该请求消息,核心控制器接收到请求消息后,选择路由前缀等于该请求消息目的地址的路由前缀的所有前缀表项,针对每个前缀表项,该核心控制器从该前缀表项的接口ID域值所标识的接口转发该请求消息;本地控制器从上游接口接收到请求消息后,选择路由前缀等于该请求消息目的地址的路由前缀的所有前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该请求消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该请求消息;
步骤408:判断是否设备D2接收到请求消息,如果是则执行步骤412,否则执行步骤409;
步骤409:判断是否接入控制器ES2接收到请求消息,如果是则执行步骤410,否则执行步骤411;
步骤410:接入控制器ES2接收到请求消息后,选择一个邻居表项,该邻居表项的地址域值等于该请求消息的目的地址,从该邻居表项的接口ID域值所标识的接口转发该请求消息,执行步骤408;
步骤411:交换机从上游接口接收到该请求消息后,选择该请求消息负载中的接口ID集合中的最后一个元素所标识的接口,从该接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤408;
步骤412:判断设备D2是否在预定时间PT1内接收到具有相同随机数,相同源地址和相同目的地址的请求消息,预定时间PT1可以设置为500ms,如果是,则执行步骤423,否则执行步骤413;
步骤413:设备D2保存接收到的请求消息,发送一个响应消息,该响应消息的源地址为该请求消息的目的地址,该响应消息的目的地址为该请求消息的源地址,负载为响应数据以及该请求消息负载中的随机数;接入交换机ES2接收到该响应消息后,从每个上游接口转发该响应消息;
步骤414:判断是否本地控制器接收到该响应消息,如果是则执行步骤416,否则执行步骤415;
步骤415:从下游接口接收到响应消息的交换机从每个上游接口转发该响应消息,执行步骤414;
步骤416:本地控制器从一个下游接口接收到该响应消息后,查看前缀表,判断是否至少存在一个前缀表项,该前缀表项的路由前缀等于该响应消息的目的地址的路由前缀,如果是则执行步骤417,否则执行步骤418;
步骤417:接收到响应消息的本地控制器选择所有路由前缀等于该响应消息目的地址的路由前缀的前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该响应消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该响应消息,执行步骤419;
步骤418:接收到响应消息的本地控制器从上游接口转发该响应消息,核心控制器接收到响应消息后,选择路由前缀等于该响应消息目的地址的路由前缀的所有前缀表项,针对每个前缀表项,该核心控制器从该前缀表项的接口ID域值所标识的接口转发该响应消息;本地控制器从上游接口接收到响应消息后,选择路由前缀等于该响应消息目的地址的路由前缀的所有前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该响应消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该响应消息;
步骤419:判断是否设备D1接收到响应消息,如果是则执行步骤423,否则执行步骤420;
步骤420:判断是否接入控制器ES1接收到响应消息,如果是则执行步骤421,否则执行步骤422;
步骤421:接入控制器ES1接收到响应消息后,选择一个邻居表项,该邻居表项的地址域值等于该响应消息的目的地址,从该邻居表项的接口ID域值所标识的接口转发该响应消息,执行步骤419;
步骤422:交换机从上游接口接收到该响应消息后,选择该响应消息负载中的接口ID集合中的最后一个元素所标识的接口,从该接口ID集合中删除最后一个元素,从选中的接口转发该响应消息,执行步骤419;
步骤423:判断设备D1是否在预定时间PT1内接收到具有相同随机数,相同源地址和相同目的地址的响应消息,如果是则执行步骤425,否则执行步骤424;
步骤424:设备D1保存接收到的响应消息中的响应数据,执行步骤426;
步骤425:设备D1丢弃接收到的响应消息;
步骤426:结束。
设备通过上述过程实现数据通信,由于上述过程通过本地控制器前缀表实现数据通信,无需建立路由路径,从而大幅度降低了数据通信延迟和代价。同时,数据通信通过多个路由路径进行,从而确保了数据通信的成功率。
有益效果:本发明提供了一种基于多路径的软件定义网络实现方法,所述网络通过本发明所提供的实现方法可快速获取网络数据,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的建立邻居表流程示意图。
图2为本发明所述的建立前缀表流程示意图。
图3为本发明所述的更新前缀表流程示意图。
图4为本发明所述的数据通信流程示意图。
具体实施方式:
本发明提供了一种基于多路径的软件定义网络实现方法,所述网络通过本发明所提供的实现方法可快速获取网络数据,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
图1为本发明所述的建立邻居表流程示意图。所述网络包括一个核心控制器,两个以上的本地控制器,交换机和设备;本地控制器用于管理交换机,核心控制器用于管理本地控制器,设备为末端设备;设备通过交换机实现通信;
一个核心控制器具有两个以上的接口,每个接口与一个本地控制器链路相连;一个本地控制器具有上游接口和两个以上的下游接口,上游接口与核心控制器链路相连,下游接口与交换机链路相连;
一个交换机具有两个以上的上游接口和两个以上的下游接口,每个上游接口与一个交换机或者本地控制器链路相连,每个下游接口与一个交换机或者一个设备链路相连;
交换机包括骨干交换机和接入交换机,骨干交换机的下游接口与交换机链路相连,接入交换机的下游接口与设备链路相连;
一个设备具有一个接口,该接口与接入交换机链路相连;
骨干交换机SW1的上游接口如果链接另一个骨干交换机SW2,且骨干交换机SW2与本地控制器LC2多跳可达,那么骨干交换机SW2与本地控制器LC2的距离小于骨干交换器SW1与本地控制器LC2的距离;
一个设备或者接入交换机由一个地址标识,一个地址由路由前缀和硬件ID构成,硬件ID可以是MAC地址;每个接入交换机的地址的硬件ID为0;接入交换机的路由前缀预先设置,例如0xABCD,接入交换机的路由前缀设置根据地域设置,如同现在的IP地址的路由前缀;
接入交换机定期发送信标消息,该信标消息的源地址为该接入交换机的地址,目的地址为广播地址,广播地址的每个比特位为1;设备接收到信标消息后,如果该信标消息的源地址的硬件ID为0,该设备则将自己的硬件ID与该信标消息的源地址的路由前缀相结合构建成一个地址;
接入交换机保存一个邻居表,一个邻居表项包括地址域,接口ID域和生命周期域;
一个接口由接口ID唯一标识,接口ID为f的接口可以简写为接口f;
设备D1与接入交换机ES1链路相连,设备D1获取地址后,执行下述过程建立邻居表:
步骤101:开始;
步骤102:设备D1发送一个信标消息,该信标消息的源地址为设备D1的地址,目的地址为接入交换机ES1的地址;
步骤103:接入交换机ES1从接口f1接收到信标消息后,查看邻居表,如果存在一个邻居表项,该邻居表项的接口ID为f1,接入交换机ES1则将该邻居表项的地址域更新为该信标消息的源地址,将该邻居表项的生命周期设置为最大值,例如100ms;否则,接入交换机ES1创建一个邻居表项,该邻居表项的接口ID为f1,该邻居表项的地址域为该信标消息的源地址,该邻居表项的生命周期设置为最大值;
步骤104:结束。
图2为本发明所述的建立前缀表流程示意图。一个本地控制器维护一个本地控制器前缀表,本地控制器前缀表项包含路由前缀域,接口ID集合域和生命周期域;
一个核心控制器维护一个核心控制器前缀表,核心控制器前缀表项包含路由前缀域和接口域;
接入交换机ES1定期执行下述操作以建立前缀表:
步骤201:开始;
步骤202:接入交换机ES1设置一个接口ID集合参数s1,参数s1的初始值为空,接入交换机ES1从每个上游接口发送一个发布消息,该发布消息的源地址为接入交换机ES1的地址,目的地址为空,负载为参数s1;
步骤203:判断是本地控制器从接口x2还是交换机从接口x1接收到发布消息,如果是本地控制器则执行步骤205,否则执行步骤204;
步骤204:交换机从接口x1接收到发布消息后,将接口x1加入到该发布消息负载中的参数s1中并作为最后一个元素存在,从每个上游接口转发该发布消息,执行步骤203;
步骤205:本地控制器从接口x2接收到发布消息后,将接口x2加入到该发布消息负载中的参数s1中并作为最后一个元素存在;该本地控制器查看本地控制器前缀表,判断是否存在一个本地控制器前缀表项,该本地控制器前缀表项的路由前缀等于该发布消息源地址的路由前缀,且接口ID集合等于该发布消息负载中的参数s1,如果存在则本地控制器将该前缀表项的生命周期设置为最大值,例如500ms;否则,该本地控制器创建一个前缀表项,该前缀表项的路由前缀等于该发布消息源地址的路由前缀,接口ID集合等于该发布消息负载中的参数s1,将该前缀表项的生命周期设置为最大值;
步骤206:接收到发布消息的本地控制器查看本地控制器前缀表,判断是否只有一个本地控制器前缀表项的路由前缀域值等于该发布消息的源地址的路由前缀,如果是则执行步骤207,否则执行步骤208;
步骤207:接收到发布消息的本地控制器从上游接口发送一个前缀发布消息,该前缀发布消息的源地址和目的地址均为空,负载为接收到的发布消息的源地址的路由前缀;核心控制器从接口x3接收到该前缀发布消息后,创建一个核心控制器前缀表项,该核心控制器前缀表项的路由前缀域值等于该前缀发布消息负载中的路由前缀,接口ID域值等于x3;
步骤208:结束。
图3为本发明所述的更新前缀表流程示意图。如果本地控制器LC1检测到前缀表项E1的生命周期衰减为0,则执行下述操作:
步骤301:开始;
步骤302:本地控制器LC1查看本地控制器前缀表,判断是否至少存在两个前缀表项,这两个前缀表项的路由前缀等于前缀表项E1的路由前缀,如果是则执行步骤303,否则执行步骤304;
步骤303:本地控制器LC1从前缀表中删除前缀表项E1,执行步骤306;
步骤304:本地控制器LC1从上游接口发送一个删除消息,该删除消息的源地址和目的地址为空,负载为前缀表项E1的路由前缀,本地控制器LC1然后删除前缀表项E1;
步骤305:核心控制器从接口x4接收到删除消息后,选择一个前缀表项,该前缀表项的路由前缀等于该删除消息负载中的路由前缀且接口ID等于x4,删除选中的前缀表项;
步骤306:结束。
图4为本发明所述的数据通信流程示意图。设备D1与接入交换机ES1链路相连,设备D2与接入交换机ES2链路相连;设备D1通过下述过程实现与设备D2的通信:
步骤401:开始;
步骤402:设备D1发送请求消息,该请求消息的源地址为设备D1的地址,目的地址为设备D2的地址,负载为随机数R1;接入交换机ES1接收到该请求消息后,从每个上游接口转发该请求消息;
步骤403:如果本地控制器接收到该请求消息,则执行步骤405,否则执行步骤404;
步骤404:从下游接口接收到请求消息的交换机从每个上游接口转发该请求消息,执行步骤403;
步骤405:本地控制器从一个下游接口接收到该请求消息后,查看前缀表,判断是否至少存在一个前缀表项,该前缀表项的路由前缀等于该请求消息的目的地址的路由前缀,如果是则执行步骤406,否则执行步骤407;
步骤406:接收到请求消息的本地控制器选择所有路由前缀等于该请求消息目的地址的路由前缀的前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该请求消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该请求消息,执行步骤408;
步骤407:接收到请求消息的本地控制器从上游接口转发该请求消息,核心控制器接收到请求消息后,选择路由前缀等于该请求消息目的地址的路由前缀的所有前缀表项,针对每个前缀表项,该核心控制器从该前缀表项的接口ID域值所标识的接口转发该请求消息;本地控制器从上游接口接收到请求消息后,选择路由前缀等于该请求消息目的地址的路由前缀的所有前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该请求消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该请求消息;
步骤408:判断是否设备D2接收到请求消息,如果是则执行步骤412,否则执行步骤409;
步骤409:判断是否接入控制器ES2接收到请求消息,如果是则执行步骤410,否则执行步骤411;
步骤410:接入控制器ES2接收到请求消息后,选择一个邻居表项,该邻居表项的地址域值等于该请求消息的目的地址,从该邻居表项的接口ID域值所标识的接口转发该请求消息,执行步骤408;
步骤411:交换机从上游接口接收到该请求消息后,选择该请求消息负载中的接口ID集合中的最后一个元素所标识的接口,从该接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤408;
步骤412:判断设备D2是否在预定时间PT1内接收到具有相同随机数,相同源地址和相同目的地址的请求消息,预定时间PT1可以设置为500ms,如果是,则执行步骤423,否则执行步骤413;
步骤413:设备D2保存接收到的请求消息,发送一个响应消息,该响应消息的源地址为该请求消息的目的地址,该响应消息的目的地址为该请求消息的源地址,负载为响应数据以及该请求消息负载中的随机数;接入交换机ES2接收到该响应消息后,从每个上游接口转发该响应消息;
步骤414:判断是否本地控制器接收到该响应消息,如果是则执行步骤416,否则执行步骤415;
步骤415:从下游接口接收到响应消息的交换机从每个上游接口转发该响应消息,执行步骤414;
步骤416:本地控制器从一个下游接口接收到该响应消息后,查看前缀表,判断是否至少存在一个前缀表项,该前缀表项的路由前缀等于该响应消息的目的地址的路由前缀,如果是则执行步骤417,否则执行步骤418;
步骤417:接收到响应消息的本地控制器选择所有路由前缀等于该响应消息目的地址的路由前缀的前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该响应消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该响应消息,执行步骤419;
步骤418:接收到响应消息的本地控制器从上游接口转发该响应消息,核心控制器接收到响应消息后,选择路由前缀等于该响应消息目的地址的路由前缀的所有前缀表项,针对每个前缀表项,该核心控制器从该前缀表项的接口ID域值所标识的接口转发该响应消息;本地控制器从上游接口接收到响应消息后,选择路由前缀等于该响应消息目的地址的路由前缀的所有前缀表项,针对每个选中的前缀表项,该本地控制器将该前缀表项的接口ID集合域值加入到该响应消息负载中,选择该接口ID集合最后一个元素标识的接口,从该接口ID集合删除最后一个元素,从选中的接口转发该响应消息;
步骤419:判断是否设备D1接收到响应消息,如果是则执行步骤423,否则执行步骤420;
步骤420:判断是否接入控制器ES1接收到响应消息,如果是则执行步骤421,否则执行步骤422;
步骤421:接入控制器ES1接收到响应消息后,选择一个邻居表项,该邻居表项的地址域值等于该响应消息的目的地址,从该邻居表项的接口ID域值所标识的接口转发该响应消息,执行步骤419;
步骤422:交换机从上游接口接收到该响应消息后,选择该响应消息负载中的接口ID集合中的最后一个元素所标识的接口,从该接口ID集合中删除最后一个元素,从选中的接口转发该响应消息,执行步骤419;
步骤423:判断设备D1是否在预定时间PT1内接收到具有相同随机数,相同源地址和相同目的地址的响应消息,如果是则执行步骤425,否则执行步骤424;
步骤424:设备D1保存接收到的响应消息中的响应数据,执行步骤426;
步骤425:设备D1丢弃接收到的响应消息;
步骤426:结束。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的一种基于多路径的软件定义网络实现方法,性能分析如下:当网络数据传输量较小时,设备获取数据的成功率较高,当网络数据传输量较大时,设备获取数据的成功率稍微降低;网络获取数据的平均成功率为99.5%。
表1仿真参数
本发明提供了一种基于多路径的软件定义网络实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
一种基于多路径的软件定义网络实现方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0