openflow测试案例-pox
- 格式:docx
- 大小:223.27 KB
- 文档页数:6
Openflow新型网络交换模型——校园网络的创新1.互联网的现状互联网的应用迅速发展, 由于一开始的设计并没有考虑到后来互联网的规模会如此庞大、承载的应用会如此复杂、地位会变得如此重要,现代的互联网在过重的压力下已经凸显出太多亟待解决的问题:互联网太危险,恶意攻击、病毒、木马每年造成上千亿刀的损失;互联网太脆弱,无标度(Scale-free)的特性让整个网络可以在精心设计的少数攻击下即告崩溃;互联网太随意,p2p等应用的出现一度造成各大ISP网络堵塞,严重影响传统正常的访问;互联网太迟钝,现代臃肿的路由机制不能支持快速的更新,即便发现问题也无法快速反应。
运营商只得忙于扩容。
这一切的问题都隐隐的指向了互联网这个庞然大物最关键的软肋——可控性。
缺乏有效的控制措施让互联网这个为服务人类而设计的机器。
因此,业界希望能够有提高网络有效性的机制出现,目前学术界斯坦福大学、伯克利大学、麻省理工学院等牵头的研究组正在推动OpenFlow技术的发展。
2.openflow应运而生2006年到2014年分三个阶段主要致力于五个问题:是否继续采用分组交换、是否要改变端对端原理、是否要分开路由和包转发、拥塞控制跟资源管理、身份认证和路由问题。
FIND计划最主要的成果之一就是GENI——一套网络研究的基础平台OpenFlow的前世今生很自然的想法,如果我能控制整个Internet就好了,而网络中最关键的节点就是交换设备。
控制了交换设备就如同控制了城市交通系统中的红绿灯一样,所有的流量就可以乖乖听话,为我所用。
所以,自然而然的想法诞生,如果能有一套开放接口、支持控制的交换标准该多好?无论是交换机还是路由器,最核心的信息都存放在所谓的flow table里面,用来实现各种各样的功能,诸如转发、统计、过滤等。
flow table结构的设计很大程度上体现了各个厂家的独特风格。
OpenFlow就是试图提出这样一个通用的flow table设计,能够满足大家不同的需求,同时这个flow table支持远程的访问和控制,从而达到控制流量的目的。
1. 网络虚拟化– FlowVisor[11]网络虚拟化的本质是要能够抽象底层网络的物理拓扑,能够在逻辑上对网络资源进行分片或者整合,从而满足各种应用对于网络的不同需求。
为了达到网络分片的目的,FlowVisor实现了一种特殊的OpenFlow Controller,可以看作其他不同用户或应用的Controllers与网络设备之间的一层代理。
因此,不同用户或应用可以使用自己的Controllers来定义不同的网络拓扑,同时FlowVisor又可以保证这些Controllers之间能够互相隔离而互不影响。
下图展示了使用FlowVisor可以在同一个物理网络上定义出不同的逻辑拓扑。
FlowVisor不仅是一个典型的OpenFlow应用案例,同时还是一个很好的研究平台,目前已经有很多研究和应用都是基于FlowVisor做的。
2. 负载均衡– Aster*x[12]传统的负载均衡方案一般需要在服务器集群的入口处,通过一个gateway或者router来监测、统计服务器工作负载,并据此动态分配用户请求到负载相对较轻的服务器上。
既然网络中所有的网络设备都可以通过OpenFlow进行集中式的控制和管理,同时应用服务器的负载可以及时地反馈到OpenFlowController那里,那么OpenFlow就非常适合做负载均衡的工作。
Aster*x通过Host Manager和Net Manager来分别监测服务器和网络的工作负载,然后将这些信息反馈给FlowManager,这样Flow Manager就可以根据这些实时的负载信息,重新定义网络设备上的OpenFlow规则,从而将用户请求(即网络包)按照服务器的能力进行调整和分发。
3. 绿色节能的网络服务– ElasticTree[13]在数据中心和云计算环境中,如何降低运营成本是一个重要的研究课题。
能够根据工作负荷按需分配、动态规划资源,不仅可以提高资源的利用率,还可以达到节能环保的目的。
Contents1. Test case 1:测试Openflow 交换机的流表容量 (1)2. Test case 2:测试Openflow 交换机的流表学习速率 (5)3. Test case 3:测试Openflow 交换机的吞吐量,时延,抖动和丢包率 (12)4. Test case 4:测试Openflow 交换机的流表震荡 (14)1.Test case 1:测试Openflow交换机的流表容量∙测试目的:测试Openflow交换机最多能支持的流表数量∙测试拓扑:∙预配置(请注意,预配置部分是写本文需要,在OpenvSwitch上所做的配置。
读者在用OVS做实验时候可参考此配置,实际测试则不需要进行此部分)设置br1 的flow table 0 表项容量为100Step 1:在OVS 的ovsdb中,在Bridge 表中,把br1 条目的flow_tables列中关联br1 的flow_table 0, 并且在Flow_Table表中创建一行。
ovs-vsctl set Bridge br1 flow_tables:0=@table0 -- --id=@table0 create Flow_Table name=table0 查看Bridge表和Flow_Table表:[root@localhostmrzhao]# ovs-vsctl list bridge_uuid : c5601237-6574-465b-843f-ac52c61d5badController : [bca3710d-1280-44eb-8436-20bbe5c8161c]datapath_id : "0000000c2992086a"datapath_type : ""external_ids : {}fail_mode : []flood_vlans : []flow_tables : {0=bebe5b02-6216-4a8a-af5d-27f1dde2bf48}ipfix : []mirrors : []name : "br1"netflow : []other_config : {}ports : [358480c2-0709-476d-8446-3020584454d0, 4f1a7238-d611-4345-8b06-83a62d414952,5dd30471-07c4-4eac-90a1-0cf7d96e7b07, a4c3be4c-bda5-4686-af08-4e59d51040bd, eaf6eb05-0d95-4775-9abb-1b139469a9b9]protocols : []sflow : []status : {}stp_enable : false[root@localhostmrzhao]# ovs-vsctl list Flow_table_uuid : bebe5b02-6216-4a8a-af5d-27f1dde2bf48external_ids : {}flow_limit : []groups : []name : "table0"overflow_policy : []prefixes : []Step 2:设置br1 的table0 的流表大小是100条流表项ovs-vsctl set Flow_Table table0 flow_limit=100查看流表项设置:[root@localhostmrzhao]# ovs-vsctl list Flow_table_uuid : bebe5b02-6216-4a8a-af5d-27f1dde2bf48external_ids : {}flow_limit : 100groups : []name : "table0"overflow_policy : []prefixes : []测试步骤1.查看初始流表,显示只有一条流表(对应LLDP 报文转发控制器的流表):[root@localhostmrzhao]# ovs-ofctl dump-flows br1NXST_FLOW reply (xid=0x4):cookie=0x0, duration=3.937s, table=0, n_packets=0, n_bytes=0, idle_age=3, dl_type=0x88cc actions=CONTROLLER:50002.创建 50条流表(初始值, Initial flow number), 下发。
OPENFLOW协议通信流程篇一:Openflow协议通信流程解读Openflow协议通信流程解读前言接触了这么久的SDN,Openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解。
现在有时间了,就写一写自己对Openflow协议通信流程的一些理解。
SDN中Switch和controller在SDN中很重要的两个实体是Switch跟Controller。
Controller在网络中相当于上帝,可以知道网络中所有的消息,可以给交换机下发指令。
Switch就是一个实现Controller指令的实体,只不过这个交换机跟传统的交换机不一样,他的转发规则由流表指定,而流表由控制器发送。
switch组成与传统交换机的差异switch组成switch由一个Secure Channel和一个flow table组成,of1.3之后table变成多级流表,有256级。
而of1.0中table只在table0中。
? Secure Channel是与控制器通信的模块,switch和controller之间的连接时通过socket连接实现。
Flow table里面存放这数据的转发规则,是switch的交换转发模块。
数据进入switch之后,在table中寻找对应的flow进行匹配,并执行相应的action,若无匹配的flow则产生packet_in(后面有讲)of中sw与传统交换机的差异匹配层次高达4层,可以匹配到端口,而传统交换机只是2层的设备。
运行of协议,实现许多路由器的功能,比如组播。
求补充!!(如果你知道,请告诉我,非常感谢!) ? ?openflow的switch可以从以下方式获得实体of交换机,目前市场上有一些厂商已经制造出of交换机,但是普遍反映价格较贵!性能最好。
在实体机上安装OVS,OVS可以使计算机变成一个openflow 交换机。
性能相对稳定。
使用mininet模拟环境。
SDN实验三:OpenFlow协议分析实践实验三:OpenFlow协议分析实践⼀、实验⽬的能够运⽤ wireshark 对 OpenFlow 协议数据交互过程进⾏抓包;能够借助包解析⼯具,分析与解释 OpenFlow协议的数据包交互过程与机制。
⼆、实验环境下载虚拟机软件Oracle VisualBox;在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;三、实验要求(⼀)、基本要求搭建下图所⽰拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信。
⽤抓包软件获取控制器与交换机之间的通信数据包。
主机IP地址h1192.168.0.101/24h2192.168.0.102/24h3192.168.0.103/24h4192.168.0.104/241. 搭建拓扑配置IP地址2. 运⾏wireshark,选择any模式进⾏抓包,开启另⼀个终端,命令⾏运⾏031902241.py⽂件,运⾏pingall3. 查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程(截图以其中⼀个交换机为例)OFPT_HELLO 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机OFPT_HELLO 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器,此处协议为openflow1.5控制器与交换机建⽴连接,并使⽤OpenFlow 1.0OFPT_FEATURES_REQUEST 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器请求交换器的特征信息OFPT_SET_CONFIG 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器要求交换机按照所给出的信息进⾏配置OFPT_PORT_STATUS 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器当交换机端⼝发⽣变化时,交换机告知控制器相应的端⼝状态OFPT_FEATURES_REPLY 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器交换机告知控制器它的特征信息OFPT_PACKET_IN 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器交换机告知控制器有数据包进来,请求控制器指⽰OFPT_PACKET_OUT 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器要求交换机按照所给出的action进⾏处理OFPT_FLOW_MOD 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器对交换机进⾏流表的添加、删除、变更等操作4. 交互图5. 交换机与控制器建⽴通信时是使⽤TCP协议还是UDP协议?如图所⽰为TCP协议(⼆)、进阶要求将抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。
《图解OpenFlow》第⼀章:OpenFlow概要1.1 OpenFlow的历史ONF:Open Networking Foundation(ONF,开放⽹络基⾦会),继承OpenFlow交换机论坛活动的形式,制定OpenFlow规范。
OpenFlow1.2之后的规范由ONF制定。
1.2 有效运⽤现有硬件,实现⾼效设计OpenFlow的初期设计思想是:⽆需设计新的硬件,⽀队现有硬件更新其软件。
因此,OpenFlow是以⽹络设备中内置了TCAM(Ternary Content-Addressable Memory)存储器为前提来实现的。
TCAM是对每个位(bit)实施0、1和don’t care三种匹配的三态电⼦器件,搭载该存储器的⽬的是在⽹络中通过硬件⾼速处理⼦⽹掩码和访问控制列表(ACL)。
1.3 所谓OpenFlow,具体是指什么传统⼆层交换机采⽤以太⽹地址和VLAN标签进⾏交换处理,⽽OpenFlow作为构建⽹络的标准规范,将各数据包(或帧)持有的以太⽹地址、VLAN标签、IP地址、TCP/UDP端⼝号等特征作为“流”来处理,在此基础上进⾏交换,并可以灵活设置路由的路径。
在构建OpenFlow⽹络时,原则上需要将控制⾯和数据⾯作为不同的⽹络,这并⾮必须要构建另外的物理⽹络。
还可以采⽤覆盖(Overlay)⽅式、使⽤VLAN等对同⼀物理⽹络进⾏逻辑分割、或者利⽤能同时⽤于数据⾯和控制⾯的“In-band控制通道”技术。
分别构建物理⽹络的优势是便于区分发⽣故障的部分。
数据⾯的构建⽅法有3种,即直接连接OpenFlow交换机的“Hop-by-Hop⽅式”、通过覆盖⽹络连接OpenFlow交换机的“覆盖⽅式”、组合以上两种⽅案的“混合⽅式”。
Hop-by-Hop⽅式就是OpenFlow交换机直接物理直连,覆盖⽅式则采⽤IP通道等技术构建⽤于数据⾯的覆盖⽹络。
覆盖⽅式具有同时使⽤现有⽹络和OpenFlow⽹络的优点,但处理性能不如Hop-by-Hop,存在MTU变⼩的缺点。
理想状态中的Openflow转发⾯模型最近⼏天⼜是经常看到有⼈在讨论Openflow芯⽚什么时候出来,看到有⼈问了⼀句“到底什么样的芯⽚算是Openflow芯⽚?”,其实要简单回答这个问题很容易,就是能够⽀持所有Openflow标准的商业ASIC芯⽚。
当然有⼈肯定对这个回答不满意,认为过于抽象,那我就只好通过具体地分析Nick McKeown教授的⼀个paper来介绍⼀下什么样的芯⽚算是真正的Openflow芯⽚。
其实学术界和⼯业界早已有不少论⽂研究这个课题,⽐如NetLogic公司的技术专家跟⼏个美国⾼校的研究⼈员就联合写过⼀个论⽂叫“PLUG: Flexible Lookup Modules for Rapid Deployment of New Protocols in High-speed Routers”,试图使⽤SRAM来解决灵活的多级流表的问题。
⽽这中间影响⼒最⼤的则是Nick McKeown教授等⼈(作者有好⼏个,谁让Nick教授名⽓最⼤,我只认识他呢)写的⼀篇论⽂。
说它名⽓⼤,⼀⽅⾯是因为Openflow的创始⼈Martin Casado(Nicira创始⼈)以及Openflow 1.0的核⼼开发⼈员Guido(BigSwitch的创始⼈)都来⾃于Nick教授领导的Clean Slate项⽬,⽽且Nick教授本⼈也是Openflow的⿎吹者。
另外⼀⽅⾯则是因为这个Paper是专门针对Openflow的⼀个全⾯的转发⾯设计建议。
我相信这个paper 也得到了ONF⼀些⼈的⽀持。
早在2013年的ONS⼤会上Nick就提出,灵活可编程的,能够满⾜Openflow要求的ASIC芯⽚完全是可⾏的,⽽且只需要⽐现有ASIC多⼀点点的代价就能实现。
当时很多⼈听了以为他信⼝开河,没想到很快他就联合TI(德州仪器)公司的⼈写了⼀个论⽂,发表在SigComm,该论⽂的标题是“Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN”。
OpenFlow技术分析和应用摘要:随着网络技术的不断发展,在现有的网络设备及协议基础之上,对已有网络进行创新性试验变得越来越困难。
当前条件下,新型网络协议在进行广泛部署前缺少有效途径对其进行试验,导致多数网络创新思想得不到测试和验证。
因此,为了在现有网络上试验新型网络协议,2008年3月,Nick McKeown等人提出了OpenFlow:一种基于流分类的新型网络试验技术,用来解决当前网络面对新业务产生的种种瓶颈。
关键词:OpenFlow;网络协议1OpenFlow技术综述1.1OpenFlow产生的背景和意义1.1.1互联网发展现状随着互联网技术的不断发展和成熟,网络上承载的业务种类呈现越来越复杂化的趋势。
随之而来的应用需求不断升级,导致现有的网络架构已经越来越难以承担传输用户业务所带来的技术挑战及沉重负荷。
当前互联网的体系架构距其刚形成时的技术条件和应用需求发生了很大的变化,然而其体系架构却并没有适应这种变化做出相应的调整,只是采取了渐进性修补的弥补策略,并没有从本质上解决网络异构化和业务复杂化随之而来的诸多问题。
随着一些网络新技术的出现,传统互联网的网络架构面临着深度调整乃至根本性变革的挑战,以满足不断提高的用户对网络服务质量、网络可管理性以及网络安全性方面的主观需求。
1.1.2可编程网络的需求和发展美国科学基金会提出的GENI,主要对网络架构、服务、功能进行革命性设计以适应经济、社会增长的需求。
GENI项目分为可控试验和试验验证两个部分,研究人员通过可控试验对相关网络试验进行设计和验证,并进行仿真,最后通过现实认证、检验其在现实的复杂网络环境下的运行性能。
这些可编程的网络需要可编程的交换机和路由器,通过虚拟化技术同时为多个隔绝的试验网络处理数据包。
然而,商业的交换机和路由器不会专门的提供一个开放的软件平台,对其进行软硬件虚拟化。
不同厂家的设备内部结构迥异,没有一个标准的平台可供研究者进行试验。
思博伦通信最佳OpenFlow性能测试解决方案
作为SDN最主流实现方式的OpenFlow,目前已经有了测试方法和仪器来验证其性能等各方面指标。
今年5月,思博伦通信发布了Spirent TestCenter OpenFlow,成为业界第一种可同时提供协议仿真和高速以太网OpenFlow网络设备流扩展能力及转发性能测试能力的解决方案。
思博伦通信高级经理张晓东表示,测试OpenFlow技术及网络包括四
个方面:性能;可用性;安全;容量。
即PASS测试方法学。
他说,由于OpenFlow带来了完全不同的网络体系架构,因此也带来很多需要测试的环节。
传统的网络要想演进到SDN,OpenFlow需要验证其在混合环境中与现有以
太网协议的互用性。
Spirent TestCenter OpenFlow控制器仿真能够对OpenFlow网络设备进行压力测试,使网络经理能够深入了解对应数据吞吐量和时延水平下的流数量。
该解决方案使用复杂的互用性和基准测试技术,能
够帮助企业和云供应商了解其网络的性能极限。
思博伦通信产品营销总监Jurrie van den Breekel指出:OpenFlow范例将控制层和数据层分离开来,这对传统联网硬件的互用性、扩展能力和性能
方面均构成了挑战。
Spirent TestCenter OpenFlow与Spirent HyperMetrics HSE
测试模块结合在一起后,可以实现深入的流分析、调试和协议仿真能力,能
够在包含SDN应用的OpenFlow设备的功能和互用性的测试中提供巨大的帮助。
OpenFlow协议抓包分析OpenFlow协议抓包分析1 什么是openflow协议OpenFlow起源于斯坦福大学的Clean Slate项目组,使用类似于API 进程配置网络交换机的协议。
OpenFlow的思路很简单,网络设备维护一个FlowTable,并且只通过FlowTable对报文进行处理,FlowTable 本身的生成、维护、下发完全由外置的Controller来实现。
OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)来共同完成,从而实现了数据转发和路由控制的分离。
控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。
OpenFlow交换机包含安全通道,多级流表和组表。
通过安全通道,OpenFlow交换机可以和控制器建立OpenFlow连接;流表用来匹配OpenFlow交换机收到的报文;组表用来定义流表需要执行的动作。
2 报文分析OpenFlow协议支持三种消息类型:controller-to-switch,asynchronous (异步)和symmetric(对称)。
OpenFlow通过这三种消息,来保持controller和OpenFlow交换机之间的通信。
常用的消息主要是Hello消息、Feature消息,Echo消息,以及Packet_in、Packet_out和Flow_mod等。
其中Hello、Feature、Echo消息分别包含REQUEST与REPLY消息,每一个消息REQUEST与REPLY的Transaction ID相同。
2.1 Hello控制器与交换机建立连接时由其中某一方发起OFPT_HELLO消息给对方,该消息携带支持的最高协议版本号,接受方将采用双方都支持的最低协议版本进行通信。
一旦发现共同支持的协议版本,则连接建立,否则发送OFPT_ERROR消息,描述失败原因,并中断连接。
测试环境----hejinlong502@●linux or windows●Pthon2.7+使用说明:◆切换到目录,路径为pox所在的路径,windows如下Linux路径为◆在此路径下运行:./pox.py openflow.of_01 --address=6.6.6.6 py监控6.6.6.6,默认端口为6633(未添加在命令行中),控制端进入交互控制模式如图◆交换机在openflow mode模式连接poxSwitch(config)#openflow modeSwitch(config-openflow)#openflow tcp 6.6.6.6 6633POX此时显示switch连接上线至此,switch连接pox完成。
pox上可以显示switch的key通过此key值就可以向switch发送msg---下发rule注:POX有两种版本,一种是经典的pox,另一种是pox-betta(有所改进)。
测试拓扑HOST1连接OF SWITCH 的port 1,HOST2连接OF SWITCH 的port 2测试案例1匹配源mac,ip,action为端口,两个host可以互相ping通Pox端下发两条rule,如下root@long-Aspire-4733Z:/home/long/usr/pox# ./pox.py openflow.of_01 --address=6.6.6.6 py POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.INFO:core:POX 0.1.0 (betta) is up.This program comes with ABSOLUTELY NO WARRANTY. This program is free software,and you are welcome to redistribute it under certain conditions.Type 'help(pox.license)' for details.Ready.POX>POX> from pox.lib.addresses import IPAddrPOX> from pox.lib.addresses import EthAddrPOX> import pox.openflow.libopenflow_01 as ofPOX> msg1=of.ofp_flow_mod()POX> msg1.priority=5POX> msg1.match.dl_src=EthAddr("00:00:00:00:00:02")POX> msg1.match.dl_type=0x800POX> msg1.match.nw_dst="10.1.1.1/32"POX> msg1.actions.append(of.ofp_action_output(port=1)) POX> core.openflow.connections[131********L].send(msg1) POX>POX>POX> msg2=of.ofp_flow_mod()POX> msg2.priority=5POX> msg2.match.dl_src=EthAddr("00:00:00:00:00:01") POX> msg2.match.dl_type=0x800POX> msg2.match.nw_dst="10.1.1.2/32"POX> msg2.actions.append(of.ofp_action_output(port=2)) POX> core.openflow.connections[131********L].send(msg2)OF SWITCH的rules:Switch(config)#sho openflow acl all*********************************wildcard:3154155priority:5in_port:0source mac:00-00-00-00-00-02dst mac:00-00-00-00-00-00eth type:0x800vlan id:0vlan cos:0source ip:0.0.0.0source ip mask:0.0.0.0dst ip:10.1.1.1dst ip mask:255.255.255.255ip protocol:0x00ip tos:0tcp/udp src port:0tcp/udp dst port:0output port:1*********************************wildcard:3154155priority:5in_port:0source mac:00-00-00-00-00-01dst mac:00-00-00-00-00-00eth type:0x800vlan id:0vlan cos:0source ip:0.0.0.0source ip mask:0.0.0.0dst ip:10.1.1.2dst ip mask:255.255.255.255ip protocol:0x00ip tos:0tcp/udp src port:0tcp/udp dst port:0output port:2测试案例2OpenFlow Switch TutorialThese are examinations of some different ways to write "switch" type applications in OpenFlow with POX.OpenFlow Switch Tutorial (of_sw_tutorial.py) - this is a simple OpenFlow module withvarious switch implementations. The following implementations are present:∙Dumb Hub - in this implementation, all packets are sent to the controller and then broadcast to all ports. No flows are installed.∙Pair Hub - Flows are installed for source and destination MAC address pairs that instruct packets to be broadcast.∙Lazy Hub - A single flow is installed to broadcast packet to all ports for any packet.∙Bad Switch - Here flows are installed only based on destination MAC addresses. Find out what the problem is!∙Pair Switch - Simple to a pair hub in that it installs flows based on source and destination MAC addresses but it forwards packets to the appropriate port instead of doing a broadcast.∙Ideal Pair Switch - Improvement of the above switch where both to source and to destination MAC address flows are installed. Why is this an improvement from the above switch?∙OpenFlow Switch Interactive Tutorial (of_sw_tutorial_oo.py) - this is the same module above that is Interactive. If run with a pox py command line. Users can dynamically load and unload various switch implementations. Note: To use the interactive features, you will also need to include the "py" component on your commandline.Sample Interactive Switch Sessionroot@long-Aspire-4733Z:/home/long/usr/pox# ./pox.py py --completion of_sw_tutorial_oo POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.INFO:core:POX 0.1.0 (betta) is up.This program comes with ABSOLUTELY NO WARRANTY. This program is free software, and you are welcome to redistribute it under certain conditions.Type 'help(pox.license)' for details.Ready.POX>POX> INFO:openflow.of_01:[00-03-0f-10-10-12 1] connectedPOX> MySwitch.attach_packetin_listener('SW_PAIRSWITCH')POX>◆POX所有要运行的外部组建均需拷贝到pox/ext/目录下,并且如示例运行py组建。
◆Packetin监听者SW_PAIRSWITCH收集packetin的信息,如果有两个host需要互相通信,将会在OF SWITCH上建立相应的rule。