Load balance(Multipath) Application on RYU
前言
本篇博文介绍的是如何在RYU上通过使用select group 来实现multipath,从而实现流量的调度,完成简单的负载均衡Demo。OpenFlow13中有group table,可用于实现组播和冗余容灾等功能。实验中还是用了queue,完成了链路带宽的保障。
相关工作
要完成多径传输,那么网络拓扑必然有loop,所以首先要解决由于loop而可能产生的storm。解决方案在之前一个博文中已经提出。本应用就是利用了这个思想,实现了环路风暴的解除(可能有的情况下不成功,原因未知)
网络拓扑
网络拓扑文件内容如下所示,也可以到github上下载,详情查看文章结尾。
"""Custom loop topo example
There are two paths between host1 and host2.
|--------switch2 --------|
host1 --- switch1 | switch4 ----host2
| | | |______host3
-------- switch3 ---------
|
host4
Adding the 'topos' dict ...
OpenvSwitch2.3.0 and Mininet install
前言
折腾了我两个周的事情是一定要写出来的,后来人就不用继续掉坑里了。在此感谢@南京-小L的帮助。
安装OpenvSwitch2.3.0
不需要安装。但是友情提供一键安装脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ... |
OpenVirteX:Operation and Subsystems
前言
继上篇《OpenVirteX文档概述(一):Overview and Components》之后,本篇将继续介绍OVX的Operation and Subsystems部分。主要讲述OVX内部的运作原理,本文属于个人简介,有误之处敬请指出,希望对读者有所帮助。本篇的顺序依然是按照官网文档的顺序介绍。
简介
本部分将介绍OVX内部的工作原理,如哪些内部子系统实现了哪一些功能,从而使得OVX能支持OpenFlow网络的虚拟化。以下的内容将分为如下的小点介绍:
- System Overview
- Startup and Shutdown
- The Event Loops
- Network Discovery and Presentation
- Virtualization and De-virtualization
- State Synchronization
- Reslience
- persistence
- The JSONRPC API
System Overveiw
OVX分为以下几个主要的部分:
- 一半是面向南向物理基础设施的部分 ,管理了datapath到OVX之间的OpenFlow通道,并建立和维持了一系列数据结构,用于描述物理基础网络 ...
OpenVirteX文档详解(一)——Overview and Components
前言
本篇博文将按照OpenVirteX Documentation的顺序详细介绍OpenVirteX的相关内容。完整翻译版,请查看@北邮-张歌 翻译的文章。转载请声明出处。
Overview
OpenVirteX(以下简称OVX)是onlab开发的一个网络虚拟化平台,可以实现多租户的网络虚拟化。对于租户而言,需要在OVX上注册,申请资源,配置自己的网络,指定自己的控制器。剩下的工作就由OVX完成了。OVX可以根据租户的需求,将租户的网络拓扑映射到具体的物理拓扑上,完成网络的联通。对于租户而言,看到的是一个虚拟的网络,无法看到真实的物理拓扑,也不需要关心,即租户“认为”得到了一个属于自己的真实网络。而OVX的位置相当于一个介于租户控制器和交换机之间的转换平台。面对租户,OVX就是一个物理的网络,而面对交换机,OVX就是控制器。(这种转换平台的角色可以实现很多功能,不仅仅是网络虚拟化,还可以模拟许多信息,比如在某个项目中我们将OVS模拟成一个OTN的交换机,验证了一些想法)
网络虚拟化
网络虚拟化允许多租户占用同一个网络基础设施,同时允许租户对其网络的控制能力,对于租户而言,感觉上是自己控制了整个网络。OVX通过使租户能够获取到自己的虚拟拓扑和全网的地址空间来实现网络虚拟化。前者可以允许租户自定义网络拓扑,后者则是用于隔离不同租户的流量,防止冲突。
与flowspace的切分slice,使租户使用网络的一部分不一样的是 ...
read more基于SDN的RYU应用——ARP_PROXY
前言
在传统网络中,存在着一定的广播流量,占据了一部分的网络带宽。同时,在有环的拓扑中,如果不运行某些协议,广播数据还会引起网络风暴,使网络瘫痪。传统的解决方案是运行STP(生成树协议),来解决环路带来的风暴隐患。但是这样的难题在SDN之后,解决起来似乎变得要简单一些。本文将介绍如何在控制器RYU上开发ARP代理模块,用于代理回复ARP请求,以及解决环状拓扑风暴的问题。
算法逻辑
具体的算法流程图如下:
packet_in
|
|
ARP learning
MAC_to_Port learning
|
|
| No
Multicast? -------------------------------------------->|
| |
| Yes |
| |
| |
| No |
loop? ----->(dpid,eth_src,dst_ip)learning |
| | |
| | |
| | No | No
|Yes dst_ip in arp_table? ------->dst in mac_to_port? ---->Flood
| | | |
| |Yes |Yes |
| | | |
drop ARP_REPLY flow_mod |
| | | |
| | | |
|<------------------|<------------------------------|<--------------|
|
|
end