Floodlight开发者文档译文.docx
《Floodlight开发者文档译文.docx》由会员分享,可在线阅读,更多相关《Floodlight开发者文档译文.docx(103页珍藏版)》请在冰豆网上搜索。
Floodlight开发者文档译文
05:
18:
41.591INFO[n.f.c.m.FloodlightModuleLoader:
main]Loadingdefaultmodules
05:
18:
44.867INFO[n.f.c.i.Controller:
main]ControllerrolesettoMASTER
05:
18:
44.881INFO[n.f.c.i.Controller:
main]Flushswitchesonreconnect--Disabled
05:
18:
51.513INFO[n.f.l.i.LinkDiscoveryManager:
main]SettingautoportfastfeaturetoOFF
05:
18:
53.839INFO[o.s.s.i.c.FallbackCCProvider:
main]Clusternotyetconfigured;usingfallbacklocalconfiguration
05:
18:
53.840INFO[o.s.s.i.SyncManager:
main][32767]UpdatingsyncconfigurationClusterConfig[allNodes={32767=Node[hostname=localhost,port=6642,nodeId=32767,domainId=32767]},authScheme=CHALLENGE_RESPONSE,keyStorePath=/etc/floodlight/auth_credentials.jceks,keyStorePasswordisunset]
05:
18:
55.020INFO[o.s.s.i.r.RPCService:
main]ListeningforinternalfloodlightRPConlocalhost/127.0.0.1:
6642
05:
18:
56.332INFO[n.f.c.i.Controller:
main]Listeningforswitchconnectionson0.0.0.0/0.0.0.0:
6633
05:
19:
03.787INFO[n.f.j.JythonServer:
debugserver-main]StartingDebugServeron:
6655
package.floodlightcontroller.mactracker;
importjava.util.Collection;
importjava.util.Map;
importorg.openflow.protocol.OFMessage;
importorg.openflow.protocol.OFType;
importnet.floodlightcontroller.core.FloodlightContext;
importnet.floodlightcontroller.core.IOFMessageListener;
importnet.floodlightcontroller.core.IOFSwitch;
importnet.floodlightcontroller.core.module.FloodlightModuleContext;
importnet.floodlightcontroller.core.module.FloodlightModuleException;
importnet.floodlightcontroller.core.module.IFloodlightModule;
importnet.floodlightcontroller.core.module.IFloodlightService;
importnet.floodlightcontroller.core.IFloodlightProviderService;
importjava.util.ArrayList;
importjava.util.concurrent.ConcurrentSkipListSet;
importjava.util.Set;
importnet.floodlightcontroller.packet.Ethernet;
importorg.openflow.util.HexString;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
publicclassMACTrackerimplementsIOFMessageListener,IFloodlightModule{
protectedIFloodlightProviderServicefloodlightProvider;
protectedSetmacAddresses;
protectedstaticLoggerlogger;
@Override
publicStringgetName(){
//TODOAuto-generatedmethodstub
returnMACTracker.class.getSimpleName();
}
@Override
publicbooleanisCallbackOrderingPrereq(OFTypetype,Stringname){
//TODOAuto-generatedmethodstub
returnfalse;
}
@Override
publicbooleanisCallbackOrderingPostreq(OFTypetype,Stringname){
//TODOAuto-generatedmethodstub
returnfalse;
}
@Override
publicCollectionextendsIFloodlightService>>getModuleServices(){
//TODOAuto-generatedmethodstub
returnnull;
}
@Override
publicMapextendsIFloodlightService>,IFloodlightService>getServiceImpls(){
//TODOAuto-generatedmethodstub
returnnull;
}
@Override
publicCollectionextendsIFloodlightService>>getModuleDependencies(){
CollectionextendsIFloodlightService>>l=
newArrayListextendsIFloodlightService>>();
l.add(IFloodlightProviderService.class);
returnl;
}
@Override
publicvoidinit(FloodlightModuleContextcontext)
throwsFloodlightModuleException{
//TODOAuto-generatedmethodstub
floodlightProvider=context.getServiceImpl(IFloodlightProviderService.class);
macAddresses=newConcurrentSkipListSet();
logger=LoggerFactory.getLogger(MACTracker.class);
}
@Override
publicvoidstartUp(FloodlightModuleContextcontext)
throwsFloodlightModuleException{
//TODOAuto-generatedmethodstub
floodlightProvider.addOFMessageListener(OFType.PACKET_IN,this);
}
@Override
publicnet.floodlightcontroller.core.IListener.Commandreceive(
IOFSwitchsw,OFMessagemsg,FloodlightContextcntx){
//TODOAuto-generatedmethodstub
Etherneteth=
IFloodlightProviderService.bcStore.get(cntx,
IFloodlightProviderService.CONTEXT_PI_PAYLOAD);
LongsourceMACHash=Ethernet.toLong(eth.getSourceMACAddress());
if(!
macAddresses.contains(sourceMACHash)){
macAddresses.add(sourceMACHash);
logger.info("MACAddress:
{}seenonswitch:
{}",
HexString.toHexString(sourceMACHash),
sw.getId());
}
returnCommand.CONTINUE;
}
}
架构
Floodlight不仅仅是一个支持OpenFLow协议的控制器(FloodlightCOntroller),也是一个基于Floodlight控制器的应用集。
当用户在OpenFLow网络上运行各种应用程序的时候,Floodlight控制器实现了对OpenFLow网络的监控和查询功能。
图0.0显示了Floodlight不同模块之间的关系,这些应用程序构建成java模块,和Floodlight一起编译。
同时这些应用程序都是基于RESTAPI的。
开始
安装指导
概述
基于Java的Floodlight可以用标准jak工具或ant编译运行,当然也可以有选择性的在Eclipse上运行。
准备工作
Linux:
●Ubuntu10.04(Natty)及以上版本(运行Ant1.8.1及以下版本)
●安装JDK,Ant。
(可在eclipse上安装)
$sudoapt-getinstallbuild-essentialdefaultantpython-deveclipse
Mac
●Mac系统x10.6及以上版本(低版本未测试)
●Cxode4.1或Xcode4.0.2
●JDK:
只需要在终端输入命令:
‘javac’便可安装
●Eclipse(非必须)
下载编译
从Github下载并比编译Floodlight
$gitclonegit:
//
$cdfloodlight
$ant
运行Flo