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. javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: ResultSet is from UPDATE. No Data.

    Java jpa调用存储过程,抛出异常如下: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCEx ...

  2. jdk8 函数式编程概念

    yls 2019/11/7 函数式接口 如果一个接口只有一个抽象方法,那么该接口就是函数式接口 如果我们在某接口上声明了FunctionalInterface注解,那么编译器就会按照函数式接口的定义来 ...

  3. 学习Java第一步:安装Intellij IDEA和JDK

    注:其实真正学习一门新语言的第一步并不是安装开发工具,我是C#转JAVA,有一点编程经验了,所以可以直接跳过前面几步,直接上IDE. 1.下载IntelliJ IDEA [官网] http://www ...

  4. hdu 1068 Girls and Boys (最大独立集)

    Girls and BoysTime Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  5. JVM浅谈

    **前言** 由于先前也遇到过一些性能问题,OOM算是其中的一大类了.因此也对jvm产生了一些兴趣.自己对jvm略做了些研究.后续继续补充. **从oom引申出去** 既然说到oom,首先需要知道oo ...

  6. ENS中文文档系列之一 [ ENS介绍 ]

    前言 ENS中文文档是由我照ENS英文官方文档翻译而来,其中的一些内容和细节得到了ENS官方团队的指导.文档中包含 “LBB译注” 的地方是译者为了便于读者理解而进行的注释. 未来一段时间,我会在该博 ...

  7. linux命令指令

    1.ls显示目录内容 -a 显示目录下所有文件 -l 显示详细信息 ls *.c  列出当前目录所有的.c文件 2.uname -a  查看内核版本 3.whoami  查看谁登陆虚拟机 4.cd 切 ...

  8. 关于 “'sqlite3' 不是内部或外部命令.....”问题

    学习django 按书上的  执行 manage.py dbshell 时, 报“'sqlite3' 不是内部或外部命令,也不是可运行的程序 或批处理文件.” 也就是指,环境变量中没有“sqlite3 ...

  9. [FPGA]Verilog实现寄存器LS374

    目录 想说的话... 正文 IC介绍 电路连接图 功能表 逻辑图 实验原理 单元实现_D触发器 整体实现(完整代码) 想说的话... 不久前正式开通了博客,以后有空了会尽量把自己学习过程中的心得或者感 ...

  10. Java的Arrays类 基本用法

    初识Java的Arrays类 Arrays类包括很多用于操作数组的静态方法(例如排序和搜索),且静态方法可以通过类名Arrays直接调用.用之前需要导入Arrays类: import java.uti ...