openflow

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) #

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)

【2019.11.27】SDN上机第5次作业

安稳与你 提交于 2019-12-05 20:14:01
描述官方教程实现了一个什么样的交换机功能? Ryu是一个基于组件的软件定义的网络框架。Ryu为软件组件提供了定义良好的API,使开发人员可以轻松创建新的网络管理和控制应用程序。Ryu支持各种用于管理网络设备的协议,如OpenFlow、Netconf、OF config等。 控制器设定交换机支持什么版本的OpenFlow? 关于OpenFlow,Ryu完全支持1.0、1.2、1.3、1.4、1.5和Nicira扩展。 控制器设定了交换机如何处理数据包? 根据官方教程和提供的示例代码(SimpleSwitch.py),将具有自学习功能的交换机代码(SelfLearning.py)补充完整 SelfLearning.py 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 from ryu.lib.mac import haddr_to_bin from ryu.lib.packet import packet from ryu.lib

2019 SDN上级第五次作业

烂漫一生 提交于 2019-12-05 20:13:26
1.浏览 RYU官网 学习RYU控制器的安装和 RYU开发入门教程 ,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 答:官方教程实现了一个将接收到的数据包发送到所有端口的交换机功能 控制器设定交换机支持什么版本的OpenFlow? 答:控制器设定交换机支持OpenFlow 1.0 控制器设定了交换机如何处理数据包? 答:'''@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)''' 答:当Ryu收到OpenFlow交换机送来的packet_in消息时调用新增方法packet_in_handler,set_ev_cls的第一个参数也声明了 2.根据官方教程和提供的示例代码(SimpleSwitch.py),将具有自学习功能的交换机代码(SelfLearning.py)补充完整 代码链接 如下是补充完整代码: 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

2019 SDN上机第5次作业

一笑奈何 提交于 2019-12-05 16:04:34
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解 1.描述官方教程实现了一个什么样的交换机功能? 让交换机在各个端口发送它接收到的数据包 2. 控制器设定交换机支持什么版本的OpenFlow? OpenFlow v1.0 3. 控制器设定了交换机如何处理数据包? 这里把官方给出的代码放上来(不然不知道在解释啥),备注中解释到处理函数定义为止的前半部分,后半部分较长就在下面用文字解释 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] /*这里设置想要向交换机协商的OpenFlow版本号*/ /*这玩意设置完后,控制器会自动交换Hello包,协商版本号,接着协商完成之后,它再自动执行交换Features包,进行握手*/ def __init__

SDN课程阅读作业(2)

若如初见. 提交于 2019-12-05 15:57:32
1. 过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 可分为三个阶段 1.主动网络(20世纪90年代中期到21世纪初) 贡献有三个: 1.网络可编程性降低了技术创新的障碍 2.提出网络虚拟化,以及基于包头对软件程序进行复用 3.创建中间件编排统一的架构 2.将控制面与数据面分离(2001年-2007年) 贡献有三个: 1.提出两项创新,分别为控制面和数据面之间的开放接口与在逻辑上对网络进行集中控制 2.将控制功能转移到了单独的服务器上,这样逻辑上集中的路由控制器降低了标准的实施障碍,服务器技术的进步意味着单一的商品服务器可以存储的所有的路由状态,并为一个大型网络计算所有的路由决策 3.提出了两个概念,分别为使用数据面的开放接口进行集中逻辑控制和分布式状态管理 3.OpenFlow API和网络操作系统(2007年-2010年) 贡献有五个: 1.OpenFlow为学生和科研人员实现新协议和新算法提供一个很好的试验平台 2.OpenFlow交换机在数据中心网络中的使用,使得网络和计算资源更加紧密的联系起来并实现有效的控制 3.基于OpenFlow技术实现的网络更加便于控制,在内部网络和外网的连接处应用OpenFlow交换机可以通过更改数据流的路径以及拒绝某些数据流来增强企业内网的安全性 4.基于OpenFlow实现SDN

2019 SDN阅读作业(2)

痴心易碎 提交于 2019-12-05 15:56:15
1.作业要求: 阅读文章《The Road to SDN: An Intellectual History of Programmable Networks》,并根据所阅读的文章,回答以下两个问题: 1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 2.网络虚拟化与SDN的关系? 作业博客链接: http://edu.cnblogs.com/campus/fzu/fzusdn2019/homework/10094 2.问题回答: (1)过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 答:在过去20年中可编程网络的发展可以分为以下三个阶段: 主动网络阶段(从20世纪90年代中期到21世纪初) 贡献:它在网络中引入了可编程功能,实现了更大的创新。 ​ 在20世纪90年代中期,由于网络协议标准化过程的缓慢,一些网络研究人员采用了一种开放网络控制的替代方法,大致是基于对独立PC重新编程相对容易的类比。具体地说,传统网络在任何意义上都不是“可编程”的,主动网络代表了一种激进的网络控制方法,通过设想一个编程接口(或网络API)来公开各个网络节点上的资源(例如,处理、存储和数据包队列),并支持构建应用于子集的定制功能,主动网络研究计划探索了传统互联网协议栈通过IP或异步传输模式(ATM)提供服务的根本替代方案。 控制和数据平面分离阶段

流表

纵然是瞬间 提交于 2019-12-05 15:42:53
3.1 流与流表 流: 同一时间,经过同一网络中具有某些共同特性(属性)的数据,抽象成一个流。可以将访问同一目的地址的数据视为流; 流一般由网络管理员定义,根据不同的流执行不同的策略 OpenFlow体系中,数据以‘流’为单位进行处理 流表: 针对特定流的 策略表项 的集合,负责数据的查找与转发 一张流表包含了一系列的流表项 3.2 OpenFlow 流表项 流表项包含三个域: 包头域(head fields):涵盖了链路层、网络层、传输层大部分标识 计数器(counters):用于统计数据流量相关信息,可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护; 动作表(actions):指示与该流表项匹配的数据包应该执行的下一步操作 流表及其组成: 安全通道 -----------------------------OpenFlow协议---------控制器 流表 包头域: 输入端口-MAC地址-MAC目的地址-以太网类型-VLAN ID-VLAN优先级-IP源地址-IP目的地址-IP协议-IP服务类型-IP源端口-IP目的端口 包头域分为四层: 1.入端口(Ingress Port),消息在哪个端口进入交换机 2.源MAC地址+Ether dst+Ether Type+VLAN id+VLAN prioroty 3.IP src+IPdst+IP Proto