Floodlight 使用的是Netty架构,在Controller.java 入口函数中显示创建ServerBootstrap,设置套接字选项,ChannelPipeline,此时监听套接字就准备好处理来自SW的各种消息;这里最核心的就是 OpenflowPipelineFactory ,会加入各个业务相关的Handler,代码如下:
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(</