当前位置:数据网络行业动态 → 正文

基于网络流量的SDN最短路径转发应用

责任编辑:editor005 作者:李呈 |来源:企业网D1Net  2015-12-02 14:56:59 本文摘自:SDNLAB

网络的转发是通信的基本功能,其完成信息在网络中传递,实现有序的数据交换。通过SDN控制器的集中控制,可以轻松实现基础的转发算法有二层MAC学习转发和基于跳数的最短路径算法。然而,网络跳数并不是决定路径优劣的唯一状态。除了跳数以外,还有带宽,时延等标准。本文将介绍如何通过SDN控制器Ryu开发基于流量的最短路径转发应用。

Forwarding Algorithm

目前基于流量的路由算法基本的解决思路有两种:

(1) 首先基于跳数计算最优K条路径,然后在这些路径中选择可用带宽最大的路径。

(2) 首先基于跳数计算最优路径,归一化路径的评价分数,然后基于流量计算最优路径,归一化基于带宽的评价;设置跳数和带宽的权重,对基于跳数和带宽的评分求其加权总和;按照加权求和值降序排序,取前K条作为最优评价路径。

本文以第一种算法为例,介绍基于网络流量的最短路径转发应用开发。第二种算法基于前者的基础修改即可完成。

Network Awareness

首先我们需要编写一个网络感知应用,用于发现网络的资源,包括节点,链路,终端主机等。并根据拓扑信息计算基于条数的最短路径。开发此应用基本步骤如下:

创建继承app_manager.RyuApp的应用network_awareness从topology.switches获取拓扑信息,包括交换机节点信息,链路信息使用Networkx 创建拓扑图的对象,用于存储网络拓扑使用Networkx的函数all_simple_paths(G, source, target, cutoff=None)计算K条最优路径并存储,该函数实现了Yen's algorithm

示例代码可由muzixing/ryu/network_awareness获取。

Note that: 以上的示例代码中,拓扑信息的存储并没有使用networkx,所以读者需要独立完成基于networkx的存储和算法调用部分。

Network Monitor

第二个应用是网络流量监控应用。网络流量监控应用完成网络流量的实时监控,计算出实时的流量统计数据。基于本应用的数据,可以完成转发算法的第二部分内容。示例代码可由muzixing/ryu/network_monitor获取。

为了让其他模块获取到最新的流量信息,可在Ryu中自定义事件,具体教程请查看《基于Ryu打造自定义控制器》的自定义事件部分内容。不定义事件的情况下,需要将此模块作为新模块的CONTEXT。详情可阅读《Ryu:模块间通信机制分析》的相关内容。

Forwarding Application

基于以上两个模块的数据,转发应用模块需要完成如下几个步骤,从而完成基于流量的最优路径转发。

获取network awareness和network monitor的数据将network monitor的数据整合到networkx存储的网络拓扑信息中比较最短K条路径中各路径的剩余带宽,选择最优路径,剩余路径为备份路径和逃生路径基于路径信息,安装流表项

整合流量信息代码示例代码如下, 其中,link2port为链路信息,bw_dict为network monitor模块的流量数据。

关键字:跳数最短路径网络流量

本文摘自:SDNLAB

x 基于网络流量的SDN最短路径转发应用 扫一扫
分享本文到朋友圈
当前位置:数据网络行业动态 → 正文

基于网络流量的SDN最短路径转发应用

责任编辑:editor005 作者:李呈 |来源:企业网D1Net  2015-12-02 14:56:59 本文摘自:SDNLAB

网络的转发是通信的基本功能,其完成信息在网络中传递,实现有序的数据交换。通过SDN控制器的集中控制,可以轻松实现基础的转发算法有二层MAC学习转发和基于跳数的最短路径算法。然而,网络跳数并不是决定路径优劣的唯一状态。除了跳数以外,还有带宽,时延等标准。本文将介绍如何通过SDN控制器Ryu开发基于流量的最短路径转发应用。

Forwarding Algorithm

目前基于流量的路由算法基本的解决思路有两种:

(1) 首先基于跳数计算最优K条路径,然后在这些路径中选择可用带宽最大的路径。

(2) 首先基于跳数计算最优路径,归一化路径的评价分数,然后基于流量计算最优路径,归一化基于带宽的评价;设置跳数和带宽的权重,对基于跳数和带宽的评分求其加权总和;按照加权求和值降序排序,取前K条作为最优评价路径。

本文以第一种算法为例,介绍基于网络流量的最短路径转发应用开发。第二种算法基于前者的基础修改即可完成。

Network Awareness

首先我们需要编写一个网络感知应用,用于发现网络的资源,包括节点,链路,终端主机等。并根据拓扑信息计算基于条数的最短路径。开发此应用基本步骤如下:

创建继承app_manager.RyuApp的应用network_awareness从topology.switches获取拓扑信息,包括交换机节点信息,链路信息使用Networkx 创建拓扑图的对象,用于存储网络拓扑使用Networkx的函数all_simple_paths(G, source, target, cutoff=None)计算K条最优路径并存储,该函数实现了Yen's algorithm

示例代码可由muzixing/ryu/network_awareness获取。

Note that: 以上的示例代码中,拓扑信息的存储并没有使用networkx,所以读者需要独立完成基于networkx的存储和算法调用部分。

Network Monitor

第二个应用是网络流量监控应用。网络流量监控应用完成网络流量的实时监控,计算出实时的流量统计数据。基于本应用的数据,可以完成转发算法的第二部分内容。示例代码可由muzixing/ryu/network_monitor获取。

为了让其他模块获取到最新的流量信息,可在Ryu中自定义事件,具体教程请查看《基于Ryu打造自定义控制器》的自定义事件部分内容。不定义事件的情况下,需要将此模块作为新模块的CONTEXT。详情可阅读《Ryu:模块间通信机制分析》的相关内容。

Forwarding Application

基于以上两个模块的数据,转发应用模块需要完成如下几个步骤,从而完成基于流量的最优路径转发。

获取network awareness和network monitor的数据将network monitor的数据整合到networkx存储的网络拓扑信息中比较最短K条路径中各路径的剩余带宽,选择最优路径,剩余路径为备份路径和逃生路径基于路径信息,安装流表项

整合流量信息代码示例代码如下, 其中,link2port为链路信息,bw_dict为network monitor模块的流量数据。

关键字:跳数最短路径网络流量

本文摘自:SDNLAB

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^