
es.tid.pce.client.tester.VNTMActivity 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.net.Inet4Address;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Timer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cern.jet.random.Exponential;
import es.tid.emulator.node.transport.EmulatedPCCPCEPSession;
import es.tid.netManager.NetworkLSPManager;
import es.tid.pce.client.emulator.AutomaticTesterStatistics;
import es.tid.pce.pcep.PCEPProtocolViolationException;
import es.tid.pce.pcep.constructs.Path;
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.ExplicitRouteObject;
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.LigthPathManagement;
public class VNTMActivity implements Activity{
private EmulatedPCCPCEPSession VNTMSession;
private NetworkLSPManager networkLSPManager;
private AutomaticTesterStatistics stats;
private PCEPRequest request;
private PCEPResponse response;
private Logger log = LoggerFactory.getLogger("PCCClient");
private Exponential connectionTime;
private Timer planificationTimer;
private double TrafficHops=0;
private long NumWL=0;
static long id=1;
private int id_response_svec=1;
private LigthPathManagement ligthPathManagement;
public VNTMActivity (Exponential connectionTime,Timer planificationTimer, AutomaticTesterStatistics stats){
this.planificationTimer = planificationTimer;
this.connectionTime=connectionTime;
this.stats=stats;
}
public double getTrafficHops() {
return TrafficHops;
}
public void setTrafficHops(double trafficHops) {
TrafficHops = trafficHops;
}
@Override
public void run() {
if (response.getResponseList().isEmpty()){
log.error("ERROR in response");
//stats.addNoPathResponse();
System.exit(1);
return;
}
if (response.getResponseList().size()>1){
int j;
for (j=0; j eroSubObjList=ero.getEROSubobjectList();
//CREAR LISTA DE EROS
LinkedList eroList=new LinkedList();
LinkedList eroListIP = new LinkedList();
int numNewLinks = createEROList(eroSubObjList, eroList, eroListIP);
//Si hay camino multilayer
if (numNewLinks>0){
//stats.addMLResponse();
for (int i=0;i Utilizamos TE Link de la capa Virtual
else if (numNewLinks == 0){
log.info("Reserving LSP and sending capacity update");
float bw=((BandwidthRequested)(response.getResponseList().get(0).getBandwidth())).getBw();
long time1 = System.nanoTime();
if (networkLSPManager.setLSP_UpperLayer(eroSubObjList, bw, false)){
long time2= System.nanoTime();
double LSPTime = (time2-time1)/1000000;
stats.analyzeLSPTime(LSPTime);
stats.addIPResponse();
stats.addNumberActiveLSP();
stats.analyzeBlockingProbability(0);
stats.analyzeLambdaBlockingProbability(0);
stats.analyzeblockProbabilityWithoutStolenLambda(0);
RealiseCapacityTask realiseCapacity = new RealiseCapacityTask(networkLSPManager,eroSubObjList,null,false,null, bw, true);
long duration =Math.round(connectionTime.nextDouble());
log.info("LSP duration: "+duration);
planificationTimer.schedule(realiseCapacity,duration);
}
else {
stats.addStolenBWLSP();
stats.analyzeBlockingProbability(1);
}
}
}
id_response_svec++;
} else{
// Respuesta sin SVEC --> Individual //
if (response.getResponseList().get(0).getNoPath()!=null){
log.info("NO PATH");
stats.addNoPathResponse();
stats.analyzeBlockingProbability(1);
stats.analyzeblockProbabilityWithoutStolenLambda(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();
LinkedList eroListIP = new LinkedList();
eroListIP = null;
int numNewLinks = createEROList(eroSubObjList, eroList, eroListIP);
//Si hay camino multilayer
if (numNewLinks>0){
//stats.addMLResponse();
for (int i=0;i Utilizamos TE Link de la capa IP/MPLS
else if (numNewLinks == 0){
log.info("Reserving LSP and sending capacity update");
float bw=((BandwidthRequested)(response.getResponseList().get(0).getBandwidth())).getBw();
TrafficHops=(eroSubObjList.size()-1);
long time1 = System.nanoTime();
if (networkLSPManager.setLSP_UpperLayer(eroSubObjList, bw, false)){
long time2= System.nanoTime();
double LSPTime = (time2-time1)/1000000;
stats.analyzeLSPTime(LSPTime);
stats.addIPResponse();
stats.addNumberActiveLSP();
stats.analyzeBlockingProbability(0);
stats.analyzeLambdaBlockingProbability(0);
stats.analyzeblockProbabilityWithoutStolenLambda(0);
stats.addTrafficHops(TrafficHops);
RealiseCapacityTask realiseCapacity = new RealiseCapacityTask(networkLSPManager,eroSubObjList,null,false,null, bw, true);
long duration =Math.round(connectionTime.nextDouble());
log.info("LSP duration: "+duration);
planificationTimer.schedule(realiseCapacity,duration);
}
else {
stats.addStolenBWLSP();
stats.analyzeBlockingProbability(1);
}
}
}
}
}
private void sendLSP(DataOutputStream out,PCEPTELinkSuggestion telinksug) {
try {
out.write(telinksug.getBytes());
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public int createPathLSP(LinkedList eroSubObjList,LinkedList path){
boolean layerInfoFound=false;
int numNewLinks=0;
path=new LinkedList();
for (int i=0;i eroSubObjList,LinkedList eroList,
LinkedList eroListIP){
boolean layerInfoFound=false;
boolean caminoIP=false;
int numNewLinks=0;
LinkedList eroSubObjList2=null;
LinkedList eroSubObjList_IP=null;
for (int i=0;i 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
© 2015 - 2025 Weber Informatics LLC | Privacy Policy