Floodlight 在 ChannelPipeline 图】的更多相关文章

我们知道,在Netty架构,一个ServerBootstrap用于生成server端的Channel的时候都须要提供一个ChannelPipelineFactory类型的參数,用于服务于建立连接的Channel,流水线处理来自某个client的请求.所以这里的 OpenflowPipelineFactory 就是Floodlight 为建立连接的openflow交换机创建ChannelPipeline. 1. IdleStateHandler 当Channel上没有运行对应的读写操作一定时间的时…
Netty的ChannelPipeline和ChannelHandler机制类似于Servlet和Filter过滤器,这类拦截器实际上是职责链模式的一种变形,主要是为了方便事件的拦截和用户业务逻辑的定制.Netty的Channel过滤器实现原理与Servlet Filter机制一致,它将Channel的数据管道抽象为ChannelPipeline,消息在ChannelPipeline中流动和传递.ChannelPipeline持有I/O事件拦截器ChannelHandler的链表,由Channe…
     FloodlightContextStore 代表的是一种缓存模型(利用的是ConcurrentHashMap).里面存储的是上下文相关的对象,可以依据对应的key得到详细的 Object.存在的意义是Floodlight中注冊监听某个事件的listener可以在被调用的时候直接从中取出上下文信息(context information).以下是重要的代码片段. 基本数据结构: public class FloodlightContext {     protected Concurr…
     Floodlight 使用的是Netty架构,在Controller.java 入口函数中显示创建ServerBootstrap,设置套接字选项,ChannelPipeline,此时监听套接字就准备优点理来自SW的各种消息:这里最核心的就是 OpenflowPipelineFactory ,会增加各个业务相关的Handler,代码例如以下:  public ChannelPipeline getPipeline() throws Exception {         OFChanne…
ChannelPipeline ChannelPipeline不是单独存在,它肯定会和Channel.ChannelHandler.ChannelHandlerContext关联在一起,所以有关概念这里一起讲. 一.ChannelHandler 1.概念 先看图 ChannelHandler下主要是两个子接口 ChannelInboundHandler(入站): 处理输入数据和Channel状态类型改变. 适配器: ChannelInboundHandlerAdapter(适配器设计模式) 常用…
1.Channel的生命周期 Interface Channel定义了一组和ChannelInboundHandler API密切相关的简单但功能强大的状态模型,以下列出Channel的4个状态. ChannelUnregistered:Channel已经被创建,但还未注册到EventLoop ChannelRegistered:Channel已经被注册到了EventLoop ChannelActive:Channel处于活动状态(已经连接到它的远程节点).它现在可以接收和发送数据了 Chann…
一.概念 先来整体的介绍一下这篇博文要介绍的几个概念(Channel.ChannelHandler.ChannelPipeline.ChannelHandlerContext.ChannelPromise): Channel:Netty 中传入或传出数据的载体:ChannelHandler:Netty 中处理入站和出站数据的应用程序逻辑的容器:ChannelPipeline:ChannelHandler链 的容器:ChannelHandlerContext:代表了 ChannelHandler…
参考博客一 参考博客二 事先准备-floodlight安装 Java安装方法及环境变量配置 执行ifconfig命令获取floodlight所在服务器的IP地址. 1.启动floodlight java -jar target/floodlight.jar 浏览器中,输入floodlight ui界面地址:http://localhost:8080/ui/index.html 2.用python脚本通过mininet创建拓扑 切换到/home/mininet目录,请检查是否存在测试脚本fattr…
本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首先先分析一下ChannelHandler,ChannelHandler是我们日常开发中使用最多的组件了,大概我们平时写的最多的组件就是Handler了,继承图如下 我们平时继承的最多的就是ChannelInboundHandlerAdapter和ChannelOutboundHandlerAdapt…
本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首先先分析一下ChannelHandler,ChannelHandler是我们日常开发中使用最多的组件了,大概我们平时写的最多的组件就是Handler了,继承图如下 我们平时继承的最多的就是ChannelInboundHandlerAdapter和ChannelOutboundHandlerAdapt…