Mininet 自定义拓扑类型详解

在这里插入图片描述

Mininet 通过 --topo 参数支持多种自定义网络拓扑结构,适用于不同场景的网络模拟需求。以下是所有内置拓扑类型及其参数说明:


一、基础拓扑类型
拓扑类型参数格式说明示例命令
singlesingle,<n>单一交换机连接所有主机(默认 2 台主机)sudo mn --topo single,5
linearlinear,<n>链式拓扑:n 台交换机串联,每台交换机连接 1 台主机sudo mn --topo linear,4
treetree,<depth>,<fanout>树形拓扑:深度为 depth,每层分叉数为 fanoutsudo mn --topo tree,3,2
reversedreversed,<depth>,<fanout>反向树形拓扑(根在底部)sudo mn --topo reversed,2,3
torustorus,<x>,<y>二维环面拓扑(x 行 y 列,每节点连接上下左右邻居)sudo mn --topo torus,3,3

二、拓扑参数详解
1. single 拓扑
  • 结构:1 个 OpenFlow 交换机连接所有主机。

  • 参数<n> 表示主机数量(默认 2)。

  • 示例sudo mn --topo single,3

    生成结构

    h1 <-> s1 <-> h2↕h3
    
2. linear 拓扑
  • 结构:n 台交换机串联,每台交换机连接 1 台主机。
  • 参数<n> 表示交换机/主机数量。
  • 示例sudo mn --topo linear,4
    生成结构
    h1 <-> s1 <-> s2 <-> s3 <-> s4 <-> h4
    
3. tree 拓扑
  • 结构:分层树形结构,根交换机位于顶层,每层分叉数为 fanout
  • 参数<depth> 为树深度,<fanout> 为每层分叉数。
  • 示例sudo mn --topo tree,2,3
    生成结构(深度 2,分叉 3):
            s1/  |  \s2  s3  s4/|\ /|\ /|\h1~h3 h4~h6 h7~h9
    
    总节点数:1(根交换机) + 3(中间层交换机) + 9(主机) = 13 节点。
4. reversed 拓扑
  • 结构:反向树形结构,根交换机位于底层。
  • 参数:同 tree 拓扑。
  • 示例sudo mn --topo reversed,2,3
    生成结构
        h1~h9/ | \s2 s3 s4\ | /s1
    
5. torus 拓扑
  • 结构:二维环面网络,每个节点连接上下左右邻居(用于数据中心网络模拟)。
  • 参数<x> 行数,<y> 列数。
  • 示例sudo mn --topo torus,3,3
    生成结构:3x3 的网格,边缘节点环形连接。

三、高级用法
1. 自定义拓扑参数

通过 Python API 扩展拓扑类型(见 Mininet 自定义拓扑指南)。

2. 混合参数组合

结合链路参数(带宽、延迟)启动拓扑:

sudo mn --topo tree,2,2 --link tc,bw=10,delay='5ms'
3. 拓扑可视化

使用 mininet.util.dumpNetConnections() 输出拓扑结构:

from mininet.topo import Topo
from mininet.net import Mininetclass MyTopo(Topo):def build(self):h1 = self.addHost('h1')h2 = self.addHost('h2')s1 = self.addSwitch('s1')self.addLink(h1, s1)self.addLink(h2, s1)net = Mininet(topo=MyTopo())
net.start()
print(net)  # 输出拓扑连接信息
net.stop()

四、拓扑选择建议
场景推荐拓扑理由
快速测试控制器逻辑single结构简单,启动快速
多路径流量验证tree分层结构适合测试负载均衡和冗余路径
链路故障模拟linear链式结构便于手动断开中间链路
数据中心网络仿真torustree环面结构适合模拟 Clos 架构,树形结构适合传统三层架构
自定义协议开发Python API完全控制拓扑细节,支持复杂逻辑

五、注意事项
  1. 性能限制:复杂拓扑(如 tree,4,3 生成 121 节点)可能导致系统资源不足,建议虚拟机分配至少 4GB 内存。
  2. 控制器兼容性:树形/环面拓扑需控制器支持多交换机流表下发(如 ONOS、RYU)。
  3. 参数验证--topo 参数错误时会直接报错(如 tree 缺少 fanout 参数)。

通过灵活选择拓扑类型,可高效验证 SDN 控制器行为、网络协议性能及故障恢复机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32817.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图论part3|101.孤岛的总面积、沉没孤岛、417. 太平洋大西洋水流问题

101. 孤岛的总面积 &#x1f517;&#xff1a;101. 孤岛的总面积思路&#xff1a;和昨天的岛的区别是&#xff1a;是否有挨着边的岛屿 所以可以先遍历四条边挨着的岛屿&#xff0c;把他们标记为非孤岛再计算其他岛屿当中的最大面积 代码&#xff1a;&#xff08;深度搜索&…

第十一届蓝桥杯单片机国赛

什么&#xff1f;4T模拟赛和省赛做起来轻轻松松&#xff1f;不妨来挑战一下第十一届国赛&#xff0c;这一届的国赛居然没考超声波、串口通信&#xff01;只要你正确地理解了题目的意思&#xff0c;规避出题人挖的坑&#xff0c;拿个国一轻轻松松。 附件&#xff1a;第十一届蓝桥…

【Unity6打包Android】游戏启动的隐私政策弹窗(报错处理)

Unity版本&#xff1a;Unity6000.0.24 增加弹窗步骤 1. 自定义AndroidManifest 1.1 在Player Setting > Publishing Settings > Build下勾选Custom Main Manifest&#xff0c;在Assets/Plugins/Android路径下生成AndroidManifest.xml文件 1.2 修改AndroidManifest.xml…

记录一个SQL自动执行的html页面

在实际工作场景中&#xff0c;需要运用到大量SQL语句更新业务逻辑&#xff0c;对程序员本身&#xff0c;写好的sql语句执行没有多大问题&#xff08;图1&#xff09;&#xff0c;但是对于普通用户来说还是有操作难度的。因此我们需要构建一个HTML页面&#xff08;图2&#xff0…

mac安装mysql之后报错zsh: command not found: mysql !

在Mac上安装MySQL后&#xff0c;如果终端中找不到mysql命令&#xff0c;通常是 因为MySQL的命令行工具&#xff08;如mysql客户端&#xff09;没有被正确地添加到你的环境变量中。 检查 MySQL 是否已安装 ps -ef|grep mysql查看到路径在 /usr/local/mysql/bin 查看 .bash_pro…

socket编程与TCP协议

如果你想和远方的朋友通电话&#xff0c;但是&#xff0c;没有办法直接把自己的声音放在电线上变成电流信号&#xff0c;你需要使用电话机拿起听筒拨号&#xff0c;而这个电话就是Socket&#xff0c;它让你简单方便地完成电流通话&#xff0c;从我们编程的角度来看&#xff0c;…

css基本功

为什么 ::first-letter 是伪元素&#xff1f; ::first-letter 的作用是选择并样式化元素的第一个字母&#xff0c;它创建了一个虚拟的元素来包裹这个字母&#xff0c;因此属于伪元素。 grid布局 案例一 <!DOCTYPE html> <html lang"zh-CN"><head&…

环境配置 | 5分钟极简Git入门:从零上手版本控制

你是否刚接触Git&#xff1f;别担心&#xff01;这篇指南将用最简单的步骤带你掌握Git核心操作&#xff0c;快速开启版本控制之旅&#xff01;✨ 1.git在win10上的下载安装 1.1.下载git 打开官方网站 Git - Downloadshttps://git-scm.com/downloads ​ ​​ 1.2.git安装 …

软件工程概述、软件过程模型、逆向工程(高软45)

系列文章目录 软件工程概述、软件过程模型、逆向工程。 文章目录 系列文章目录前言一、软件工程概述二、能力成熟度模型1.能力成熟度模型CMM2.能力成熟度模型集成CMMI 三、软件过程模型1.瀑布模型SDLC2.原型化模型3.螺旋模型4.增量模型5.喷泉模型6.敏捷模型7.统一过程模型RUP 四…

接口自动化入门 —— Jmeter实现在接口工具中关联接口处理方案

1. JMeter 接口关联处理的核心概念 接口关联是指在多个接口请求之间共享数据&#xff0c;例如将一个接口的返回值作为另一个接口的输入参数。常见的场景包括&#xff1a; 使用登录接口返回的 Token 作为后续接口的认证信息。 将一个接口返回的 ID 作为另一个接口的请求参数。…

websocket学习手册及python实现简单的聊天室

概述 WebSocket 是一种网络通信协议&#xff0c;允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接&#xff0c;实现了实时的数据传输。HTTP 协议有一个很大的缺点&#xff0c;通信只能由客户端发起&#xff0c;服务器返回响应后连接就会关闭&#xf…

小白学习:提示工程(什么是prompt)

课程链接 https://www.bilibili.com/video/BV1PX9iYQEry/?spm_id_from333.337.search-card.all.click 一 什么是提示工程 【提示工程】也叫【指令工程】 prompt就是给大模型发的指令&#xff0c;如“给我讲个笑话” 懂得提示工程原理会带来什么优势 懂得原理 为什么有的指…

ROS实践(五)机器人自动导航(robot_navigation)

目录 一、知识点 1. 定位 2. 路径规划 (1)全局路径规划 (2)局部路径规划 3. 避障 二、常用工具和传感器 三、相关功能包 1. move_base(决策规划) 2. amcl(定位) 3. costmap_2d(代价地图) 4. global_planner(全局规划器) 5. local_planner(局部规划器…

分治算法区

分治 一.分治二.经典应用案例三.快速排序&#xff08;1&#xff09;颜色分类&#xff08;2&#xff09;排序数组&#xff08;3&#xff09;数组中第K个最大的元素 四.归并排序1.排序数组2.交易逆序对总数3.计算右侧小于当前元素的个数4.翻转对 一.分治 分治算法是一种通过将复…

设计模式C++

针对一些经典的常见的场景, 给定了一些对应的解决方案&#xff0c;这个就叫设计模式。 设计模式的作用&#xff1a;使代码的可重用性高&#xff0c;可读性强&#xff0c;灵活性好&#xff0c;可维护性强。 设计原则&#xff1a; 单一职责原则&#xff1a;一个类只做一方面的…

零成本搭建Calibre个人数字图书馆支持EPUB MOBI格式远程直读

文章目录 前言1.网络书库软件下载安装2.网络书库服务器设置3.内网穿透工具设置4.公网使用kindle访问内网私人书库 前言 嘿&#xff0c;各位书虫们&#xff01;今天要给大家安利一个超级炫酷的技能——如何在本地Windows电脑上搭建自己的私人云端书库。亚马逊服务停了&#xff…

Qt 数据库操作(Sqlite)

数据库简介 关于数据库的基础知识这里就不做介绍了&#xff0c;相关博客可以查看&#xff1a; SQL基础知识 数据库学霸笔记 上面博客都写的比较详细&#xff0c;本文主要介绍如何使用Qt进行数据库相关操作&#xff0c;数据库分为关系型数据库和非关系型数据&#xff0c;关系…

hackme靶机详细攻略

扫描ip arp-scan -l 访问网站后&#xff0c;点击sign up now注册 注册后登录 点击search显示全部数据 尝试sql注入 确认闭合方式 OSINTand 12# 确定列数 OSINT order by 3# 显示正常 OSINT order by 4# 显示异常 确认回显位置 -1 union select 1,2,3# 确认数据库名 -…

Tweak Power:全方位电脑系统优化的高效工具

在日常使用电脑时&#xff0c;系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行&#xff0c;许多人会选择系统优化工具。然而&#xff0c;国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时&#xff0c;…

element-plus中Autocomplete自动补全输入框组件的使用

目录 1.基本使用 ①从官网赋值如下代码 ②查看运行效果 ③代码解读 2.调用后端接口&#xff0c;动态获取建议数据 结语 1.基本使用 ①从官网赋值如下代码 <template> <div><!-- 自动补全输入框 --><el-autocompletev-model"state":fetc…