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

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

申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计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中搭建如下拓扑图

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

终端显示如图:

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

2.配置Mininet如下图:

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

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

; 3.配置Controller如图:

【Controller Type】选【Remote Controller】

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

4.配置交换机如下图:

DPID为 0000000000000001

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

; 5.配置主机

host1为 10.0.0.1和host2为 10.0.0.2

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

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

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

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

; 7.测试链路的连通性pingall

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

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

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

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

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

附上代码:


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 controller\n' )
    c0=net.addController(name='c0',
                      controller=RemoteController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

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

    info( '*** Add hosts\n')
    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 links\n')
    net.addLink(h1, s1)
    net.addLink(s1, s2)
    net.addLink(s2, h2)

    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switches\n')
    net.get('s1').start([c0])
    net.get('s2').start([])

    info( '*** Post configure switches and hosts\n')

    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

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

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

py sys.version

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

退出 CLI: exit

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

清理

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

sudo mn -c

学习中碰到的小问题

Ubuntu中切换python版本的问题

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

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

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

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

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

输入: python

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

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

输入: update-alternatives --list python

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

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

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

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

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

这里我指定了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

说明更改成功

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

–end–

Original: https://blog.csdn.net/qq_44807756/article/details/127816174
Author: 不懂开发的程序猿
Title: 混合IP-SDN环境的仿真实验

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/652639/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球