mininet-2.2.2-170321-ubuntu-14.04.4-server-amd64的使用
1.使用Vmware打开下载好的mininet-2.2.2-170321-ubuntu-14.04.4-server-amd64
2.登录账号密码都为mininet
3.用命令行生成拓扑,并测试连通性
1)最小的网络拓扑,一个交换机下面挂两个主机:sudo mn --topo minimal,exit退出
{ps:.每次要新建拓扑时,需执行以下命令,防止上次操作对本次实验的影响
sudo mn -c (以下步骤新建拓扑时也要执行此命令)}
2)每个交换机连接一个主机,交换机间相连接。本例:4个主机,4个交换机。
sudo mn --topo linear,4
3)每个主机都连接到同一个交换机上。本例:3个主机,一个交换机。
sudo mn --topo single,3
4)定义深度和扇出形成基于树的拓扑。本例:深度2,扇出2。
sudo mn --topo tree, fanout=2,depth=2
4.Python脚本定义拓扑
【1】--topo linear,4。
1)新建linear.py 文件:touch linear.py
2)编辑文件:vim linear.py,添加一下内容:
from mininet.net import Mininet from mininet.topo import LinearTopo Linear4 = LinearTopo(k=4) #四个交换机,分别下挂一个主机 net = Mininet(topo=Linear4) net.start() net.pingAll() net.stop() |
3)修改文件linear.py为可执行文件:chmod +x linear.py
4)运行脚本:sudo python linear.py
【此时如果报错:a.文件内容错误,检查后对应修改后重新运行脚本即可
b.出现所示错误:Exception:Error creating interface pair(s2-eth2,s1-eth2);RTNETLINK answers:file exist
则运行sudo mn -c命令后重新运行脚本】
5)成功的样子:
【2】--topo single,3。
详见【1】,步骤相同,仅脚本内容不同
from mininet.net import Mininet from mininet.topo import SingleSwitchTopo Single3 = SingleSwitchTopo(k=3) #一个交换机下挂3个主机 net = Mininet(topo=Single3) net.start() net.pingAll() net.stop() |
【3】--topo tree,depth=2,fanout=2。同上
from mininet.net import Mininet from mininet.topolib import TreeTopo Tree22 = TreeTopo(depth=2,fanout=2) net = Mininet(topo=Tree22) net.start() net.pingAll() net.stop() |
【4】适合各种拓扑形式的脚本创建模式。本例:1个交换机,2个主机,并且赋予主机IP地址。
from mininet.net import Mininet net = Mininet() # Creating nodes in the network. c0 = net.addController() h0 = net.addHost('h0') s0 = net.addSwitch('s0') h1 = net.addHost('h1') # Creating links between nodes in network net.addLink(h0, s0) net.addLink(h1, s0) # Configuration of IP addresses in interfaces h0.setIP('192.168.1.1', 24) h1.setIP('192.168.1.2', 24) net.start() net.pingAll() net.stop() |
【5】在此基础上对性能进行限制。(addHost()语法可以对主机cpu进行设置,以百分数的形式;addLink()语法可以设置带宽bw、延迟delay、最大队列的大小max_queue_size、损耗率loss。)
from mininet.net import Mininet from mininet.node import CPULimitedHost from mininet.link import TCLink net = Mininet(host=CPULimitedHost, link=TCLink) c0 = net.addController() s0 = net.addSwitch('s0') h0 = net.addHost('h0') h1 = net.addHost('h1', cpu=0.5) h2 = net.addHost('h1', cpu=0.5) net.addLink(s0, h0, bw=10, delay='5ms', max_queue_size=1000, loss=10, use_htb=True) net.addLink(s0, h1) net.addLink(s0, h2) net.start() net.pingAll() net.stop() |
5.交互式界面创建主机、交换机等
1)$sudo mn
2)添加主机h3:
3)添加link:
4)给交换机s1添加端口eth3用于连接h3:
5)给h3赋予IP(10.0.0.3)以及h1 ping h3
6.测试网络
1)展示所有的网络信息。
2)所有节点的ping测试。
{ 如果出现以下错误:
***Ping:testing ping reachability
h1->h2 ***Error:could not parse ping output:ping:unknown host None
h2->h1 ***Error:could not parse ping output:ping:unknown host None
则输入命令s1 ping h3后,重新执行py net.pingAll()
附:
1.实验环境:
打开虚拟机镜像( SDNHub_tutorial_VM_64-bit[NEW](可直接导入 VMware).ova ), 下载链接:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA 提取码:mhfi
注:也可以在也可以安装其他虚拟机软件,如 VirtualBox、KVM 等,然后安装 mininet, 安装方法见 http://mininet.org/download/;
2.mininet背景:
Mininet 是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith 等各种协议,Mininet 也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。
Mininet 可以很方便地创建一个支持 SDN 的网络:host 就像真实的电脑一样工作,可以使用 ssh 登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。
3.mininet特性:
1) 可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期
2) 可以运行真实的程序,在 Linux 上运行的程序基本上可以都可以在 Mininet 上运行,如 Wireshark
3) Mininet 支持 Openflow ,在 Mininet 上运行的代码可以轻松移植到支持OpenFlow 的硬件设备上
4) Mininet 可以在自己的电脑,或服务器,或虚拟机,或者云(例如 Amazon EC2) 上运行
5) Mininet 提供 python API,简单易用
6) Mininet 是开源项目
4.部分命令:
mininet > help |
获取帮助列表。 |
mininet > nodes |
查看 mininet 中结点的状态。 |
mininet >net |
显示网络拓扑 |
mininet >dump |
显示每个节点的接口设置和表示每个节 点的进程的 PID |
mininet > pingall |
在网络中的所有主机之间执行 ping 测试 |
mininet > h1 ping h2 |
h1 和 h2 节点之间执行 ping 测试 |
mininet > h1 ifconfig |
查看 host1 的 IP 等信息。 |
mininet > xterm h1 |
打开 host 1 的终端。 |
mininet > exit |
退出 mininet 登录。 |
mininet-2.2.2-170321-ubuntu-14.04.4-server-amd64的使用的更多相关文章
- Ubuntu 14.04 LTS Server 无法挂载光盘 启动initramfs等问题
今天需要在戴尔R410服务器上装64位的Linux,师兄给了个14.04的server 64位镜像.一开始打算用U盘安装,用软碟通烧写镜像之后,在服务器端设置从U盘启动,但是安装到一半出现了光盘无法挂 ...
- ubuntu 14.04 64位安装bigbluebutton
BigBlueButton 是一个使用 ActionScript 开发的在线视频会议系统或者是远程教育系统,主要功能包括在线PPT演示.视频交流和语音交流,还可以进行文字交流.举手发言等功能,特别适合 ...
- Ubuntu 14.04下 Java通用安装方法
参考: 解决Floodlight1.2+Mininet问题及使用安装 Ubuntu下安装JDK1.7图文详解 Ubuntu 14.04下 Java通用安装方法 1.到oracle官网下下载对应jdk包 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- deepsooncms在Ubuntu 14.04上部署教程
deepsooncms在Ubuntu 14.04上部署教程 一.安装mono1.在命令行运行sudo apt-key adv --keyserver keyserver.ubuntu.com --re ...
- Ubuntu 14.04 中 安装elasticsearch2.*+logstash2.*+kibana
在Ubuntu 14.04 上安装单机版ELK 2.*(脚本化) 1.判断是否为root权限 if [ "${UID}" -ne 0 ]; then echo "You ...
- 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...
- Ubuntu 14.04 LTS下安装Google Chrome浏览器
在Ubuntu 14.04下安装Google Chrome浏览器非常简单,只要到Chrome的网站下载Deb安装包并进行安装即可.当然你也可以使用APT软件包管理器来安装Google Chrome浏览 ...
- 烂泥:ubuntu 14.04搭建OpenVPN服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案 ...
- ubuntu 14.04 desktop装vnc4server
ubuntu 14.04 desktop上安装vnc4server要装上gnome的一些软件包并修改启动文件~/.vnc/xstartup 问题来源How to make VNC Server wor ...
随机推荐
- 38KHz,NEC红外模拟发送和接收程序
/*************************************************************************************************/ ...
- 最推荐的抓包工具charles
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发者查看所有连接互联 ...
- 『Python』整洁之道
1. 使用 assert 加一层保险 断言是为了告诉开发人员程序中发生了不可恢复的错误,对于可以预料的错误(如文件不存在),用户可以予以纠正或重试,断言并不是为此而生的. 断言用于程序内部自检,如声明 ...
- [转载]linux上用PHP读取WORD文档
在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:htt ...
- [转载]解决虚拟机中Centos7出现错误:Failed to start LSB: Bring up/down networking
1.执行 service network restart 出现以下错误 Restarting network (via systemctl): Job for network.service fai ...
- 如何使用云效Flow做质量检测,保障高质量的交付速度
使用云效Flow做质量检测,保障高质量的交付速度,云效「Flow」 提供代码扫描. 安全扫描和各种自动化测试能力,支持人工测试卡点.自动化验证卡点等多种质量红线,确保业务质量.云效流水线 Flow 流 ...
- 【C++ Primer Plus】编程练习答案——第8章
1 void ch8_1_print(const std::string & str, int n = 0 ) { 2 using namespace std; 3 static int fl ...
- python class自身返回值研究
在python中,如果你写了这样一串代码: import datetime a = datetime.date(2021, 9, 1) b = "2021-09-01" print ...
- Java基础- 重写,重构和重载
重写也称为覆盖, 是指子类与父类的方法名相同但是可以有不同的权限(子类权限需大于父类),返回值(J2SE 5.0以后增加的功能,且子类的返回值必须是父类返回值的子类)或者方法实现. 重写体现了子类补充 ...
- 如何通过 Serverless 轻松识别验证码?
作者 | 江昱 来源 | Serverless 公众号 前言 Serverless 概念自被提出就倍受关注,尤其是近些年来 Serverless 焕发出了前所未有的活力,各领域的工程师都在试图将 Se ...