我是靠谱客的博主 迅速烤鸡,最近开发中收集的这篇文章主要介绍混合IP-SDN环境的仿真实验混合IP-SDN环境的仿真实验运行一个简单的 Web 服务器和客户端仿真,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

混合IP-SDN环境的仿真实验

  • 混合IP-SDN环境的仿真实验
    • 实验室名称
    • 实验名称
    • 实验原理
    • 实验目的
    • 实验设备
    • 实验步骤
      • 1.在mininet中搭建如下拓扑图
      • 3.配置Controller如图:
      • 4.配置交换机如下图:
      • 5.配置主机
      • 6.在新的终端里打开ryu-manager远程控制器
      • 7.测试链路的连通性pingall
      • 8.打开wireshark,能看到对于的openflow协议,如图
    • 实验总结
  • 运行一个简单的 Web 服务器和客户端仿真
    • 学习中碰到的小问题

申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计5277字,阅读大概需要2分钟
欢迎关注我的个人公众号:不懂开发的程序猿

混合IP-SDN环境的仿真实验

实验室名称

网络安全与管理实验室

实验名称

混合IP-SDN环境的仿真实验

实验原理

软件定义网络将网络的控制层与数据转发层分离,控制平面在逻辑上集中,能够实现资源的灵活调度,更多的开放接口能够实现网络的可编程控制。标准化的南向接口将底层硬件对网络管理者透明化。作为一种全新的网络架构和管理形式,SDN网络在应用过程中如何与传统网络相结合受到业内的广泛讨论。由于SDN逻辑集中于控制层面,其如何与传统IP网络中的标准路由设备通信进行网络信息的更新、维护以及路由转发信息计算是一个关键问题;对于SDN自身实现方式,处于对整个网络集中式控制健壮性和延时性的风险考虑,一些研究认为网络中大部分流量利用传统控制方式其可满足转发需求,只需对其他少部分流量实现SDN控制即可满足其灵活动态需求

实验目的

从拓扑混合和流量混合两种角度出发,针对混合IP/SDN场景进行仿真, 对每一种混合模式进行了场景描述和路由实现。利用开源控制器POX路由平台,使用WireShark实现对路由协议消息的解析,并针对各拓扑混合和流量混合两种场景分析

实验设备

VMware16 pro + Ubuntu 18.0.2 LTS + Mininet 2.1.7 + WireShark 3.0.1

实验步骤

1.在mininet中搭建如下拓扑图

在这里插入图片描述

终端显示如图:

在这里插入图片描述

2.配置Mininet如下图:

【edit】—>【Preference】,勾选【Start CLI】,【OpenFlow1.3】,【Default Switch 】选【Open vSwitch Kernel Mode】

在这里插入图片描述

3.配置Controller如图:

【Controller Type】选【Remote Controller】

在这里插入图片描述

4.配置交换机如下图:

DPID为0000000000000001

在这里插入图片描述

5.配置主机

host1为10.0.0.1和host2为10.0.0.2

在这里插入图片描述

在这里插入图片描述

6.在新的终端里打开ryu-manager远程控制器

在这里插入图片描述

7.测试链路的连通性pingall

在这里插入图片描述

8.打开wireshark,能看到对于的openflow协议,如图

在这里插入图片描述

协议的具体信息含义如下:

信息类型描述
Hello控制器->开关在 TCP 握手之后,控制器将其版本号发送到交换机
Hello开关->控制器交换机回复其支持的版本号
功能请求控制器->开关控制器要求查看哪些端口可用
设置配置控制器->开关在这种情况下,控制器要求交换机发送流到期
特色回复开关->控制器交换机回复端口列表、端口速度以及支持的表和操作
端口状态开关->控制器使交换机能够通知该控制器端口速度或连接的变化

附上代码:

#!/usr/bin/env python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controllern' )
    c0=net.addController(name='c0',
                      controller=RemoteController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

    info( '*** Add switchesn')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch, dpid='0000000000000001')
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch, failMode='standalone')

    info( '*** Add hostsn')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)

    info( '*** Add linksn')
    net.addLink(h1, s1)
    net.addLink(s1, s2)
    net.addLink(s2, h2)

    info( '*** Starting networkn')
    net.build()
    info( '*** Starting controllersn')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switchesn')
    net.get('s1').start([c0])
    net.get('s2').start([])

    info( '*** Post configure switches and hostsn')

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
myNetwork()

实验总结

熟练掌握混合SDN网络环境的搭建,为以后从事相关SDN研究以及论文实验的设计打下基础

运行一个简单的 Web 服务器和客户端仿真

Mininet 主机可以运行任何可用于底层 Linux 系统(或 VM)及其文件系统的命令或应用程序。也可以输入任何bash命令,包括作业控制(&jobskill,等。)

启动一个简单的 HTTP 服务器h1,从 发出请求h2,然后关闭 Web 服务器:

h1 python -m http.server 80 &

h2 wget -O - h1

在这里插入图片描述

对于 Python 3,HTTP 服务器被称为http.server; 对于 Python 2,它被称为SimpleHTTPServer. 确保使用的是适合您正在运行的 Mininet 版本的正确版本。要找出 Mininet 使用的 Python 版本,可以输入

py sys.version

在这里插入图片描述

退出 CLI:exit

在这里插入图片描述

清理

如果 Mininet 由于某种原因崩溃,请清理它:

sudo mn -c

学习中碰到的小问题

Ubuntu中切换python版本的问题

在使用Ubuntu的过程中,会遇到编译.py文件报错SyntaxError: Missing parentheses in call to 'print'.

在这里插入图片描述

这是因为源码是用python2.X 的版本写的,在用python3.X编译会有语法上的不兼容,因此我们需要手动切换系统的默认python版本

输入:whereis python,会提示你系统里安装的python路径

在这里插入图片描述

输入:python

是查看当前系统指定的哪一版本

在这里插入图片描述

输入:update-alternatives --list python

是指定:你当前可以轮流切换的python版本,我这里还没设定,因此也就没有版本可选

在这里插入图片描述

输入:sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

是指:安装多个版本供切换,最后面的数字1,是指优先级

在这里插入图片描述

这里我指定了2个可选的pthon版本,最后面的数字2,是指优先级

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

输入:

sudo update-alternatives --config python

是指让你选择你当前想要指定的python版本,使用键盘,输入数字:1,按回车确认,即选定成功!

此时你可以输入:python

系统提示为:Python2.7.18

说明更改成功

在这里插入图片描述

–end–

最后

以上就是迅速烤鸡为你收集整理的混合IP-SDN环境的仿真实验混合IP-SDN环境的仿真实验运行一个简单的 Web 服务器和客户端仿真的全部内容,希望文章能够帮你解决混合IP-SDN环境的仿真实验混合IP-SDN环境的仿真实验运行一个简单的 Web 服务器和客户端仿真所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部