![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Floodlight解读
文章平均质量分 67
vonzhou
这个作者很懒,什么都没留下…
展开
-
Floodlight Controller 路由原理
SDN的出现可以使得各种复杂的路由协议从原本的Device OS中剥离出来,放在SDN Controller中,Controller用一种简单的协议来和所有的Router进行通信,就可以获得网络拓扑,从而计算路由,有更好的可扩展性(scalable,而不会出现Full-Mesh)。Floodlight 中路由的原理利用的是LLDP这个协议,当第一个OF SW连接过来的时候,Controller原创 2014-07-21 21:02:00 · 2974 阅读 · 0 评论 -
Floodlight controller 线程池模型
官方文档对于ThreadPool的描述是:ThreadPool is a Floodlight module wrapper for a Java's ScheduledExecutorService. It can be used to have threads be run at specific times or periodically. 所以只要对并发编程有点基础,就很容易理解,它原创 2014-07-22 09:50:14 · 1916 阅读 · 0 评论 -
Floodlight中 处理packetin消息的顺序(2)
前面通过阅读代码知道了如何判断各个模块处理某个消息的先后顺序,那么内部是如何实现的呢? 每当一个模块表示对一个消息感兴趣的时候,就会调用IFloodlightProviderService(具体有Controller类实现)的addOFMessageListener方法进行注册订阅,核心工作是由 ListenerDispatcher类来完成:1)每次增加一个观察者的时候都会判断其是否是原创 2014-06-25 16:57:20 · 1856 阅读 · 0 评论 -
LLDP报文格式
前面已经知道了Floodlight Controller是通过从SW发送LLDP帧来获得链路信息的,链路层发现协议(L2)是通过在本地网络中广播LLDP报文来通告自己的设备信息,从而服务于拓扑计算,(wikipedia:LLDP information is sent by devices from each of their interfaces at a fixed interval, i原创 2014-07-23 11:27:29 · 8715 阅读 · 0 评论 -
Floodlight之 FloodlightContextStore 数据结构
FloodlightContextStore 代表的是一种缓存模型(利用的是ConcurrentHashMap),里面存储的是上下文相关的对象,能够根据相应的key得到具体的 Object,存在的意义是Floodlight中注册监听某个事件的listener可以在被调用的时候直接从中取出上下文信息(context information)。下面是重要的代码片段.基本数据结构:pub原创 2014-06-23 19:04:37 · 1596 阅读 · 0 评论 -
Floodlight controller和OF SW交互流程图
原创 2014-06-24 15:53:37 · 1816 阅读 · 0 评论 -
Floodlight 处理交换机加入/移除过程
Floodlight 使用的是Netty架构,在Controller.java 入口函数中显示创建ServerBootstrap,设置套接字选项,ChannelPipeline,此时监听套接字就准备好处理来自SW的各种消息;这里最核心的就是 OpenflowPipelineFactory ,会加入各个业务相关的Handler,代码如下: public ChannelPipeline原创 2014-07-22 15:39:28 · 2542 阅读 · 0 评论 -
Floodlight 启动流程分析
1. 在Main中先是加载模块,启动REST服务,而后构建一个实现了IFloodlightProviderService接口的实例(即Controller)并运行;2. 接下来进入Controller的run()方法,此时所有的环境初始化工作已经完成,构建一个基于netty的TCP server,最重要的是流水线factory OpenflowPipelineFactory 的设置,里面是co原创 2014-06-23 10:52:48 · 2521 阅读 · 0 评论 -
Floodlight 中 ChannelPipeline 结构图
1. IdleStateHandler 当Channel上没有执行相应的读写操作一定时间的时候出发一个 IdleStateEvent 事件;2. ReadTimeoutHandler 读超时处理;3. HandshakeTimeoutHandler 设置一个定时器检查连接的状态,握手阶段 ;4 . OFChannelHandler 核心,处理所有的业务。原创 2014-06-23 21:00:22 · 1933 阅读 · 0 评论 -
Floodlight下发流表过程分析
转载请注明出处:当一个packet到达openflow交换机,会进行流表的匹配,如果没有找到相应的流表项,就会发送一个packet_in消息到达SDN controller端,控制器根据一定的路由算法决策后,会向该路径上的所有交换机下发流表(也就是发送FLOW_MOD消息,里面有对应的action)。这里要知道的是在SDN的环境下,控制器具有全局拓扑信息,每当有链路状态改变时就会跟原创 2014-06-18 20:34:28 · 8709 阅读 · 6 评论 -
Floodlight中 处理packetin消息的顺序(1)
当Controller和SW建立连接之后,就可以处理来自SW的各种OF msg。当接收到 packetin 消息之后,会将其分发给各个监听了这个OFMessage的listeners,所以如果我们要设计自己的控制器模块,只需要实现相应的接口方法,约定执行顺序即可。接口IListener 主要抽象了监听器模块的名字,执行顺序,接口IOFMessageListener则抽象了我们的Controller原创 2014-06-24 15:58:36 · 3548 阅读 · 0 评论 -
从PACKET_IN消息中得到packet data
在Floodlight模块中如果想得到packet in消息,就对相应的消息类型进行监听即可,然后在receive方法中就可以操纵这个上传上来的packet_in。 关键代码: Ethernet eth = IFloodlightProviderService.bcStore.get(cntx,原创 2014-06-16 10:58:25 · 6333 阅读 · 4 评论 -
Floodlight 中创建消息对象的方法
在 floodlight 中创建各种openflow message 和 action 等采用的是简单工厂方式,BasicFactory类(实现OFMessageFactory接口,)会根据消息的类型创建不同的对象,达到更好的封装效果;此外这里调用的是枚举类型的方法。下面是具体代码:----------工厂接口,还有OFActionFactory,约束需要具体工厂完成的事情原创 2014-07-01 09:53:51 · 1798 阅读 · 0 评论 -
OFMessageDecoder 分析
OFMessageDecoder 继承了抽象类 FrameDecoder。FrameDecoder 会将接收到的ChannelBuffers 转换成有意义的 frame 对象,在基于流的传输过程中,通常会发生分片和重组的情况,所以就需要一个解码器,根据特定协议的约束,将收到的包理解为相应的,易于应用逻辑层处理的对象。这里调用的是 BasicFactory 的 parseMe原创 2014-06-23 20:18:14 · 1378 阅读 · 0 评论