All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.tid.pce.client.tester.VNTMActivity Maven / Gradle / Ivy

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