Mininet简介
来源:互联网 发布:单片机项目承接 编辑:程序博客网 时间:2024/06/06 18:24
在Coursera SDN开放课程中,编程作业要用Mininet来完成。这里对Mininet做一个简单的介绍。
什么是Mininet
Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。
Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。
Mininet的特性
可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期
可以运行真实的程序,在Linux上运行的程序基本上可以都可以在Mininet上运行,如Wireshark
Mininet支持Openflow,在Mininet上运行的代码可以轻松移植到支持OpenFlow的硬件设备上
Mininet可以在自己的电脑,或服务器,或虚拟机,或者云(例如Amazon EC2)上运行
Mininet提供python API,简单易用
Mininet是开源项目,源代码在这里:点击打开链接
……
Mininet安装
使用VirtualBox安装Mininet虚拟机:点击打开链接
使用Mininet创建一个网络
以Coursera SDN Week3 programming assignment为例,创建一个及其简单的数据中心网络。
Data center networks typically have a tree-like topology. End-hosts connect to top-of-rack switches, which form the leaves (edges) of the tree; one or more core switches form the root; and one or more layers of aggregation switches form the middle of the tree. In a basic tree topology, each switch (except the core switch) has a single parent switch. Additional switches and links may be added to construct more complex tree topologies (e.g., fat tree) in an effort to improve fault tolerance or increase inter-rack bandwidth.
In this assignment, your task is to create a simple tree topology. You will assume each level i.e., core, aggregation, edge and host to be composed of a single layer of switches/hosts with a configurable fanout value (k) looks like:
代码:
# CustomTopo.py'''Coursera:- Software Defined Networking (SDN) course-- Module 3 Programming AssignmentProfessor: Nick FeamsterTeaching Assistant: Muhammad Shahbaz'''from mininet.topo import Topofrom mininet.net import Mininetfrom mininet.node import CPULimitedHostfrom mininet.link import TCLinkfrom mininet.util import irange,dumpNodeConnectionsfrom mininet.log import setLogLevelclass CustomTopo(Topo): "Simple Data Center Topology" "linkopts - (1:c1, 2:aggregation, 3: edge) parameters" "fanout - number of child switch per parent switch" def __init__(self, linkopts1, linkopts2, linkopts3, fanout=2, **opts): # Initialize topology and default options Topo.__init__(self, **opts) # Add your logic here ... self.fanout = fanout core = self.addSwitch('c1') for i in irange(1, fanout): aggregation = self.addSwitch('a%s' %i) self.addLink(core, aggregation, **linkopts1) for j in irange(1, fanout): edge = self.addSwitch('e%s' %(fanout*(i-1)+j)) self.addLink(aggregation, edge, **linkopts2) for k in irange(1, fanout): host = self.addHost('h%s' %((fanout*(fanout*(i-1)+j-1))+k)) self.addLink(edge, host, **linkopts3) topos = { 'custom': ( lambda: CustomTopo() ) }def simpleTest(): "Create and test a simple network" linkopts1 = dict(bw=10, delay='3ms', use_htb=True) linkopts2 = dict(bw=8, delay='4ms', loss=1, max_queue_size=900, ) linkopts3 = dict(bw=6, delay='5ms', loss=1, max_queue_size=800) topo = CustomTopo(linkopts1, linkopts2, linkopts3, fanout=2) net = Mininet(topo, host=CPULimitedHost, link=TCLink) net.start() print "Dumping host connections" dumpNodeConnections(net.hosts) print "Testing network connectivity" net.pingAll() net.stop()if __name__ == '__main__': # Tell mininet to print useful information setLogLevel('info') simpleTest()
在mininet虚拟机上执行下面操作即可创建自定义的网络拓扑。函数simpleTest()创建网络并进行了简单的ping测试,从屏幕输出可以看到创建的过程。
mininet@mininet-vm:~/mininet$ sudo python CustomTopo.py
- Mininet简介
- Mininet简介及安装过程
- mininet
- Mininet
- Mininet的简介(介绍)、安装、操作
- Mininet的简介(介绍)、安装、操作
- Mininet stratup
- Mininet学习指南
- mininet--dpctl
- mininet使用
- Mininet学习指南
- Mininet学习指南
- mininet实战
- mininet安装
- mininet安装
- Mininet Operations
- mininet安装
- ubantu12.10 mininet install
- BNUOJ 34978 汉诺塔 (概率dp)
- 错误:媒体集有 2 个媒体簇,但只提供了 1 个的解决方案
- vim自己添加//的解决方法
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 从国际编码竞赛来看编程语言受众度
- Mininet简介
- IOS之间的调用
- 20060131-Spatial transformations: Terminology and notation
- Learn Java for Android Development Second Edition 笔记(四)
- php Cannot redeclare class 的错误的几种情况
- MFC 初步认识和如何学习MFC的理解
- [projecteuler]Maximum path sum I,II
- [hdu-2037] 今年暑假不AC
- web开发者通向架构师之路