OpenFlow应用程序框架
zof的Python项目详细描述
zof是一个python框架,用于创建基于异步的应用程序来控制 使用openflow协议的网络。
支持的功能
- OpenFlow版本1.0-1.4(部分支持1.5)
- TLS连接
- 有限的数据包解析和生成:arp、lldp、ipv4、ipv6、udp、tcp、icmpv4、icmpv6
- 应用程序可以模拟交换机;支持OpenFlow协议的两边
要求
- python 3.5.1或更高版本
- oftr命令行工具
安装-Linux
# Install /usr/bin/oftr dependency. sudo add-apt-repository ppa:byllyfish/oftr sudo apt-get update sudo apt-get install oftr # Create virtual environment and install latest zof. python3.5 -m venv myenv source myenv/bin/activate pip install zof
oftr命令行工具也可以安装在Raspberry PI or using HomeBrew上。
演示
运行Layer2控制器演示:
python -m zof.demo.layer2
架构
zof使用单独的oftr进程终止openflow连接并将openflow消息转换为json。
架构:oftr进程将openflow转换为json。
您可以通过YAML字符串或Python字典构造OpenFlow消息传入的openflow消息是通用的python对象。特殊的openflow常量(如“no_buffer”)显示为字符串。
type:FLOW_MODmsg:command:ADDmatch:-field:IN_PORTvalue:1-field:ETH_DSTvalue:00:00:00:00:00:01instructions:-instruction:APPLY_ACTIONSactions:-action:OUTPUTport_no:2
zof的基本构建块是一个app。app与各种消息和事件处理程序关联。 使用zof.Application类创建应用程序对象。然后,使用应用程序的消息decorator关联处理程序。
importzofAPP=zof.Application('app_name_here')@APP.message('packet_in')defpacket_in(event):APP.logger.info('packet_in message %r',event)@APP.message(any)defother(event):APP.logger.info('other message %r',event)if__name__=='__main__':zof.run()
将上述文本放在名为demo.py的文件中,并使用python demo.py运行它。此应用程序使用packet-in函数处理openflow“packet-in”消息。所有其他消息将发送到other函数。这个应用程序什么也不做,只是记录事件。
要使用第2层演示编写demo.py程序,请执行以下操作:
python demo.py --x-modules=zof.demo.layer2