SDN 实践之floodlight控制器统计流量种类.docx

上传人:b****1 文档编号:2440612 上传时间:2022-10-29 格式:DOCX 页数:16 大小:18.53KB
下载 相关 举报
SDN 实践之floodlight控制器统计流量种类.docx_第1页
第1页 / 共16页
SDN 实践之floodlight控制器统计流量种类.docx_第2页
第2页 / 共16页
SDN 实践之floodlight控制器统计流量种类.docx_第3页
第3页 / 共16页
SDN 实践之floodlight控制器统计流量种类.docx_第4页
第4页 / 共16页
SDN 实践之floodlight控制器统计流量种类.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

SDN 实践之floodlight控制器统计流量种类.docx

《SDN 实践之floodlight控制器统计流量种类.docx》由会员分享,可在线阅读,更多相关《SDN 实践之floodlight控制器统计流量种类.docx(16页珍藏版)》请在冰豆网上搜索。

SDN 实践之floodlight控制器统计流量种类.docx

SDN实践之floodlight控制器统计流量种类

SDN实践之floodlight控制器统计流量种类

@温州大学12网工

在floodlight控制器统计流量的基础上接着把packed-in流量的种类也区分一下。

counter这个类琢磨了一个月终于有些会用了。

下面贴代码:

分两个.java

1.

packageedu.wzu.steve.trafficanalyser;

importjava.util.ArrayList;

importjava.util.Collection;

importjava.util.HashMap;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Map;

importjava.util.Map.Entry;

importorg.restlet.resource.ResourceException;

importorg.restlet.resource.ServerResource;

importnet.floodlightcontroller.counter.CounterValue;

importnet.floodlightcontroller.counter.ICounter;

importnet.floodlightcontroller.packet.Ethernet;

importnet.floodlightcontroller.packet.IPv4;

importorg.restlet.resource.Get;

importnet.floodlightcontroller.core.FloodlightContext;

importnet.floodlightcontroller.core.IFloodlightProviderService;

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.counter.ICounterStoreService;

importorg.openflow.protocol.OFMessage;

importorg.openflow.protocol.OFType;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

publicclassTrafficAnalyserextendsServerResourceimplementsIOFMessageListener,IFloodlightModule{

publicfinalstaticStringBROADCAST="broadcast";

publicfinalstaticStringMULTICAST="multicast";

publicfinalstaticStringUNICAST="unicast";

protectedICounterStoreServicecounterStore;

protectedIFloodlightProviderServicefloodlightProvider;

protectedstaticLoggerlogger;

@Override

publicStringgetName(){

//TODOAuto-generatedmethodstub

returnTrafficAnalyser.class.getSimpleName();

}

@Override

publicbooleanisCallbackOrderingPrereq(OFTypetype,Stringname){

//TODOAuto-generatedmethodstub

returnfalse;

}

@Override

publicbooleanisCallbackOrderingPostreq(OFTypetype,Stringname){

//TODOAuto-generatedmethodstub

returnfalse;

}

@Override

publicCollection

extendsIFloodlightService>>getModuleServices(){

//TODOAuto-generatedmethodstub

returnnull;

}

@Override

publicMap

extendsIFloodlightService>,IFloodlightService>getServiceImpls(){

//TODOAuto-generatedmethodstub

returnnull;

}

@Override

publicCollection

extendsIFloodlightService>>getModuleDependencies(){

//TODOAuto-generatedmethodstub

Collection

extendsIFloodlightService>>l=

newArrayList

extendsIFloodlightService>>();

l.add(IFloodlightProviderService.class);

returnl;

}

@Override

publicvoidinit(FloodlightModuleContextcontext)

throwsFloodlightModuleException{

this.floodlightProvider=context.getServiceImpl(IFloodlightProviderService.class);

this.counterStore=context.getServiceImpl(ICounterStoreService.class);

logger=LoggerFactory.getLogger(TrafficAnalyser.class);

}

@Override

publicvoidstartUp(FloodlightModuleContextcontext){

floodlightProvider.addOFMessageListener(OFType.PACKET_IN,this);

}

@Get("json")

publicMapretrieve(){

Mapmodel=newHashMap();

CounterValuev;

Mapcounters=this.counterStore.getAll();

if(counters!

=null){

Iterator>it=

counters.entrySet().iterator();

while(it.hasNext()){

Entryentry=it.next();

StringcounterName=entry.getKey();

v=entry.getValue().getCounterValue();

if(CounterValue.CounterType.LONG==v.getType()){

model.put(counterName,v.getLong());

}elseif(v.getType()==CounterValue.CounterType.DOUBLE){

model.put(counterName,v.getDouble());

}

}

}

returnmodel;

}

protectedListPacketInType(IOFSwitchsw,OFMessagem,Etherneteth){

intl3type=eth.getEtherType()&0xffff;

StringswitchIdHex=sw.getStringId();

StringetherType=String.format("%04x",eth.getEtherType());

StringpacketName=m.getType().toClass().getName();

packetName=packetName.substring(packetName.lastIndexOf('.')+1);

//L2Type

Stringl2Type=null;

if(eth.isBroadcast()){

l2Type=BROADCAST;

}

elseif(eth.isMulticast()){

l2Type=MULTICAST;

}

else{

l2Type=UNICAST;

}

//UsealiasforL3type

//ValidEtherTypemustbegreaterthanorequalto0x0600

//ItisV1EthernetFrameifEtherType<0x0600

if(l3type<0x0600){

etherType="0599";

}

if(TypeAnalyser.l3TypeAliasMap!

=null&&

TypeAnalyser.l3TypeAliasMap.containsKey(etherType)){

etherType=TypeAnalyser.l3TypeAliasMap.get(etherType);

}

else{

etherType="L3_"+etherType;

}

/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1