sdn

SDN课程阅读作业(2)

故事扮演 提交于 2019-12-05 20:34:01
文章链接 百度网盘链接 提取码:yav0 阅读文章《The Road to SDN: An Intellectual History of Programmable Networks》,并根据所阅读的文章,书写一篇博客,回答以下两个问题: 过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 在过去20年中,可编程网络的发展可以分为三个阶段,具体第一阶段为从200世纪90年代中期到21世纪初的Active Networking(主动网络)阶段,第二为从2001年到2007年左右的Separating Control and Data Planes(控制和数据平面分离)阶段,第三为2007年至2010年左右的OpenFlow API和网络操作系统(OpenFlow and Network OSes)阶段。 以下为各个阶段的贡献: (1)主动网络阶段 1.引入了网络可编程功能,降低了创新的障碍。 2.主动网络是第一批干净的网络架构方法 3.提供了平台的可移植性和一些代码安全 4.基于包头的网络数据化及其解复用能力 5.为MiddleBox编排提供统一架构的构想 (2)控制和数据平面分离阶段 1.提出控制面和数据面之间的开放接口 2.在逻辑上对网络进行集中控制 3.提出了两个概念:使用数据面的开放接口进行集中逻辑控制和分布式状态管理 4.为Openflow的创建奠定了基础

2019 SDN上机第5次作业

隐身守侯 提交于 2019-12-05 20:30:25
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交对于教程代码的理解: 描述官方教程实现了一个什么样的交换机功能? 实现了一个将接收到的数据包发送到所有端口的交换机功能 控制器设定交换机支持什么版本的OpenFlow? 控制器设定交换机支持OpenFlow 1.0 控制器设定了交换机如何处理数据包? 接收包并广播包 @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) #当Ryu收到OpenFlow交换机送来的packet_in消息时调用,set_ev_cls的第一个参数也声明了。 #set_ev_cls的第二个参数MAIN_DISPATCHER意味着当Ryu和交换机握手过程(即hello, features request/reply, Set Config等)完毕,才会调用packet_in_handler。 def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto ofp_parser = dp.ofproto_parser actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)] out = ofp_parser.OFPPacketOut(

2019 SDN上机第5次作业

为君一笑 提交于 2019-12-05 20:28:18
本次作业将进行RYU控制器相关实践,了解RYU控制器开发方法。 实验内容 1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 官方代码 from ryu.base import app_manager from ryu.controller import ofp_event from ryu.controller.handler import MAIN_DISPATCHER from ryu.controller.handler import set_ev_cls from ryu.ofproto import ofproto_v1_0 class L2Switch(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] def __init__(self, *args, **kwargs): super(L2Switch, self).__init__(*args, **kwargs) @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto

2019 SDN上机第5次作业

霸气de小男生 提交于 2019-12-05 20:27:31
1.浏览 RYU官网 学习RYU控制器的安装和 RYU开发入门教程 ,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 将接收到的数据包发送到所有端口的功能 控制器设定交换机支持什么版本的OpenFlow? OpenFlow v1.0 控制器设定了交换机如何处理数据包? from ryu.base import app_manager from ryu.controller import ofp_event from ryu.controller.handler import MAIN_DISPATCHER from ryu.controller.handler import set_ev_cls from ryu.ofproto import ofproto_v1_0 class L2Switch(app_manager.RyuApp): #设置想要向交换机协商的OpenFlow版本号 OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] #控制器会自动交换Hello包,协商版本号,接着协商完成之后,它再自动执行交换Features包,进行握手 def __init__(self, *args, **kwargs): super(L2Switch, self).__init__(*args, **kwargs) #

sdn第五次作业

只谈情不闲聊 提交于 2019-12-05 20:20:35
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 控制器设定交换机支持什么版本的OpenFlow? 控制器设定了交换机如何处理数据包? 2.根据官方教程和提供的示例代码(SimpleSwitch.py),将具有自学习功能的交换机代码(SelfLearning.py)补充完整 3.在mininet创建一个最简拓扑,并连接RYU控制器 来源: https://www.cnblogs.com/lhwblogs/p/11945106.html

2019 SDN上机第5次作业

為{幸葍}努か 提交于 2019-12-05 20:20:15
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 将packet_in转发到所有端口 控制器设定交换机支持什么版本的OpenFlow? OpenFlow 1.0 控制器设定了交换机如何处理数据包? 将Ryu和交换机negotiation之后的数据包转发到所有端口 2.根据官方教程和提供的示例代码(SimpleSwitch.py),将具有自学习功能的交换机代码(SelfLearning.py)补充完整 来源: https://www.cnblogs.com/zaynq/p/11945124.html

2019 SDN上机第5次作业

橙三吉。 提交于 2019-12-05 20:18:24
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 1)描述官方教程实现了一个什么样的交换机功能? 官方教程实现了一个将接收到的数据包发送到所有端口的交换机功能 2)控制器设定交换机支持什么版本的OpenFlow? OpenFlow1.0 3)控制器设定了交换机如何处理数据包? 2.根据官方教程和提供的示例代码(SimpleSwitch.py),将具有自学习功能的交换机代码(SelfLearning.py)补充完整 补充的四处地方及完整代码: # TODO define OpenFlow 1.0 version for the switch OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] # TODO send modified message out datapath.send_msg(mod) # TODO define the action for output actions = [datapath.ofproto_parser.OFPActionOutput(out_port)] # TODO define the OpenFlow Packet Out out = datapath.ofproto_parser.OFPPacketOut(datapath=datapath,

2019 SDN上机第5次作业

二次信任 提交于 2019-12-05 20:18:22
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 官方教程实现了一个将接收到的数据包发送到所有端口的交换机功能 控制器设定交换机支持什么版本的OpenFlow? OpenFlow 1.0 控制器设定了交换机如何处理数据包? @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto ofp_parser = dp.ofproto_parser actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)] out = ofp_parser.OFPPacketOut( datapath=dp, buffer_id=msg.buffer_id, in_port=msg.in_port, actions=actions) dp.send_msg(out) 类中添加了一个新方法“packet_in_handler”。当Ryu接收到消息中的OpenFlow数据包时调用此函数。诀窍是“set-ev-cls”装饰器

2019 SDN上机第5次作业

两盒软妹~` 提交于 2019-12-05 20:16:43
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解 - 描述官方教程实现了一个什么样的交换机功能? 实现了让交换机在各端口发送它接收到的数据包的功能 - 控制器设定交换机支持什么版本的OpenFlow? 支持OpenFlow v1.0 - 控制器设定了交换机如何处理数据包? 首先通过以下这个语句设置想要向交换机协商的OpenFlow版本号 OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] 给出官方的代码,这一部分是实现将接收到的数据包发送到所有端口的功能。 super(L2Switch, self).__init__(*args, **kwargs) @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto ofp_parser = dp.ofproto_parser actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)] out = ofp_parser.OFPPacketOut( datapath=dp, buffer_id=msg

2019 SDN上机第5次作业

牧云@^-^@ 提交于 2019-12-05 20:16:38
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 将接收到的数据包发送到所有端口 控制器设定交换机支持什么版本的OpenFlow? openflow 1.0 控制器设定了交换机如何处理数据包? @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)装饰器告诉Ryu何时应调用装饰的函数 第一个参数指示应调用此函数的事件类型 第二个参数指示开关的状态 packet_in_handler函数 ev.msg是表示packet_in数据结构的对象。 msg.dp是代表数据路径(开关)的对象。 dp.ofproto和dp.ofproto_parser是代表Ryu和交换机协商的OpenFlow协议的对象。 OFPActionOutput类与packet_out消息一起使用,以指定要从中发送数据包的交换机端口。该应用程序使用OFPP_FLOOD标志来指示应在所有端口上发送数据包。 OFPPacketOut类用于构建packet_out消息。 如果使用OpenFlow消息类对象调用Datapath类的send_msg方法,则Ryu会生成联机数据格式并将其发送到交换机。 2.根据官方教程和提供的示例代码(SimpleSwitch.py)