首页 > 其他分享 >实验6:开源控制器实践——RYU

实验6:开源控制器实践——RYU

时间:2022-11-27 17:57:34浏览次数:40  
标签:控制器 simple py 开源 switch RYU 13

实验6:开源控制器实践——RYU

一、实验目的

  1. 能够独立部署RYU控制器;
  2. 能够理解RYU控制器实现软件定义的集线器原理;
  3. 能够理解RYU控制器实现软件定义的交换机原理。

二、实验环境

Ubuntu 20.04 Desktop amd64

三、实验要求

(一)基本要求

  1. 搭建下图所示SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。

     

     


    sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10
    ryu-manager ryu/ryu/app/gui_topology/gui_topology.py --observe-links

  2. 阅读Ryu文档的The First Application一节,运行当中的L2Switch,h1 ping h2或h3,在目标主机使用 tcpdump 验证L2Switch,分析L2Switch和POX的Hub模块有何不同。

     

     


    h2和h3同样可以看到都有抓到数据包

  3. 编程修改L2Switch.py,另存为L2212106680.py,使之和POX的Hub模块的变得一致?

     

     

点击查看代码

(二)进阶要求

阅读Ryu关于simple_switch.py和simple_switch_1x.py的实现,以simple_switch_13.py为例,完成其代码的注释工作,并回答下列问题:

点击查看代码
  1. 代码当中的mac_to_port的作用是什么?
  • mac_to_port的作用是保存mac地址到交换机端口的映射
  1. simple_switch和simple_switch_13在dpid的输出上有何不同?
  • 在simple_switch_13.py中为dpid = format(datapath.id, "d").zfill(16)
  • 在simple_switch.py中为dpid = datapath.id
  • 在simple_switch_13.py中使用了zfill() 方法返回指定长度为16的字符串,原字符串右对齐,前面填充0;而simple_switch.py直接输出dpid
  1. 相比simple_switch,simple_switch_13增加的switch_feature_handler实现了什么功能?
  • 增加了实现交换机以特性应答消息响应特性请求功能
  1. simple_switch_13是如何实现流规则下发的?
  2. switch_features_handler和_packet_in_handler两个事件在发送流规则的优先级上有何不同?
  • switch_features_handler下发流表的优先级比_packet_in_handler高

2.编程实现和ODL实验的一样的硬超时功能

点击查看代码

 

 

个人总结

本次实验难度适中,先验证ryu基本功能,RYU控制器在下发流表时和POX控制器都是对数据包进行泛洪转发,而且RYU不能查看对应流表项,在操作硬超时部分时,需要将openflow的版本改为1.3,并且在测试icmp时,再开启硬超时代码,就可以实现主机之间硬超时访问

标签:控制器,simple,py,开源,switch,RYU,13
From: https://www.cnblogs.com/smy28336/p/16930203.html

相关文章

  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境......
  • 对dedecms、php168,phpcms、VeryCMS、DiyPage五款开源整站系统的简单评点(
    随着phpcms的开源,目前国内的开源整站系统(cms),已经有了三款功能比较强大的软件:dedecms、php168,phpcms,另外还有一个半吊子成品VeryCMS和一个起步中的DiyPage,这对站长来说,真是个......
  • SDN控制器-ONOS源码编译与mininet快速入门
    SDN控制器-ONOS源码编译与mininet​​所需环境​​​​系统要求​​​​onos编译软件环境安装​​​​依赖软件安装​​​​Bazel/Bazelisk安装​​​​jdk11安装(可选)​​......
  • Web开发人员应当知道的15个开源项目
    如今,构建网站和开发Web应用程序已经不仅要求开发人员是一名优秀的程序员,更需要聪明的程序员。这也就是说,在可能的情况下,重复使用已有的代码和应用程序,而不是自己重头开始。......
  • 图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?
      BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发......
  • typimg: typora中一键上传图片到博客园(工具开源)
    项目介绍项目背景个人经常使用Typora这一软件,在编写md文档时,图片可以暂存本地,文章中可以使用本地图片的绝对路径或相对路径,痛点就是不利于以后文档的迁移和平台的变......
  • 适合编程初学者的开源博客系统(Go语言版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言(我这里说的主流,直白点讲就是互联网公司......
  • 构建镜像开源工具 buildah
    构建镜像开源工具buildahtags:images文章目录​​构建镜像开源工具buildah​​​​1.简介​​​​2.特点​​​​3.Buildah和Podman​​​​4.安装​​​​4.1Cen......
  • renren-fast-vue人人开源前端项目搭建保姆级教程
    1、从gitee上clone项目gitclonehttps://gitee.com/renrenio/renren-fast-vue.git2、准备好python环境需要有Python2以上的环境,我安装了Python3.10.0的版本,可以搭建成......