zoukankan      html  css  js  c++  java
  • floodlight 学习(一)

    其实这个控制器应该没有多少人用了吧,一年多都没更新了,鉴于最近无论如何都要用这个,将学习笔记贴出来吧。

    1.FloodlightProvider(Dev)

    1.1简介:FloodlightProvider提供了两组重要的功能。它操纵控制器了交换机之间的链接并且把openflow消息转化为其它模块可以监听的事件。第二个功能是决定openflow消息分派给事件监听模块的顺序,据此事件处理模块可以让消息转发给下一个处理模块或者停止处理。

    1.2工作原理:FloodlightProvider使用Netty库操作线程和交换机连接。每个openflow消息都会被Netty线程处理,消息通过每个模块时,该模块包含的代码都会执行。其它的模块也可以注册监听指定的事件,例如:交换机连接、交换机连接关闭、端口状态通知等。FloodlightProvider还会把协议消息转化为基于java的消息,以便让其它模块处理,为了让模块注册监听openflow消息,模块必须实现IOPFMessageListener接口。

    补充:(netty线程,提供异步的、事件驱动的网络应用程序框架)

    1.3workerthreads:Netty可用的线程数量,类型int,默认值:0,参数设置为0时Netty使用的线程数量为当前可用cpu数量的二倍。

    1.4controllerid:控制器ID,类型:String,默认值:localhost。

    1.5role:控制器类型,类型:String,默认值:master,可以为master、slave、equal三种类型,如果是slave,那么控制器就不连接交换机,只做为冷备用使用。

    2.Controller模块

    控制器模块,此模块定义了好多内容,具体参见源码,我仅贴出一些我不懂的东西

    2.1 protected BlockingQueue<IUpdate> updates;   在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。

    IUpdate()接口的实现由3个类,SwitchUpdate ,HARoleUpdate,HAControllerNodeIPUpdate 

    OFChannelHandler类 处理交换机连接以及分发交换机的信息

     

    3.OFPacketIn of消息包

    4. 链路更新

    当交换机加入SDN环境后,控制器通过LLDP协议定时地获得该交换机与其他设备连接的link信息,然后添加或更新这些link(LinkDiscoveryManager.addOrUpdateLink()),最后将这些link更新的事件添加到updates队列中(LinkDiscoveryManager.handleLldp())。

    5.OFMessageDamper类 将OFMessages 下发到switch 

    6.google的ConcurrentLinkedHashmap源代码解析

    参见http://janeky.iteye.com/blog/1534352

  • 相关阅读:
    Android(一)
    git
    UBuntu18.04 配置环境
    TensorRT Development document (Python)
    继续
    tensorRT C++ API
    tensorRT 与yolov3_tiny
    浅谈PHP进程管理
    nginx 平滑重启的实现方法
    fast-cgi & php-fpm 等的理解 (讨论试理解)
  • 原文地址:https://www.cnblogs.com/tina-smile/p/3599393.html
Copyright © 2011-2022 走看看