我们知道,在Netty架构,一个ServerBootstrap用于生成server端的Channel的时候都须要提供一个ChannelPipelineFactory类型的參数,用于服务于建立连接的Channel,流水线处理来自某个client的请求。所以这里的 OpenflowPipelineFactory
就是Floodlight 为建立连接的openflow交换机创建ChannelPipeline。





1. IdleStateHandler 当Channel上没有运行对应的读写操作一定时间的时候出发一个 IdleStateEvent 事件;
2. ReadTimeoutHandler 读超时处理;
3. HandshakeTimeoutHandler 设置一个定时器检查连接的状态,握手阶段 。
4 . OFChannelHandler 核心,处理全部的业务。

代码例如以下:
public class OpenflowPipelineFactory implements ChannelPipelineFactory
{

    protected Controller controller ;
    protected ThreadPoolExecutor pipelineExecutor ;
    protected Timer timer;
    protected IdleStateHandler idleHandler ;
    protected ReadTimeoutHandler readTimeoutHandler ;
   
    public OpenflowPipelineFactory(Controller
controller,
                                   ThreadPoolExecutor pipelineExecutor) {
        super ();
        this .controller =
controller;
        this .pipelineExecutor =
pipelineExecutor;
        this .timer = new HashedWheelTimer();
        this .idleHandler = new IdleStateHandler( timer,
20, 25, 0);
        this .readTimeoutHandler = new ReadTimeoutHandler(timer ,
30);
    }
 
    @Override
    public ChannelPipeline
getPipeline() throws Exception {
        OFChannelState state = new OFChannelState();
       
        ChannelPipeline pipeline = Channels. pipeline();
        pipeline.addLast( "ofmessagedecoder" , new OFMessageDecoder());
        pipeline.addLast( "ofmessageencoder" , new OFMessageEncoder());
        pipeline.addLast( "idle" , idleHandler );
        pipeline.addLast( "timeout" , readTimeoutHandler );
        pipeline.addLast( "handshaketimeout" ,
                         new HandshakeTimeoutHandler(state, timer ,
15));
        if (pipelineExecutor != null)
            pipeline.addLast( "pipelineExecutor" ,
                             new ExecutionHandler(pipelineExecutor ));
        //OFChannelHandler 是核心
        pipeline.addLast( "handler" , controller .getChannelHandler(state));
        return pipeline;
    }
}



版权声明:本文博客原创文章,博客,未经同意,不得转载。

Floodlight 在 ChannelPipeline 图的更多相关文章

  1. ChannelPipeline

    Netty的ChannelPipeline和ChannelHandler机制类似于Servlet和Filter过滤器,这类拦截器实际上是职责链模式的一种变形,主要是为了方便事件的拦截和用户业务逻辑的定 ...

  2. Floodlight之 FloodlightContextStore 数据结构

         FloodlightContextStore 代表的是一种缓存模型(利用的是ConcurrentHashMap).里面存储的是上下文相关的对象,可以依据对应的key得到详细的 Object. ...

  3. Floodlight 处理交换机增加/移除过程

         Floodlight 使用的是Netty架构,在Controller.java 入口函数中显示创建ServerBootstrap,设置套接字选项,ChannelPipeline,此时监听套接 ...

  4. 【Netty】(8)---理解ChannelPipeline

    ChannelPipeline ChannelPipeline不是单独存在,它肯定会和Channel.ChannelHandler.ChannelHandlerContext关联在一起,所以有关概念这 ...

  5. Netty实战六之ChannelHandler和ChannelPipeline

    1.Channel的生命周期 Interface Channel定义了一组和ChannelInboundHandler API密切相关的简单但功能强大的状态模型,以下列出Channel的4个状态. C ...

  6. Netty 系列四(ChannelHandler 和 ChannelPipeline).

    一.概念 先来整体的介绍一下这篇博文要介绍的几个概念(Channel.ChannelHandler.ChannelPipeline.ChannelHandlerContext.ChannelPromi ...

  7. mininet实验 连接floodlight控制器

    参考博客一 参考博客二 事先准备-floodlight安装 Java安装方法及环境变量配置 执行ifconfig命令获取floodlight所在服务器的IP地址. 1.启动floodlight jav ...

  8. Netty的ChannelHandler,ChannelHandlerContext,ChannelPipeline

    本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首 ...

  9. ChannelHandler,ChannelHandlerContext,ChannelPipeline

    本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首 ...

随机推荐

  1. HDU 3832 Earth Hour(最短路)

    题目地址:HDU 3832 这个题的这种方法我无法给出证明. 我当时这个灵感出来的时候是想的是要想覆盖的点最少,那就要尽量反复利用这些点,然后要有两个之间是通过还有一个点间接连接的,这样会充分利用那些 ...

  2. 一起写2048(160行python代码)

    前言: Life is short ,you need python. --Bruce Eckel 我与2048的缘,不是缘于一个玩家.而是一次,一次,重新的ACM比赛.四月份校赛初赛,第一次碰到20 ...

  3. css小技巧,如何制作一个箭头符号

    首先上图: 第一种方法大家可能想到了,就是用背景图片制作箭头符号,但是下面介绍的不是这种方法. 在介绍通过border制作箭头符号之前,先看下下面的css代码: <!DOCTYPE html&g ...

  4. Cloudera impala简单介绍及安装具体解释

    一.Impala简单介绍 Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL.除了像Hive使用同样的统一存储平台,Impala也使 ...

  5. how tomcat works 札记(两)----------一个简单的servlet集装箱

    app1 (看着眼前这章建议读者,看how tomcat works 札记(一个)----------一个简单的webserver http://blog.csdn.net/dlf123321/art ...

  6. JavaScript之一: 闭包、执行环境、作用域链

    这是大虾的第一篇博文,大虾试图用最直白的语言去描述出所理解的东西,大虾是菜鸟,水平有限,有误的地方希望路过的朋友们务必指正,谢谢大家了. 从读书时代一路走来,大虾在学习的时候逐渐喜欢上了去追寻根源,这 ...

  7. NSIS:应用软件自动升级功能的探索与实践

    原文 NSIS:应用软件自动升级功能的探索与实践 记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能 (详细http://www.flighty.cn/html/soft/20110106_1 ...

  8. Google I/O 2014? No,Android I/O 2014

    "你当然能够不相信理想,可是你也应该相信.有一些人相信理想"  google I/O今日公布了很多新品,罗列为: Android Wear,Android Auto.Android ...

  9. CentOS6.5查看一port执行状态

    netstat -nap | grep 22 版权声明:本文博主原创文章,博客,未经同意不得转载.

  10. 使用Team Foundation Server 2012源代码管理基本

    原文:使用Team Foundation Server 2012源代码管理基本 本篇体验Team Foundation Server 2012安装及源代码管理.   □ 安装 搜索"team ...