
es.tid.pce.client.tester.singleClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of network-emulator Show documentation
Show all versions of network-emulator Show documentation
Emulator of GMPLS-controlled transport Network
The newest version!
package es.tid.pce.client.tester;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.Timer;
import java.util.concurrent.LinkedBlockingQueue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import es.tid.emulator.node.transport.EmulatedPCCPCEPSession;
import es.tid.netManager.NetworkLSPManager;
import es.tid.netManager.NetworkLSPManagerParameters;
import es.tid.netManager.OSPFSender;
import es.tid.netManager.TCPOSPFSender;
import es.tid.netManager.emulated.AdvancedEmulatedNetworkLSPManager;
import es.tid.netManager.emulated.CompletedEmulatedNetworkLSPManager;
import es.tid.netManager.emulated.DummyEmulatedNetworkLSPManager;
import es.tid.netManager.emulated.SimpleEmulatedNetworkLSPManager;
import es.tid.ospf.ospfv2.OSPFv2LinkStateUpdatePacket;
import es.tid.pce.client.multiLayer.RealiseMLCapacityTask;
import es.tid.pce.pcep.PCEPProtocolViolationException;
import es.tid.pce.pcep.constructs.Path;
import es.tid.pce.pcep.constructs.Request;
import es.tid.pce.pcep.messages.PCEPRequest;
import es.tid.pce.pcep.messages.PCEPResponse;
import es.tid.pce.pcep.messages.PCEPTELinkSuggestion;
import es.tid.pce.pcep.objects.BandwidthRequested;
import es.tid.pce.pcep.objects.EndPointsIPv4;
import es.tid.pce.pcep.objects.ExplicitRouteObject;
import es.tid.pce.pcep.objects.Metric;
import es.tid.pce.pcep.objects.ObjectParameters;
import es.tid.pce.pcep.objects.ObjectiveFunction;
import es.tid.pce.pcep.objects.RequestParameters;
import es.tid.pce.pcep.objects.Reservation;
import es.tid.pce.pcepsession.PCEPSessionsInformation;
import es.tid.rsvp.objects.subobjects.EROSubobject;
import es.tid.rsvp.objects.subobjects.IPv4prefixEROSubobject;
import es.tid.rsvp.objects.subobjects.SubObjectValues;
import es.tid.vntm.VNTMParameters;
public class singleClient {
private static Hashtable PCEsessionList;
private static Logger log=LoggerFactory.getLogger("PCCClient");
private static Logger log2=LoggerFactory.getLogger("PCEPParser");
private static Logger log3=LoggerFactory.getLogger("OSPFParser");
private static String networkEmulatorFile="NetworkEmulatorConfiguration.xml";
private static InformationRequest testerParams;
private static EmulatedPCCPCEPSession VNTMSession;
static long id=1234;
/*Variable used for counter how many requests there are*/
/**
* @param args
*/
public static void main(String[] args) {
/*If there are arguments, read the PCEServerPort and ipPCE*/
if (args.length < 1) {
log.info("Usage: ClientTester ");
return;
}
//Initialize loggers
// FileHandler fh;
// FileHandler fh2;
// FileHandler fh3;
// try {
// fh=new FileHandler("PCCClient.log");
// fh2=new FileHandler("PCEPClientParser.log");
// fh3=new FileHandler("OSPFParser.log");
// //fh.setFormatter(new SimpleFormatter());
// //fh2.setFormatter(new SimpleFormatter());
// log.addHandler(fh);
// log.setLevel(Level.ALL);
// log2.addHandler(fh2);
// log2.setLevel(Level.ALL);
// log3.setLevel(Level.ALL);
// log3.addHandler(fh3);
// } catch (Exception e1) {
// e1.printStackTrace();
// System.exit(1);
// }
long requestID=1234;
testerParams = new InformationRequest();
testerParams.readFile(args[0]);
PCEsessionList= new Hashtable();
for (int i =0;i sendingQueue=null;
NetworkLSPManagerParameters networkEmulatorParams= new NetworkLSPManagerParameters();
networkEmulatorParams.initialize(networkEmulatorFile);
NetworkLSPManager networkLSPManager=null;
if (networkEmulatorParams.isOSPF_RAW_SOCKET()){
OSPFSender ospfsender = new OSPFSender( networkEmulatorParams.getPCETEDBAddressList() , networkEmulatorParams.getAddress());
ospfsender.start();
sendingQueue=ospfsender.getSendingQueue();
}
else {
TCPOSPFSender TCPOSPFsender = new TCPOSPFSender(networkEmulatorParams.getPCETEDBAddressList(),networkEmulatorParams.getOSPF_TCP_PORTList());
TCPOSPFsender.start();
sendingQueue=TCPOSPFsender.getSendingQueue();
}
if (networkEmulatorParams.getNetworkLSPtype().equals("Simple")){
networkLSPManager = new SimpleEmulatedNetworkLSPManager(sendingQueue, networkEmulatorParams.getNetworkFile() );
} else if (networkEmulatorParams.getNetworkLSPtype().equals("Advanced")){
networkLSPManager= new AdvancedEmulatedNetworkLSPManager(sendingQueue, networkEmulatorParams.getNetworkFile() );
}
else if (networkEmulatorParams.getNetworkLSPtype().equals("Completed")){
networkLSPManager = new CompletedEmulatedNetworkLSPManager(sendingQueue, networkEmulatorParams.getNetworkFile(), null,networkEmulatorParams.isMultilayer() );
}
else if (networkEmulatorParams.getNetworkLSPtype().equals("dummy")){
networkLSPManager = new DummyEmulatedNetworkLSPManager();
}
return networkLSPManager;
}
/**
* Create the VNTM Session
* @param networkEmulatorParams
* @return
*/
static EmulatedPCCPCEPSession createVNTMSession(){
VNTMParameters VNTMParams = new VNTMParameters();
VNTMParams.initialize(testerParams.getVNTMFile());
EmulatedPCCPCEPSession PCEsessionVNTM = new EmulatedPCCPCEPSession(VNTMParams.getVNTMAddress(),VNTMParams.getVNTMPort(),false, new PCEPSessionsInformation());
PCEsessionVNTM.start();
return PCEsessionVNTM;
}
static int createEROList(LinkedList eroSubObjList,LinkedList eroList,ArrayList sourceList,ArrayList destinationList ){
boolean layerInfoFound=false;
int numNewLinks=0;
int counterArray=0;
sourceList = new ArrayList();
destinationList = new ArrayList();
//cREAR LISTA DE EROS
LinkedList eroSubObjList2=null;
String strPrev=null;
for (int i=0;i eroSubObjList=ero.getEROSubobjectList();
ArrayList sourceList = new ArrayList();
ArrayList destinationList = new ArrayList();
//CREAR LISTA DE EROS
LinkedList eroList=new LinkedList();
int numNewLinks = createEROList(eroSubObjList,eroList,sourceList,destinationList);
if (numNewLinks>0){
if (networkLSPManager.setMLLSP(eroSubObjList,request.getRequestList().getFirst().getRequestParameters().isBidirect(), null)){
Timer planificationTimer= new Timer();
RealiseCapacityTask realiseCapacity = new RealiseCapacityTask(networkLSPManager,eroSubObjList,null,request.getRequestList().getFirst().getRequestParameters().isBidirect(), null);
long duration =Math.round(testerParams.getMeanConectionTime());
log.info("LSP duration: "+duration);
planificationTimer.schedule(realiseCapacity,duration);
}
}
else{
if (networkLSPManager.setLSP(eroSubObjList,request.getRequestList().getFirst().getRequestParameters().isBidirect(), null)){
Timer planificationTimer= new Timer();
RealiseCapacityTask realiseCapacity = new RealiseCapacityTask(networkLSPManager,eroSubObjList,null,request.getRequestList().getFirst().getRequestParameters().isBidirect(), null);
long duration =Math.round(testerParams.getMeanConectionTime());
log.info("LSP duration: "+duration);
planificationTimer.schedule(realiseCapacity,duration);
}
}
}
}
}
static void handleResponse(PCEPRequest request,PCEPResponse response,EmulatedPCCPCEPSession VNTMSession ){
if (response.getResponseList().isEmpty()){
log.error("ERROR in response");
//stats.addNoPathResponse();
System.exit(1);
return;
}else {
if (response.getResponseList().get(0).getNoPath()!=null){
log.info("NO PATH");
// stats.addNoPathResponse();
// stats.analyzeBlockingProbability(1);
return;
}else {
Path path=response.getResponseList().get(0).getPath(0);
// stats.analyzeBlockingProbability(0);
ExplicitRouteObject ero=path.geteRO();
LinkedList eroSubObjList=ero.getEROSubobjectList();
//CREAR LISTA DE EROS
LinkedList eroList=new LinkedList();
int numNewLinks = createEROList(eroSubObjList,eroList);
//Si hay camino multilayer
if (numNewLinks>0){
// stats.addMLResponse();
for (int i=0;i eroSubObjList,LinkedList eroList){
boolean layerInfoFound=false;
int numNewLinks=0;
int counterArray=0;
// sourceList = new ArrayList();
// destinationList = new ArrayList();
//cREAR LISTA DE EROS
LinkedList eroSubObjList2=null;
String strPrev=null;
for (int i=0;i eroSubObjList,LinkedList path){
// boolean layerInfoFound=false;
// int numNewLinks=0;
// path=new LinkedList();
// for (int i=0;i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy