我们知道,在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. Floodlight之 FloodlightContextStore 数据结构

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

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

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

  3. Netty实战六之ChannelHandler和ChannelPipeline

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

  4. Netty--ChannelHandler和ChannelPipeline

    ChannelHandler 类图 ChannelHandler public interface ChannelHandler {void handlerAdded(ChannelHandlerCo ...

  5. java channel源码_Netty 4.0 源码分析(三):Channel和ChannelPipeline

    Client和server通过Channel连接,然后通过ByteBuf进行传输.每个Channel有自己的Pipeline,Pipeline上面可以添加和定义Handler和Event. Chann ...

  6. 45 张图深度解析 Netty 架构与原理

    作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,会点 SSH 写几个 MVC,访问数据库和缓存,这些只是初等 Java 程序员干的事.如果 ...

  7. java channelpipeline,Netty那点事(三)Channel与Pipeline

    Channel是理解和使用Netty的核心.Channel的涉及内容较多,这里我使用由浅入深的介绍方法.在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制.为了避免枯燥,借用一下& ...

  8. Netty核心组件 ChannelPipeline和ChannelHandler与ChannelHandler的入站出站规则

    概述 Netty中ChannelPipeline与Channel的对应关系是一一对应,也就是每个Channel中有且仅有一个ChannelPipeline,可以通过Channel获取唯一的Channe ...

  9. OpenStack(Rocky)配置sFlow+floodlight实现简单SDN

    还是需要实现流量监控然后入侵检测或者恶意流量分析之类的,如果真的流量分析的话需要好多知识,什么配置策略,还能用神经网络之类的.这我就试着用现成的工具防一下DDOS吧,防一下ping举个例子. 还是离不 ...

最新文章

  1. python 回文链表
  2. 根据ip获得国家,省,城市,运营商
  3. Transformer architecture的解释
  4. OpenGL超级宝典笔记——遮挡查询 [转]
  5. 管理本地多个SSH Key
  6. [蓝桥杯2016决赛]一步之遥-枚举
  7. 【数据库】SQL语句
  8. wxpython下载很慢_为什么WxPythons运动检测速度如此之慢?
  9. 大于号小于号_一年级数学上册20以内填大于号小于号专项练习1000题!【有电子版】...
  10. Mac上使用中文Beamer添加各种格式的图片
  11. NetCore Get Parameter
  12. EasyUI +MVC +EF实现增删改查
  13. 《了不起的NodeJS》书籍笔记一
  14. 1.26赛尔号服务器维护时间,赛尔号稀有精灵出现时间大全(完全版)
  15. javaScript系列 [06]-javaScript和this
  16. iOS 开发者都该认真思考的问题 (精华)
  17. 运维网络设备监控平台搭建,网管平台 智能化网 管解决方案,实现智能拓扑管理
  18. CSS filter 有哪些神奇用途
  19. oracle 大表统计分析,oracle表的分析统计
  20. FIFO原理及其应用

热门文章

  1. 开始学习jQuery和准备工作
  2. FFMPEG 视频图像解封装解码
  3. vue-cli3插件初体验
  4. zabbix自动发现(Discovery)功能使用
  5. python socket之udp说明
  6. 为什么启动hbase shell后,创建按create 'test', 'cf'失败?
  7. C/C++基本数据类型所占字节数
  8. COM 组件设计与应用(六)
  9. 深入浅出自定义标签(二)生成javascript
  10. .net开发是做什么的_软件开发是什么, 该怎么做?