sdn

2019 SDN上机第6次作业

十年热恋 提交于 2019-12-06 12:52:29
1.实验拓扑 构建拓扑代码 from mininet.topo import Topo from mininet.net import Mininet from mininet.node import RemoteController,CPULimitedHost from mininet.link import TCLink from mininet.util import dumpNodeConnections class MyTopo( Topo ): "Simple topology example." def __init__( self ): "Create custom topo." Topo.__init__( self ) switchs = [] for i in range(2): sw = self.addSwitch("s{}".format(i + 1)) switchs.append(sw) self.addLink(switchs[0], switchs[1],4,4) count = 1 for sw in switchs: for i in range(3): h = self.addHost("h{}".format(count)) self.addLink(sw, h,i+1,1) count += 1 topos = { 'mytopo':

2019 SDN上机第6次作业

血红的双手。 提交于 2019-12-06 12:49:58
1.实验拓扑 实验拓扑图如下: 搭建代码如下: 创建py文件,并编写py代码,代码如下: from mininet.topo import Topo from mininet.net import Mininet from mininet.node import RemoteController,CPULimitedHost from mininet.link import TCLink from mininet.util import dumpNodeConnections class Mytopo(Topo): def __init__(self): Topo.__init__(self) s=[] for i in range(2): sw = self.addSwitch('s{}'.format(i+1)) s.append(sw) count=1 for sw in s[0:2]: for i in range(3): host = self.addHost('h{}'.format(count)) self.addLink(sw,host) count += 1 self.addLink(s[0],s[1]) topos = {'mytopo': (lambda:Mytopo())} 搭建结果如下 使用net查看拓扑 使用pingall发现都不连通

[2019.12.03]SDN上机第6次作业

好久不见. 提交于 2019-12-06 12:49:04
实验拓扑 通过图形化界面建立拓扑 先清除网络拓扑 sudo mn -c 生成Python语句 #!/usr/bin/python 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' ) info( '*** Add switches\n') s1 = net.addSwitch(

2019 SDN上机第6次作业

对着背影说爱祢 提交于 2019-12-06 11:05:22
1.实验拓扑 拓扑图如下: 搭建代码如下: from mininet.topo import Topo class Mytopo(Topo): def __init__(self): Topo.__init__(self) s=[] for i in range(2): sw = self.addSwitch('s{}'.format(i+1)) s.append(sw) self.addLink(s[0],s[1]) count=1 for two in s: for i in range(3): host = self.addHost('h{}'.format(count)) self.addLink(two,host) count += 1 topos = {'mytopo': (lambda:Mytopo())} 搭建成功 输入以下命令连接ryu控制器 ryu-manager ofctl_rest.py 输入net,查看各主机与交换机之间的端口情况,方便确定之后脚本中匹配项的值 2.使用Ryu的REST API下发流表实现和第2次实验同样的VLAN 参考了RYU手册中使用curl命令的部分 https://ryu.readthedocs.io/en/latest/app/ofctl_rest.html#description-of-match-on-request

2019 SDN上机第5次作业

删除回忆录丶 提交于 2019-12-06 10:55:27
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 可以将收到的数据包转发给所有端口 控制器设定交换机支持什么版本的OpenFlow? OpenFlow v1.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'已添加到L2Switch类。当Ryu收到OpenFlow packet_in消息时,将调用此方法。诀窍是“ set_ev_cls”装饰器

2019 SDN第5次作业

主宰稳场 提交于 2019-12-06 10:37:00
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: (1)描述官方教程实现了一个什么样的交换机功能? 将接收到的数据包发送到所有端口的功能 (2)控制器设定交换机支持什么版本的OpenFlow? 支持OpenFlow1 (3)控制器设定了交换机如何处理数据包? 将接收到的数据包广播发送到所有端口,具体代码如下: @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) 2、根据官方教程和提供的示例代码(SimpleSwitch.py),将具有自学习功能的交换机代码(SelfLearning.py)补充完整

2019 SDN上机第5次作业

只愿长相守 提交于 2019-12-06 10:08:20
2019 SDN上机第5次作业 浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交对于教程代码的理解: 描述官方教程实现了一个什么样的交换机功能? 官方教程实现了一个将接收到的数据包发送到所有端口的交换机功能 控制器设定交换机支持什么版本的OpenFlow? 控制器设定交换机支持OpenFlow 1.0 控制器设定了交换机如何处理数据包? 首先通过以下这个语句设置想要向交换机协商的OpenFlow版本号 OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] 给出官方的代码,这一部分是实现将接收到的数据包发送到所有端口的功能。 @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,

2019 SDN上机第5次作业

杀马特。学长 韩版系。学妹 提交于 2019-12-06 10:02:34
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于 描述官方教程实现了一个什么样的交换机功能? 该应用程序使用OFPP_FLOOD标志来指示应在所有端口上发送数据包。 控制器设定交换机支持什么版本的OpenFlow? OpenFlow 1.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 from ryu.lib.packet import packet from ryu.lib.packet import ethernet from ryu.lib.packet import ether_types from ryu.lib.packet import ipv4 class SimpleSwitch(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] def _

2019 SDN上机第5次作业

白昼怎懂夜的黑 提交于 2019-12-06 09:04:45
2019 SDN上机第5次作业 1.浏览 RYU官网 学习RYU控制器的安装和 RYU开发入门教程 ,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 将接收到的数据包发送到所有端口的交换机功能 控制器设定交换机支持什么版本的OpenFlow? OpenFlow 1.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): OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] def __init__(self, *args, **kwargs): super(L2Switch, self).__init__(*args, **kwargs) @set_ev_cls(ofp_event

2019 SDN上机第5次作业

好久不见. 提交于 2019-12-06 08:58:56
2019 SDN上机第5次作业 1.浏览 RYU官网 学习RYU控制器的安装和 RYU开发入门教程 ,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 该应用程序使用OFPP_FLOOD标志来指示应在所有端口上发送数据包。 控制器设定交换机支持什么版本的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) 当Ryu收到OpenFlow packet_in消息时,将产生事件(调用"packet_in_hander"方法); ev