dsb321sda,DSB221SDN

  dsb321sda,DSB221SDN

  SDN的Mininet1. SDN 与 Mininet 概述SDN全称是(软件定义网络),是当前互联网中一种新的网络创新架构。其核心技术OpenFlow通过网络设备的控制平面与数据平面分离,实现了网络流量的灵活控制,为网络和应用提供了良好的平台。Mininet是一个轻量级的软件定义的网络和测试平台。它采用轻量级虚拟化技术,让单个系统看起来像一个完整的网络运行内核系统和用户代码。也可以简单理解为SDN网络系统中基于流程的虚拟化平台。它支持OpenFlow和OpenvSwith等各种协议。Mininet还可以在同一台计算机上模拟完整的网络主机、链路和交换机,并帮助交互式开发、测试和演示,尤其是使用OpenFlow和SDN技术的开发、测试和演示。同时,通过这个过程虚拟化的平台下的代码可以移植到真实的环境中。

  2. Mininet 实现的特性支持OpenFlow、OpenvSwitch等软定义网络组件,支持系统级恢复测试,支持复杂拓扑,提供Python API用于自定义拓扑。方便多人协作,良好的硬件可移植性和高可扩展性,支持数千台主机的网络结构。3. Miniet 实现与工作流程Mininet的安装方法比较简单。可以通过Git源代码和自己的安装脚本安装在Linux系统中。这里我采用了所有相关Mininet相关套件的默认安装,比如OpenFlow、POX等工具,默认会保存在当前用户的home目录下。

  # git克隆git://github . com/mininet/mininet # CD mininet/util/#。/install . sh-a # ls net of-test openflow pox 3.1的lops的distrector创建网络图1。简单网络示例图1。由于Mininet支持自定义网络,这里有一个简单的网络示例,如图1所示。您可以在Mininet网络系统中直接输入mn命令,在该系统中创建一个单层拓扑网络,从中默认创建两个主机和一个交换机,并激活控制器和交换机。同时,您还可以通过命令网络检查链接状态。首先列举一个简单的例子,比如在Mininet系统中启用Web服务器和客户端。

  # mn***创建网络***添加控制器***添加主机:h1 h2***添加交换机:s1***添加链路:(h1,s1) (h2,S1) ***配置主机H1 H2 * * *启动控制器* * *启动1交换机S1 * * *启动CLI: Mininet 3.2启用和关闭Web服务可以方便在Mininet环境中建立Web服务器,从下面的例子可以看出,从Host1建立Web服务器,从Web服务器的另一台主机获取HTTP请求。

  NET h1 Python-M Simple HTTP Server 80 #启动主机H1 mininet h2 wget -O-h1 #在主机H2-2013-11-04 00:05:40-335810 . 0 . 0 . 1/连接到10.0.0.1:80上下载h1网站的内容.已连接。HTTP请求已发送,正在等待响应.200 OK…………长度:760 [text/html!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 3.2 Final//EN 。bash _ history . wireshark/install-Mininet-VM . shmininet/of-dissector/of lops/of test/openflow/pox/0K 100% 1.65m=0s 2013-11-04 00:05:40(1.65 MB/s)-写入stdout[760/760]Mininet h1 kill % Python # kills web进程10 . 0 . 0 . 2-[04/nov/]Get/http/1.1 200-bash

  米内特h1平-C4 H2平字节数据。10.0.0.2中的64字节:icmp_req=1 ttl=64 time=1.55 ms64字节来自10 .0 .0 .2中的:icmp_req=2 ttl=64 time=0.094 ms64字节来自10 .0 .0 .2中的:icmp_req=3 ttl=64 time=0支持自定义拓扑结构,在迷你网/定制目录下给出了一个实例,如在topo-2sw-2host.py文件中定义了一个mytopo,则可以通过-拓扑选项来指定使用这一拓扑:

  图2.自定拓扑示例由于迷你网也支持参数化拓扑,通过计算机编程语言代码也可以创建一个灵活的拓扑结构,也可根据自定义传递进去的参数进行配置,并且可重用到多个环境中,下面简短列出其代码的大致结构及含义。

  #!来自mininet的/usr/yjddxhd/python。Topo从mininet.net进口Topo从mininet进口mininet。util从mininet导入dumpnodeconnections。日志导入setLogLevelclass SingleSwitchTopo(Topo):def _ _ init _ _(self,n=2,**opts):Topo .__init__(self,* * opts)switch=self。添加开关( S1 )#添加一个交换机在拓扑中对于范围(名词)中的h:宿主=自身。添加主机( h % s %(h 1))#添加主机到拓扑中self.addLink(主机,交换机)#添加双向连接拓扑def简单测试():topo=SingleSwitchTopo(n=4)net=Mininet(topo)#主要类来创建和管理网络net.start() #启动您的拓扑网络打印"转储主机连接"转储节点连接(net.hosts) #转存文件连接打印"测试网络连接性" net.pingAll() #所有节点彼此测试互连net.stop() #停止您的网络if _ _ name _ _== _ _ main _ _ :setlog level( info )#设置迷你网默认输出级别,设置信息它将提供一些有用的信息简单测试()3.4 查看节点与链接# python测试-single。py ***创建网络***添加控制器* * *添加主机:h1 h2 h3 h4***添加交换机:s1***添加链路:(h1,s1) (h2,s1) (h3,s1) (h4,s1)***配置主机h1 h2 h3 h4***启动控制器***启动一交换机一转储主机连接h1 h1-eth 0:S1 eth 1 H2 H2 eth 0:S1 eth 2 H3 H3 eth 0:S1 eth 3 H4 eth 0:S1-eth 4测试网络连接*** ping:测试砰可到达性h1-H2 H3 H4 H2-h1 H3 H4 H3 H3-h1 H4 H3-h1 H2 H3 * * *结果:0%掉线(12/12收到)3.5 自定义拓扑

  通常情况下,主机界面有用独立的名字空间命名空间,而控制节点跟交换节点都在根名字空间(根命名空间)中。如果想要让所有节点拥有各自的名字空间,需要添加-内部空间参数,即执行:mn - innamespace

  # mn -内部命名空间开关用户***创建网络***添加控制器***添加主机:h1 h2***添加交换机:s1***添加链路:(h1,s1) (h2,s1)c0 - s1***测试控制网络1 - c0c0 - s1***结果:0%丢弃(收到2/2)***配置主机h1 h2***启动控制器* * *启动一台交换机s1***启动CLI:3.6 验证参数化拓扑结构3.7 名字空间 namespace

  名称作用节点查看全部节点网查看链路信息倾销输出各节点的信息h1 ping -c 4 h2测试主机之间的连通性软件两个节点之间用指定简单的三氯苯酚测试iperfudp两个节点之间用指定款单用户数据报协议进行测试诺埃乔运行交互窗口,关闭回应pingpair两个主机将互pinghelp列出命令文档,查看命令帮助:帮助命令概率计算树逻辑在所有叫交换机退出/退出退出迷你网命令行hX ifconfig查看当前那主机的互联网协议(互联网协议的缩写)地址,如:h1 ifconfigpy/sh执行大蟒表达式或运行外部壳程序

  原文来自:https://www。IBM。com/developer works/cn/cloud/library/1404 _罗俊_sdnmininet/

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: