mininet(一)实验环境搭建

mininet(二)简单的路由实验

mininet(三)简单的NAT实验

在网上找了 好几个代码都是不能直接复现成功,这里把自己实现成功的代码给大家演示一下。

实验的拓扑结构如下:



试验中利用 一台主机代替router,开启ip_forward选项,来链接两个子网。

#!/usr/bin/python
import time
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSKernelSwitch,UserSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel
from mininet.link import Link, TCLink def topology(): "Create a network."
net = Mininet( controller=RemoteController, link=TCLink, switch=OVSKernelSwitch ) print "*** Creating nodes ***"
h1 = net.addHost( 'h1', mac='00:00:00:00:00:01', ip='10.0.10.1/24' )
h2 = net.addHost( 'h2', mac='00:00:00:00:00:02', ip='10.0.10.2/24' )
h3 = net.addHost( 'h3', mac='00:00:00:00:00:03', ip='10.0.1.1/24' )
s1 = net.addSwitch( 's1', listenPort=6673, mac='00:00:00:00:00:11' )
s2 = net.addSwitch( 's2', listenPort=6674, mac='00:00:00:00:00:12' )
c0 = net.addController( 'c0', controller=RemoteController, ip='127.0.0.1', port=6633 ) print "*** Creating links ***"
net.addLink(s1, h1, 1, 0)
net.addLink(s2, h3, 1, 0) Link(h2, s1, intfName1='h2-eth0')
Link(h2, s2, intfName1='h2-eth1')
h2.cmd('ifconfig h2-eth1 10.0.1.2 netmask 255.255.255.0')
h2.cmd('sysctl net.ipv4.ip_forward=1') h1.cmd('route add default gw 10.0.10.2')
h3.cmd('route add default gw 10.0.1.2') print "*** Starting network ***"
net.build()
c0.start()
s1.start( [c0] )
s2.start( [c0] ) print "*** Running CLI ***"
CLI( net ) print "*** Stopping network ***"
net.stop() if __name__ == '__main__':
setLogLevel( 'info' )
topology()

试验时,运行./Router.py 然后利用h1 ping h3还是不通。

给两个交换机下发转发 规则

 # ovs-ofctl add-flow s1 in_port=1,actions=output:2
# ovs-ofctl add-flow s1 in_port=2,actions=output:1
# ovs-ofctl add-flow s2 in_port=1,actions=output:2
# ovs-ofctl add-flow s2 in_port=2,actions=output:1
h1 route add default gw 10.0.10.2
h3 route add default gw 10.0.1.2

此时可以利用

h1 ping 10.0.10.2
h3 ping 10。0.1.2

但是h1 ping h3 仍然不通。开启ip_forward转发

h2 sysctl net.ipv4.ip_forward=1

此时h1 ping h3 就可以通了

ps:我在Router.py中明明写了

    h2.cmd('sysctl net.ipv4.ip_forward=1')
h1.cmd('route add default gw 10.0.10.2')
h3.cmd('route add default gw 10.0.1.2')

但是好像没有起作用,只有手动添加之后才生效,没有找到具体原因。还有实验时竟然将h1 的default gw 配置成 10.0.10.0 了,h3 的default gw 配置成 10.0.1.0 了,导致一直不通。基本网络知识没有过关。

mininet(二)简单的路由实验的更多相关文章

  1. mininet(三)简单的NAT实验

    mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 本次实验拓扑图如下: 假设 Openvswitch switch1是一个带有NAT功能的路由 ...

  2. CCNP路由实验之六 动态路由协议之IS-IS

     CCNP路由实验之六动态路由协议之IS-IS 动态路由协议能够自己主动的发现远程网络.仅仅要网络拓扑结构发生了变化.路由器就会相互交换路由信息,不仅能够自己主动获知新添加的网络.还能够在当前网络 ...

  3. CCNP路由实验之七 动态路由之BGP

     CCNP路由实验之七 动态路由之BGP 动态路由协议能够自己主动的发现远程网络,仅仅要网络拓扑结构发生了变化,路由器就会相互交换路由信息,不仅能够自己主动获知新添加的网络,还能够在当前网络连接失 ...

  4. 实验二 PHP基本语法实验

    实验二 PHP基本语法实验 0 实验准备 0.1实验环境和相关工具软件 具体到的机房环境,请在Windowsxp环境下做本实验: l  操作系统:Windowsxp l  Web服务器:Apache ...

  5. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  6. Web API中的路由(二)——属性路由

    一.属性路由的概念 路由让webapi将一个uri匹配到对应的action,Web API 2支持一种新类型的路由:属性路由.顾名思义,属性路由使用属性来定义路由.通过属性路由,我们可以更好地控制We ...

  7. 2017-2018-1 20155312《信息安全技术》实验二——Windows口令破解实验报告

    2017-2018-1 20155312<信息安全技术>实验二--Windows口令破解实验报告 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破 ...

  8. FuelPHP 系列(二) ------ route 路由

    FuelPHP 中,默认可以通过 /controller_name/function_name 这种方式来访问,也可以通过自定义路由来访问. 路由配置在 /fuel/app/config/routes ...

  9. CCNP路由实验之八 路由重公布

     CCNP路由实验之八 路由重公布 在前面几个实验,已经学习了静态路由和动态路由.如今,我们要掌握怎样使它们在一个网络中融合,即路由重公布. 使用出站口作为静态路由 0 使用下一跳地址作为静态路由 ...

随机推荐

  1. 编程工具 | VScode 使用快捷键

    按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick Open Ctrl + ...

  2. linux 系统移植uboot

    这里使用的版本为:u-boot-2014.04 查看并修改位置如下:u-boot-2014.04/include/configs/at91sam9x5ek.h(1)查看一下Linux内核在NandFl ...

  3. 在linux (centos)上使用puppeteer实现网页截图

    1.安装nodejs和npm # 下载解压 wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz tar -xvf n ...

  4. javascript jquery 修改指定标签中的内容

    javascript jquery 修改指定标签中的内容 $("#test1").text("Hello world!"); document.getEleme ...

  5. Win32 COM组件 x Android Service (二)

    继续上一篇. 如果不使用AIDL(Android Interface Definition Language接口描述语言)编写服务接口的话,(COM组件,CORBA组件,ICE组件以及其它远程调用框架 ...

  6. Condition对象以及ArrayBlockingQueue阻塞队列的实现(使用Condition在队满时让生产者线程等待, 在队空时让消费者线程等待)

    Condition对象 一).Condition的定义 Condition对象:与锁关联,协调多线程间的复杂协作. 获取与锁绑定的Condition对象: Lock lock = new Reentr ...

  7. Linux 命令记录

    记录Linux下使用过的命令: Linux端 1.测试当前系统支持语言(我这用的是xshell,如果出现乱码,则在file-properties-terminal-encoding中,设置为utf-8 ...

  8. 20191107-5 beta week 2/2 Scrum立会报告+燃尽图 04

    此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9957 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩 ...

  9. mysql8.0.13安装、使用教程图解

    mysql8.0.13安装.使用教程图解 MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Manageme ...

  10. 【2018寒假集训Day 8】【最小生成树】Prim和Kruskal算法模板

    Luogu最小生成树模板题 Prim 原理与dijkstra几乎相同,每次找最优的点,用这个点去松弛未连接的点,也就是用这个点去与未连接的点连接. #include<cstdio> #in ...