原文发表在我的博客主页,转载请注明出处

前言

Mininet是SDN网络仿真的一大利器,在小规模网络模拟使用上独领风骚,其开源性允许使用者按照自己的需求修改源码,得到想要的数据,其提供了多个函数用来满足用户的需求,十分方便。

OpenvSwitch(OVS)是一个基于Linux内核的虚拟交换机,可以取代Linux网络协议栈,并且效果十分好,OVS的应用十分广泛,在云计算和SDN网络虚拟化中都有重要的应用平台。

有的时候,我们需要Mininet模拟的网络和真实网络通信,利用OVS搭建一个网桥,便可以实现这样的功能。

原理

以例子来讲解,有如下场景,在一个host上面用Mininet搭建了一个网络,这个网络有两个主机h1和h2,一个交换机s1,一个控制器c0,将交换机s1和主机host的网口绑定,原理图如下:

Mininet创建拓扑的方法

Mininet创建拓扑主要有两种方法:

  • 创建一个拓扑类,在命令行通过--topo选项指定使用此拓扑
  • Mininet支持参数化拓扑,通过python代码创建一个灵活的拓扑结构,而且可以灵活实现额外的功能需求,本文就是使用这种方式创建拓扑的

代码解析

源代码见github

源码需要注意的注释如下:

#!/usr/bin/env python
import os
from mininet.net import Mininet
from mininet.node import Controller, RemoteController
from mininet.cli import CLI
from mininet.link import Intf
from mininet.log import setLogLevel, info def ToRealnet(): net = Mininet( topo=None, build=False) info( '*** Adding controller\n' )
net.addController(name='cotyb') info( '*** Add switches\n')
s1 = net.addSwitch('s1') info( '*** Add hosts\n')
h1 = net.addHost('h1', ip='0.0.0.0')
h2 = net.addHost('h2', ip='0.0.0.0') info( '*** Add links\n')
net.addLink(h1, s1)
net.addLink(h2, s1) info( '*** Starting network\n')
net.start()
os.popen('ovs-vsctl add-port s1 eth0') #绑定s1和host的eth0接口
h1.cmdPrint('dhclient '+h1.defaultIntf().name) #给h1的网口用DHCP动态分配IP
h2.cmdPrint('dhclient '+h2.defaultIntf().name) ##给h2的网口用DHCP动态分配IP
CLI(net)
net.stop() if __name__ == '__main__':
setLogLevel( 'info' )
ToRealnet()

实验

通过python运行源代码生成拓扑,然后用xterm h1打开h1的终端,使用*ifconfig命令,结果如下图,可以看出红框中的IP地址:192.168.29.179,和host处于同一网段,而且多次运行,发现分配的IP是不一样的,说明是动态分配的



接下来再在h1的终端下ping和host统一网段的主机,结果如下:

总结

通过上面的原理和实验,可以看出成功的将Mininet中的网络和实际网络结合在了一起,这在某些场合是十分有用的

将Mininet与真实网络相连接的更多相关文章

  1. monkey工具使用中遇到的问题之一:手机模拟器中的部分应用出现网络无法连接

    问题描述: 手机模拟器中的部分应用出现网络无法连接,但是比如:浏览器即可以正常访问网页 解决方法如下: 1.以管理员身份进入到cmd中,以WIN10为例 ,在电脑左下角点击鼠标右键就可以看到 注意: ...

  2. Reachability(判断网络是否连接)

    类似于一个网络状况的探针. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabili ...

  3. 判断网络是否连接 和 判断GPS是否连接

    //判断网络是否连接 public static Boolean isNetworkEnabled(Context context){ int status=-1  //设置默认连接的状态为-1 Co ...

  4. android 检测网络是否连接,或者GPS是否可用

    很多android程序在打开时,检测网络是否连接,或者GPS是否可用: 1.网络是否连接(包括Wifi和移动网络) // 是否有可用网络 private boolean isNetworkConnec ...

  5. Android判断网络是否连接

    <!-- 配置文件判断网络是否连接 --> <uses-permission android:name="android.permission.ACCESS_NETWORK ...

  6. android 判断网络是否连接

    package com.liucanwen.baidulocation.util; import android.app.Activity; import android.content.Contex ...

  7. Reachability判断网络是否连接

    类似于一个网络状况的探针. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabili ...

  8. c# 网络是否连接

    c#  网络是否连接 方案一: using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  9. javascript 网络是否连接的几种方案

    js   网络是否连接的几种方案 1.通过html5的新属性: window.onload = function () {            var isOnLine = navigator.on ...

随机推荐

  1. leveldb源码分析—Recover和Repair

    leveldb作为一个KV存储引擎将数据持久化到磁盘,而对于一个存储引擎来说在存储过程中因为一些其他原因导致程序down掉甚至数据文件被破坏等都会导致程序不能按正常流程再次启动.那么遇到这些状况以后如 ...

  2. 安装SQL Server2008,要重启机器,解决办法

    安装SQL Server2008时,总提示有挂起,要重启机器:重启之后还是有相应的提示,该怎么办呢? 其实只要删除一个注册表项就可以了: 1.  打开注册表编辑器 开始菜单—>运行->re ...

  3. nyoj 1029/hdu 3714 Error Curves 三分

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714 懂了三分思想和F(x)函数的单调性质,这题也就是水题了 #include "stdio ...

  4. Dreamweaver 制作图片热点之后,点击热点部分会有个提示框,怎么去掉

    可以这么写试试看<map name="Map"> <area shape="rect" coords="364,31,517,64& ...

  5. Oracle PLSQL

    Oracle :show explain plan select * from table(dbms_xplan.display); EXPLAIN PLAN FOR statements In fa ...

  6. MSBI BigData demo—sqoop import

    --sp_readerrorlog 读取错误的信息记录 exec sys.sp_readerrorlog 0, 1, 'listening'查看端口号 首先hadoop环境要配置完毕,并检验可以正常启 ...

  7. 【温故而知新-Javascript】窗口效果 (全屏显示窗口、定时关闭窗口)

    1.全屏显示窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  8. 我是如何来做网站优化(Seo)的?(二)

    在上一篇文章<我是如何来做网站优化(Seo)的?(一)>讲述了网站优化几个注意项目. 在我们日常网站维护中,难免会使用到各种工具,文章的第二节我们就来讲讲这些工具. 网站提交通道 百度站长 ...

  9. 解密TDE加密数据库

    1 找到加密的数据库,new query 2 执行sql 语句:ALTER DATABASE  database_name SET ENCRYPTION OFF; DROP DATABASE ENCR ...

  10. 推荐——Monkey《大话 app 测试——Android、iOS 应用测试指南》

    <大话移动——Android与iOS应用测试指南> 京东可以预购啦!http://item.jd.com/11495028.html 当当网:http://product.dangdang ...