Fattree topo and iperfmulti function in mininet
This article will show you 1)how to build a fattree topo and 2)how to extend the iperfmulti function in mininet.
本篇博文将讲述1)如何搭建fatree网络拓扑和2)如何在mininet中拓展iperfmulti功能。
众所周知,数据中心是目前网络研究的一个热门领域。随着云计算的兴起与发展,会对数据中心网络提出更多的需求,也为学术研究提供了更多的课题。TE(Traffic Engineering)是网络研究中最基础的研究之一,在TE中Load balance是比较主要的研究内容之一。 然而由于数据中心网络的流量走势与传统网络不同,导致数据中心网络与传统网络的架构有所不同。在传统网络中上下行流量在总流量中占据很大比重,而相比之下,数据中心的流量分类中,横向流量的比重要远远大于传统网络架构的比重。为了更好解决数据中心网络流量问题,数据中心架构的设计就变得非常重要,在众多网络架构中,Fat-tree架构是比较出名和成功的。
SDN兴起于校园网,盛开于数据中心,这是一种比较准确的描述。目前SDN的研究领域内 ...
read moreRYU核心源码解读:OFPHandler,Controller,RyuApp和AppManager
每接触一个控制器我都会习惯性的把控制器的源码读一读,走一走处理流程,RYU也不例外。本篇博文将从main函数入手,讲述RYU的ryuapp基类细节、app_manager类如何load apps,注册并运行application,Event的产生以及分发,还有最重要的应用ofp_handler。文章将以RYU真实运行流程作为主线,详细讲述RYU如何运作。如果文中出现理解错的地方,敬请指出,万分感谢!转载请声明原出处。
main()
RYU的main函数在ryu/cmd/manager.py文件中。main函数中CONF部分已经在在前一篇《RYU学习:oslo》已经有所介绍,所以这次关注的重点的是后续部分,如app_manager如何工作。
def main(args=None, prog=None):
try:
CONF(args=args, prog=prog,
project='ryu', version='ryu-manager %s' % version,
default_config_files=['/usr/local/etc/ryu ...
Docker部署SDN环境
前言
5月份的时候,当我还是一个大学生的时候,有个网友问我,你有研究Docker吗?当时我连Docker是什么都不知道。谷歌之后,对Docker产生兴趣,但是一直没有时间去学习。这个周终于将这个学习计划列入了Todolist。所以我花了3天时间,认真地把这《Docker 从入门到实践》看完并实践了一遍,收获颇丰。虽然我的导师以及我自己还是觉得我在瞎转,而且我觉得没有方向的日子很痛苦。所以只好自己做计划,学习点新知识,打打基础了。本篇内容主要介绍什么是Docker、Docker简单入门以及如何使用Docker部署SDN环境,以及docker的网络配置等内容。What is Docker和Why Docker部分摘自《Docker从入门到实践》。
What is Docker
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache ...
read moreLoad 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 ...
基于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