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

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

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