SDN之Python编程创建多数据中心网络

news2024/7/6 18:32:32

文章目录

    • 1.拓扑结构
    • 2.具体步骤

1.拓扑结构

通过python编程创建一个包含2台核心交换机、4台汇聚交换机、8台边缘交换机和16台主机的网络拓扑,如图示:
在这里插入图片描述

2.具体步骤

首先ctrl+alt+T(或右键)打开终端,在/home/shy/mininet/mininet/examples目录下使用sudo vim sdn.py命令新建python脚本文件。
步骤一:编写python代码并保存

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController,CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
#定义类
class MyTopo( Topo ):

    def __init__( self ):

        #初始化网络拓扑
        Topo.__init__( self )
        L1 = 2       #核心交换机数量
        L2 = L1 * 2  #汇聚交换机数量
        L3 = L2 * 2  #边缘交换机数量
        c = []       #存放核心交换机的列表
        a = []       #存放汇聚交换机的列表
        e = []       #存放边缘交换机的列表

        #添加核心交换机
        for i in range( L1 ):
            sw = self.addSwitch( 'c{}'.format( i + 1) )
            c.append( sw )

        #添加汇聚交换机
        for i in range( L2 ):
            sw = self.addSwitch( 'a{}'.format( L1 + i + 1 ) )
            a.append( sw )

        #添加边缘交换机
        for i in range( L3 ):
            sw = self.addSwitch( 'c{}'.format( L1 + L2 + i + 1) )
            e.append( sw )

        #添加核心交换机与聚合交换机之间的链路
        for i in range( L1 ):
            sw1 = c[i]
            for sw2 in a[i//2::L1//2]:
                self.addLink( sw2 , sw1 )

        #添加聚合交换机与边缘交换机之间的链路
        for i in range( 0, L2, 2 ):
        	for sw1 in a[i:i+2]:
                for sw2 in e[i*2:i*2+4]:
                    self.addLink( sw2, sw1 )

        #添加主机与边缘交换机之间的链路
        count = 1
        for sw1 in e:
            for i in range(2):
                host = self.addHost( 'h{}'.format( count ) )
                self.addLink( sw1 , host )
                count += 1

#创建mytopo类的对象
topos = { 'mytopo': ( lambda : MyTopo() ) }

可以看到,文件已经保存在/home/shy/mininet/mininet/examples目录下。
在这里插入图片描述
步骤二:验证网络拓扑是否创建成功
在另一个终端中开启OpenDaylight控制器
在这里插入图片描述
使用sudo mn --custom sdn.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovs,protocols=OpenFlow13命令运行python脚本文件。可以看到控制器已经成功监测到了网络拓扑,网络连通性也没有问题。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

u盘有文件但看不到怎么回事?

U盘有文件但看不到是常见的存储故障。这种情况下,用户可以在电脑上看到U盘的驱动盘符,但是无法看到其中的文件。接下来,我们将详细分析此现象的原因,并提供相应的解决方法。 u盘有文件但看不到怎么回事? 一、U盘有文件…

DataFunSummit:2023年数据科学在线峰会-核心PPT资料下载

一、峰会简介 数据会说谎?如何正确的挖掘并使用数据?前沿的科学实验如何做?实验又是如何欺骗你的?数据中台如何发挥功效?用户增长有捷径吗?数据科学的最佳实践有哪些? 本次峰会共包含了&#…

MacOS下载配置OpenCV

主要参考的是OpenCV官方的这篇文章:OpenCV: Installation in MacOS 安装OpenCV需要下载一些安装包:CMake3.9、Git、Python这些我之前已经下载好,这里就不过多阐述了,自行百度安装即可 1.从Git库获取OpenCV: git clon…

RF模块是如何工作的?

射频(RF)模块使用无线电频率工作,这个频率范围在30kHz到300kHz之间变化。 在这个射频系统中,数字数据被表示为载波波幅度的变化。这种调制类型是振幅移位键。 这个射频模块是射频发射器和接收器的组合,发射器接收器对的…

Day61力扣打卡

打卡记录 反转二叉树的奇数层&#xff08;bfs&#xff09; 链接 class Solution:def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]:q [root]flag 0while q:t, q q, []if flag:l, r 0, len(t) - 1while l < r:t[l].val, t[r].val t[r]…

idea代码测试覆盖率

前言 单元测试其实是检测代码最好的方式&#xff0c;单元测试&#xff0c;代码质量&#xff0c;这些都是很好的工具&#xff0c;单元测试需要结合mockito框架进行mock来测试&#xff0c;否则没用的数据写入到数据库里面也是占用空间&#xff0c;本身测试只是为了检查我的逻辑是…

neo4j如何创建多个数据库

1.在neo4j的压缩包解压位置找到neo4j.conf文件 "D:\neo4j\neo4j-community-3.5.5\conf\neo4j.conf"2.修改文件 新增dbms.activate_database**.db 再重新neo4j打开网页就进入到新建的数据库中 如果要切换&#xff0c;就把原来的注释掉就可以

LeetCode Hot100 25.K个一组翻转链表

题目&#xff1a; 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯…

Linux内核介绍

文章目录 Linux内核介绍1. Linux内核的起源和发展历程1.1 起源1.2 发展历程 2. Linux内核的主要特性2.1 多任务处理2.2 多用户2.3 内存管理2.4 网络功能 3. Linux内核的架构3.1 用户空间与内核空间3.2 内核模块 4. Linux内核的疑难技术点解析4.1 进程调度4.2 内存管理 5. Linux…

【Spring】05 生命周期之初始化回调

文章目录 1. 回调是什么2. 初始化回调2.1 实现 InitializingBean 接口2.2 配置 init-method 3. 执行顺序4.优势及应用总结 在 Spring 框架中&#xff0c;生命周期回调&#xff08;Lifecycle Callbacks&#xff09;是一种强大的机制&#xff0c;它允许我们在 Spring 容器中的 Be…

阿里发布高质量图像转视频AI模型I2VGen-XL

受益于扩散模型快速发展&#xff0c;视频合成近年来取得了显著进步。然而&#xff0c;在语义准确性、清晰度和时空连续性方面仍存在挑战。这主要源于缺乏良好对齐的文本视频数据以及视频的复杂结构&#xff0c;使得模型难以同时确保卓越的语义和质量。 阿里团队提出了一种级联…

怎么把图片转文字?这几个图片转文字方法一定要知道!

怎么把图片转文字&#xff1f;无论是从书籍、网络还是社交媒体上&#xff0c;我们经常需要从图片中提取文字来进行复制、编辑或翻译。手动操作耗时耗力&#xff0c;效率低下&#xff0c;那么怎么把图片转文字呢&#xff1f;今天我将介绍三种不同的方法来实现图片转文字。 图片转…

DevOps搭建(六)-安装Maven详细步骤

1、官网下载 下载地址&#xff1a; Maven – Download Apache Maven 2、上传压缩包到服务器 把下载好的压缩包上传到服务器上。 3、解压压缩包 解压压缩包到安装目录/usr/local/ tar -zxvf apache-maven-3.9.3-bin.tar.gz -C /usr/local/ 切换到/usr/local目录下ls命令看…

持续集成交付CICD:GitLabCI操作Harbor仓库

目录 一、实验 1.GitLabCI操作Harbor仓库 二、问题 1.gitlab-runner连接docker daemon报错 一、实验 1.GitLabCI操作Harbor仓库 &#xff08;1&#xff09;修改GitLabCI共享库代码并提交到mater CI.yaml .pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: …

代码随想录第三十三天(一刷C语言)|斐波那契数爬楼梯使用最小花费爬楼梯

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 动态规划步骤&#xff1a; 确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 一、斐波那契数 思路&#xff1a;参考carl文档 1、dp[i]的定义为&#xff…

FPGA巩固基础:秒表的设计

设计要求&#xff1a; 6位8段数码管&#xff0c;低三位显示毫秒计数&#xff0c;最高位显示分钟&#xff0c;其余两位显示秒计数。 开始案件与暂停按键&#xff0c;复位按键直接全部归零。 扩展部分&#xff1a;每计满一次&#xff0c;led移位一次。 框图设计&#xff1a; …

Android BluetoothAdapter 使用(二)

Android BluetoothAdapter 使用(二) 本篇文章主要讲下蓝牙设备的配对. 1: 蓝牙设备列表展示 下 面是蓝牙设备adapter的代码: package com.test.bluetooth;import android.bluetooth.BluetoothDevice; import android.content.Context; import android.view.LayoutInflater;…

Netty—NIO万字详解

文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一&#xff1a;缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明&#xff1a; 核心二&#xff1a;通道 (Channel)Channel类及其…

解决vue3 动态引入报错问题

之前这样写的&#xff0c;能使用&#xff0c;但是有警告 警告&#xff0c;查了下&#xff0c;是动态引入的问题&#xff0c;看到说要用glob 然后再我的基础上&#xff0c;稍微 改了下&#xff0c;就可以了&#xff1a; 最后打印了下&#xff0c;modules[../../components/flowc…

Javascript高频面试题

系列文章目录 文章目录 系列文章目录前言1.JavaScript常见数据类型null 和 undefind区别symbol&#xff08;ES6新增&#xff09;、bigInt&#xff08;ES10新增&#xff09; 2.JavaScript判断数据类型的方式3. 和 区别&#xff0c;分别在什么情况使用&#xff1f;4.变量声明 va…