首页 > 其他分享 >mininet入门实战 学习指南

mininet入门实战 学习指南

时间:2022-10-25 09:34:02浏览次数:82  
标签:学习指南 mininet 入门 -- h3 端口 topo 交换机

mininet入门实战 学习指南

课程链接:https://www.51openlab.com/platform/curriculum/a18026230ad04063a70b6bb625212f3f/detail/

实验一:mininet源码安装与验证

指令说明

ll命令:实际上是ls -l,以长格式显示目录下的内容列表,包括文件名、文件类型、权限模式等信息

cat INSTALL | more命令:显示文件INSTALL的内容,其中more参数是为了控制文件内容的输出速度,可更换为less达到同样效果,不同之处在于使用| less格式,需要输入q才能退出命令

mn --test pingall:测试基本功能,包括添加主机、交换机、链路,以及pingall操作等功能

mn --version:查看当前mininet版本

tips for experiment

util目录下,即使使用./install.sh -a命令安装mininet,也要先执行apt-get update

实验二:mininet拓扑构建与命令使用

重点内容

使用mininet构建网络时,参数topo用于指定网络拓扑

  • --topo=single,n:一个交换机与n台主机相连
  • --topo=linear,n:n个交换机线性连接,每个交换机连接一台主机
  • --topo=tree,depth=n,fanout=m:深度为n的m叉树,每个分支节点是一台交换机,每个叶节点是一台主机
  • --custom:与--topo一起使用,支持自定义拓扑

指令说明

sudo mn --custom topo-2sw-2host.py --topo mytopo:py文件是目录下已编写好的创建自定义拓扑的文件,--topo后面跟的mytopo,是由于配置文件中定义了topos={'mytopo':(lambda:MyTopo())},如果将这里的mytopo进行修改,则命令中也要进行相应的修改

net:查看链接信息

nodes:查看节点;links:查看链路是否连通

xterm +主机名:进入可视化操作界面

mn -c:清除mininet配置的交换机和主机

chmod:修改文件权限

tips for experiment

如果需要验证minimal网络拓扑,直接运行sudo mn即可

运行miniedit之后,右键长按交换机,选择List bridge details可查看交换机的bridge信息,右键长按host可打开主机终端

DPID:OpenFlow 规范指定每个数据路径(交换机)都具有唯一的数据路径 ID,即DPID

实验三:mininet调用API扩展自定义拓扑

指令说明

dump:显示每个节点的接口设置,以及表示每个节点的进程的PID

attach():添加端口

py:执行python表达式

py net.addLink(s3,net.get(‘h3’)):添加s3到h3之间的链路,但此时如果执行h3 ping s3,会提示network is unreachable,因为s3还没有配置端口

tips for experiment

第一次执行dump命令时,会发现h3-eth0=None,无法看到h3的ip地址,是因为还没有被发现,而不是没有配置,如果执行pingall命令后再次dump,就可以看到h3的ip地址了

如果执行cd /home/openlab/openlab/mininet/custom这种从home目录开始的,不要漏掉home前面的/符号

拓展

py 主机名.setIP()可以重设某台主机的IP地址

实验四:mininet可视化构建网络拓扑

与实验二中的第三部分完全相同,参考实验二指南即可

实验五:手动添加流表

指令说明

vim +文件名:若该文件不存在,则创建一个文件,若存在,则使用vim读取文件

本实验提供的拓扑文件,构造的拓扑为交换机s1连接h1和h2,s2连接h3,且s1和s2互连

--controller=remote,ip=127.0.0.1,port=6653:用于指定一个不存在的控制器,使交换机没有控制器控制

dpctl dump-flows:查看交换机流表信息

tcpdump -n -i h2-eth0:抓包指令,其中-n选项阻止网络地址显示为名字,-i选项用于指定监听的网络接口

ping -c 3 10.0.0.2:其中-c选项用于设置ping的次数,例如这条命令设置为3次

dpctl add-flow in_port=1,actions=output:2:向交换机添加端口流表,从s1-eth1端口接收到的数据包都转发到s1-eth2端口

dpctl add-flow dl_type=0x0800,nw_dst=10.0.0.2,actions=output:2:使交换机将EtherType(以太网类型字段)=0x0800(代表ipv4报文),且目标ip为10.0.0.2的数据包,转发到eth-2端口

actions=NORMAL:从各个端口广播出去

tips for experiment

vim的简易使用:输入i即可进入编辑模式,按Esc退出编辑模式后,输入:wq即可保存并退出,输入:q!可强制不保存并退出

当eth1与eth2建立双向的端口流表之后,h1只能ping通h2但不能ping通h3,是因为通过net指令可以看到,交换机s1与s2连接是通过eth3端口的,在这个地方没有配置任何流表,所以无法ping通h3

常见的EtherType:IPv4: 0x0800;ARP:0x0806;IPV6: 0x86DD

由于一开始h1并不知道h2的ip所对应的MAC地址,需要进行ARP解析,所以只配置了ipv4协议流表时,交换机会把进行ARP的帧默认丢弃,导致h1无法ping通h2

实验六:控制器下发流表协议分析

指令说明

netstat -an|grep 6653netstat -an命令本身,可以显示活跃的网络连接(包括本地地址、外部地址、状态等信息),|grep就是把上个命令的运行结果带入grep的参数中进行,在这里的效果就是通过端口号进行过滤

tips for experiment

创建拓扑并测试通信部分:

  • 步骤1,2,10是在controller处进行的,步骤3-9是在host处进行的
  • 步骤一中,应执行netstat -an|grep 6653命令,在这里用netstate命令会出现报错
  • 步骤六中,远程控制器ODL的ip地址,要与步骤二中eth0的inet addr的ip地址相同
  • 步骤十中,直接输入http://127.0.0.1:8181/index.html#/topology即可

Wireshark的基本使用:单击蓝色鱼鳍图标开始抓包,单击旁边的红色方块停止,通过过滤器对数据包进行过滤,选中数据包即可在下方查看数据包的详细信息

实验七:Mininet多数据中心网络拓扑流量带宽实验

指令说明

mkdir -p:递归创建目录,可以一次创建多级文件夹

需要用vi可以用vim代替

iperf命令:一种网络性能测试工具

tips for experiment

“编写网络带宽测试程序”中的所有操作都在host1中执行,教程中提到的mininet主机就是host1

建议需要修改文件时,先进入文件所在的目录再用vim打开,注意~/openlab/mininet/mininet是在~目录下的

bin/mn文件下添加'iperfmulti':'iperfMulti'时,注意上一行需要加逗号

标签:学习指南,mininet,入门,--,h3,端口,topo,交换机
From: https://www.cnblogs.com/CCchaos/p/16823816.html

相关文章

  • Perl Language 从入门到放弃 All In One
    PerlLanguage从入门到放弃AllInOne......
  • 线性基基础入门|求线性基|最大异或和|第k大异或和|判断一个数能否用线性基表示
    前置知识:(今天刚知道的#acm:异或满足结合律,交换律,x^x=0;#线性代数关于最大无关组的基本知识-------我是正文------给定一个数组a1,a2,a3,a4,a5..数组a的线性基b为b1......
  • Hadoop集群简单入门
    Hadoop集群搭建自己配置Hadoop的话太过复杂了,因为自己着急学习,就使用了黑马的快照。如果小伙伴们也想的话可以直接看黑马的课程,快照的话关注黑马程序员公众号,输入Hadoop就......
  • C++算法之旅、01 入门篇
    使用胡凡主编的《算法笔记》教材。题目均为第三章题目。TEST//ProblemAddress#define_CRT_SECURE_NO_WARNINGS#include<cstdio>intmain(){return0;}PAT......
  • C语言入门-1-编译器的基本使用(Dev c++和visual studio)
    一、Devc++打开软件点击文件,新建,项目 选择Console点击helloworld,勾选c项目,名称自行输入点击确定后出现文件位置,自行安放在文件夹里保存后即可进行编译运......
  • 02Jmeter之Jmeter入门
    一、JMETER目录结构 bin:该目录存放的是Jmeter的主jar、相关的启动脚本、配置文件和日志文件等a) examples目录中有CSV样例b) jmeter.batwindows的启动文件c)......
  • [NOI Online #1 入门组] 跑步 题解
    [NOIOnline#1入门组]跑步题解一个经典问题:计数将正整数\(n\)拆分为若干个正整数的方案数,这里拆成的正整数是无序的,对\(P\)取模。容易得到\(O(n^2)\)解法设\(f_{i,j......
  • Python获取手机4K壁纸,一个入门练手的案例
    前言一.数据来源分析明确需求,我们采集网上什么数据内容,在什么地方分析我们想要高清原图在什么地方有浏览器自带工具:开发者工具F12鼠标右键点击......
  • 手把手带你入门 API 开发
    引言在本文中,您将学习如何使用​​Flask​​​、​​SQLite3​​(轻易数据库)和JSON创建用于数据通信的RESTAPI。本文使用4个最常用的HTTP动词:GET、POST、PUT和DE......
  • Selenium4Web自动化11-分布式测试Grid入门到实战
    一、Grid介绍要在多台计算机上并行运行测试吗?那么,Grid正是为你准备的.SeleniumGrid允许通过路由命令在远程机器上执行WebDriver脚本,这些命令由客户机发送到远程浏览......