扩展OpenFlow协议:OpenvSwitch+Floodlight实现
需积分: 0 48 浏览量
更新于2024-06-30
收藏 443KB PDF 举报
"这篇文档介绍了如何扩展OpenFlow协议,特别是在OpenvSwitch+Floodlight的环境中。作者Baohua Yang在2012年12月15日更新了这个过程,主要内容是添加新的消息类型和行动,以实现自定义功能,如通过指定端口发送带有特定IP地址的网络包。文档分为两大部分:Floodlight的扩展和涉及的模块修改。"
OpenFlow协议是一种网络控制协议,允许网络管理员和软件定义网络(SDN)控制器对数据平面进行编程。在OpenvSwitch+Floodlight的架构中,OpenFlow协议扮演着关键角色,连接着物理交换机(ovs)和控制器(Floodlight)。
扩展OpenFlow协议首先需要定义新的消息类型。例如,文档中提到的`PacketRemote`消息,它允许控制器指示交换机将处理过的数据包从特定端口发送出去,并在发送前更改其IP地址。这个过程涉及到Floodlight控制器中的代码修改。
在Floodlight的扩展部分,关键的步骤是在`src/main/java/org/openflow/protocol/action/OFActionType.java`文件中声明新的消息类型。这是通过在`OFActionType`枚举中添加新的条目来完成的,每个条目对应一个特定的行动。为了确保与ovs的兼容性,新消息的ID必须与ovs中定义的一致。文档中提到了几个现有的行动类型,如`OUTPUT`(用于指定输出端口)、`SET_VLAN_ID`(设置VLAN ID)和`SET_VLAN_PCP`(设置VLAN优先级),并以此为例说明如何添加新的`ActionRemote`。
添加新的行动类型需要创建一个新的`OFAction`子类,例如`OFActionRemote`,并提供一个`Instantiable`实例化器,以便Floodlight在运行时能够创建这个新类型的实例。
此外,扩展OpenFlow协议还需要修改三个主要模块:控制器模块、ovs用户态模块和内核态的datapath模块。控制器模块负责处理新消息的逻辑,ovs用户态模块处理与控制器的通信,而内核态的datapath模块则实现实际的数据包转发规则。
扩展OpenFlow协议是一个涉及编码、协议解析和网络流量控制的复杂过程。在Floodlight这样的SDN控制器中,这通常需要深入理解协议规范,以及控制器和交换机之间的交互机制。通过这样的扩展,网络管理员和开发者可以实现更精细的网络控制,满足特定的业务需求或创新网络服务。
2023-05-24 上传
2014-05-30 上传
2021-09-13 上传
2018-12-19 上传
127 浏览量
2021-06-11 上传
十二.12
- 粉丝: 41
- 资源: 276
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍