
es.tid.bgp.bgp4Peer.updateTEDB.UpdateProccesorThread Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of topology Show documentation
Show all versions of topology Show documentation
Traffic Engineering Database, BGP-LS peer, Topology Module
The newest version!
package es.tid.bgp.bgp4Peer.updateTEDB;
import es.tid.bgp.bgp4.messages.BGP4Update;
import es.tid.bgp.bgp4.update.fields.*;
import es.tid.bgp.bgp4.update.fields.pathAttributes.*;
import es.tid.bgp.bgp4.update.tlv.linkstate_attribute_tlvs.*;
import es.tid.bgp.bgp4.update.tlv.node_link_prefix_descriptor_subTLVs.*;
import es.tid.ospf.ospfv2.lsa.tlv.subtlv.*;
import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet;
import es.tid.tedb.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.concurrent.LinkedBlockingQueue;
/**
* This class process the update messages updating the TEDB.
*
* WARNING: it is suppose to be a SimpleTEDB!!! It is not finished yet.
* @author pac
*
*/
public class UpdateProccesorThread extends Thread {
/**
* Parameter to run the class if it is true
*/
private boolean running;
/**
* Queue which stores the BGP4 update messages to be read and process
*/
private LinkedBlockingQueue updateList;
/** LINK ATTRIBUTE TLVs */
MaximumLinkBandwidthLinkAttribTLV maximumLinkBandwidthTLV;
MaxReservableBandwidthLinkAttribTLV maxReservableBandwidthTLV;
UnreservedBandwidthLinkAttribTLV unreservedBandwidthTLV;
AdministrativeGroupLinkAttribTLV administrativeGroupTLV;
LinkProtectionTypeLinkAttribTLV linkProtectionTLV;
MetricLinkAttribTLV metricTLV;
IPv4RouterIDLocalNodeLinkAttribTLV iPv4RouterIDLocalNodeLATLV;
IPv4RouterIDRemoteNodeLinkAttribTLV iPv4RouterIDRemoteNodeLATLV;
DefaultTEMetricLinkAttribTLV TEMetricTLV;
TransceiverClassAndAppAttribTLV transceiverClassAndAppATLV;
MF_OTPAttribTLV mF_OTP_ATLV;
int linkDelay;
int linkDelayVar;
int minDelay;
int maxDelay;
int linkLoss;
int residualBw;
int availableBw;
int utilizedBw;
/** NODE ATTRIBUTE TLVs
* Ipv4 of local node link attribute TLV also used
*
* */
NodeFlagBitsNodeAttribTLV nodeFlagBitsTLV = new NodeFlagBitsNodeAttribTLV();
NodeNameNodeAttribTLV nodeNameTLV = new NodeNameNodeAttribTLV();
IS_IS_AreaIdentifierNodeAttribTLV areaIDTLV = new IS_IS_AreaIdentifierNodeAttribTLV();
SidLabelNodeAttribTLV sidTLV = new SidLabelNodeAttribTLV();
/**PREFIX ATTRIBUTE TLVs */
IGPFlagBitsPrefixAttribTLV igpFlagBitsTLV = new IGPFlagBitsPrefixAttribTLV();
RouteTagPrefixAttribTLV routeTagTLV = new RouteTagPrefixAttribTLV();
PrefixMetricPrefixAttribTLV prefixMetricTLV = new PrefixMetricPrefixAttribTLV();
OSPFForwardingAddressPrefixAttribTLV OSPFForwardingAddrTLV = new OSPFForwardingAddressPrefixAttribTLV();
private AvailableLabels availableLabels;
/**
* Logger
*/
private Logger log;
/**
* Topology database for interDomain Links which will be updated.
*/
private MultiDomainTEDB multiTedb;
/**
* Topology database for intradomain Links. It owns several domains and.
*/
private Hashtable intraTEDBs;
private LinkedList updateLinks;
private TE_Information te_info;
public UpdateProccesorThread(LinkedBlockingQueue updateList,
MultiDomainTEDB multiTedb ,Hashtable intraTEDBs ){
log=LoggerFactory.getLogger("BGP4Server");
running=true;
this.updateList=updateList;
this.multiTedb = multiTedb;
this.intraTEDBs=intraTEDBs;
this.availableLabels= new AvailableLabels();
this.updateLinks=new LinkedList();
}
/**
* Starts processing updates
*/
public void run(){
BGP4Update updateMsg;
while (running) {
try {
clearAttributes();
PathAttribute att_ls = null;
PathAttribute att_mpreach = null;
PathAttribute att = null;
updateMsg= updateList.take();
log.debug("Update Procesor Thread Reading the message: \n"+ updateMsg.toString());
//Andrea To be checked
String learntFrom = updateMsg.getLearntFrom();
log.debug("Received from "+learntFrom);
ArrayList pathAttributeList = updateMsg.getPathAttributes();
ArrayList pathAttributeListUtil = new ArrayList();
// buscamos los dos atributos que nos interesan...
for (int i=0;i nodeDescriptorsSubTLV;
//Dominios
Inet4Address localDomainID= null ;
Inet4Address remoteDomainID = null ;
Inet4Address areaID= null ;
Inet4Address bgplsID = null;
Inet4Address LocalNodeIGPId = null;
Inet4Address RemoteNodeIGPId = null;
//Local Node descriptors
if (linkNLRI.getLocalNodeDescriptors().getAutonomousSystemSubTLV()!=null){
localDomainID=linkNLRI.getLocalNodeDescriptors().getAutonomousSystemSubTLV().getAS_ID();
}
if (linkNLRI.getLocalNodeDescriptors().getAreaID()!=null) {
areaID=linkNLRI.getLocalNodeDescriptors().getAreaID().getAREA_ID();
}
if (linkNLRI.getLocalNodeDescriptors().getBGPLSIDSubTLV()!=null) {
bgplsID=linkNLRI.getLocalNodeDescriptors().getBGPLSIDSubTLV().getBGPLS_ID();
}
if (linkNLRI.getLocalNodeDescriptors().getIGPRouterID()!=null){
LocalNodeIGPId=linkNLRI.getLocalNodeDescriptors().getIGPRouterID().getIpv4AddressOSPF();
}
if (linkNLRI.getRemoteNodeDescriptorsTLV().getAutonomousSystemSubTLV()!=null) {
remoteDomainID=linkNLRI.getRemoteNodeDescriptorsTLV().getAutonomousSystemSubTLV().getAS_ID();
}
if (linkNLRI.getRemoteNodeDescriptorsTLV().getAreaID()!=null) {
areaID =linkNLRI.getRemoteNodeDescriptorsTLV().getAreaID().getAREA_ID();
}
if (linkNLRI.getRemoteNodeDescriptorsTLV().getBGPLSIDSubTLV()!=null) {
bgplsID=linkNLRI.getRemoteNodeDescriptorsTLV().getBGPLSIDSubTLV().getBGPLS_ID();
}
if (linkNLRI.getRemoteNodeDescriptorsTLV().getIGPRouterID()!=null) {
RemoteNodeIGPId = linkNLRI.getRemoteNodeDescriptorsTLV().getIGPRouterID().getIpv4AddressOSPF();
}
if(linkNLRI.getUndirectionalLinkDelayTLV()!=null){
linkDelay = linkNLRI.getUndirectionalLinkDelayTLV().getDelay();
}
if(linkNLRI.getUndirectionalDelayVariationTLV()!=null){
linkDelayVar = linkNLRI.getUndirectionalDelayVariationTLV().getDelayVar();
}
if(linkNLRI.getMinMaxUndirectionalLinkDelayTLV()!=null){
maxDelay = linkNLRI.getMinMaxUndirectionalLinkDelayTLV().getHighDelay();
minDelay = linkNLRI.getMinMaxUndirectionalLinkDelayTLV().getLowDelay();
}
if(linkNLRI.getUndirectionalLinkLossTLV()!=null){
linkLoss = linkNLRI.getUndirectionalLinkLossTLV().getLinkLoss();
}
if(linkNLRI.getUndirectionalResidualBwTLV()!=null){
residualBw = linkNLRI.getUndirectionalResidualBwTLV().getResidualBw();
}
if(linkNLRI.getUndirectionalAvailableBwTLV()!=null){
availableBw = linkNLRI.getUndirectionalAvailableBwTLV().getAvailableBw();
}
if(linkNLRI.getUndirectionalUtilizedBwTLV()!=null){
utilizedBw = linkNLRI.getUndirectionalUtilizedBwTLV().getUtilizedBw();
}
/**Creamos el grafo*/
//Let's see if our link is intradomain or interdomain...
//log.info("as_local "+localDomainID);
//log.info("as_remote "+remoteDomainID);
if(localDomainID.equals(remoteDomainID)){
log.debug("INTRADOMAIN...for domain"+localDomainID.getCanonicalHostName());
IntraDomainEdge intraEdge = new IntraDomainEdge();
if (linkNLRI.getLinkIdentifiersTLV() != null){
intraEdge.setSrc_if_id(linkNLRI.getLinkIdentifiersTLV().getLinkLocalIdentifier());
intraEdge.setDst_if_id(linkNLRI.getLinkIdentifiersTLV().getLinkRemoteIdentifier());
}
/*
Enumeration el2 = intraTEDBs.keys();
while (el2.hasMoreElements()) {
String key = (String) el2.nextElement();
log.info("Intra-after.....the key is: "+key);
}
*/
DomainTEDB domainTEDB=(DomainTEDB)intraTEDBs.get(localDomainID.getHostAddress());
SimpleTEDB simpleTEDBxx=null;
if (domainTEDB instanceof SimpleTEDB){
simpleTEDBxx = (SimpleTEDB) domainTEDB;
}else if (domainTEDB==null){
simpleTEDBxx = new SimpleTEDB();
simpleTEDBxx.createGraph();
simpleTEDBxx.setDomainID(localDomainID);
this.intraTEDBs.put(localDomainID.getHostAddress(), simpleTEDBxx);
}else {
log.error("PROBLEM: TEDB not compatible");
return;
}
/**Actualizando TED*/
if (!(simpleTEDBxx.getNetworkGraph().containsVertex(LocalNodeIGPId))){
//log.info("Not containing source vertex");
simpleTEDBxx.getNetworkGraph().addVertex(LocalNodeIGPId);//add vertex ya comprueba si existe el nodo en la ted-->se puede hacer mas limpio
simpleTEDBxx.notifyNewVertex(LocalNodeIGPId);
}
// else{
// log.info("Local Vertex: "+LocalNodeIGPId.toString() +" already present in TED...");
// }
if (!(simpleTEDBxx.getNetworkGraph().containsVertex(RemoteNodeIGPId))){
//log.info("Not containing dst vertex");
simpleTEDBxx.getNetworkGraph().addVertex(RemoteNodeIGPId);
simpleTEDBxx.notifyNewVertex(RemoteNodeIGPId);
}
// else {
// log.info("Remote Vertex: "+RemoteNodeIGPId.toString() +" already present in TED...");
// }
te_info = createTE_Info(simpleTEDBxx);
intraEdge.setTE_info(te_info);
intraEdge.setLearntFrom(learntFrom);
if (!(simpleTEDBxx.getNetworkGraph().containsEdge(LocalNodeIGPId, RemoteNodeIGPId))){
//log.info("Graph does not contain intra-edge");
log.debug("Adding information of local node to edge..." + simpleTEDBxx.getNodeTable().get(LocalNodeIGPId));
intraEdge.setLocal_Node_Info(simpleTEDBxx.getNodeTable().get(LocalNodeIGPId));
log.debug("Adding information of remote node to edge..." + simpleTEDBxx.getNodeTable().get(RemoteNodeIGPId));
intraEdge.setRemote_Node_Info(simpleTEDBxx.getNodeTable().get(RemoteNodeIGPId));
log.debug("Adding edge from origin vertex"+LocalNodeIGPId.toString()+ " to destination vertex" +RemoteNodeIGPId.toString());
simpleTEDBxx.getNetworkGraph().addEdge(LocalNodeIGPId, RemoteNodeIGPId, intraEdge);
simpleTEDBxx.notifyNewEdge(LocalNodeIGPId, RemoteNodeIGPId);
simpleTEDBxx.getNetworkGraph().getEdge(LocalNodeIGPId, RemoteNodeIGPId).setNumberFibers(1);
IntraDomainEdge edge=simpleTEDBxx.getNetworkGraph().getEdge(LocalNodeIGPId, RemoteNodeIGPId);
if(intraEdge.getTE_info().getAvailableLabels()!=null)
((BitmapLabelSet)edge.getTE_info().getAvailableLabels().getLabelSet()).initializeReservation(((BitmapLabelSet)intraEdge.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap());
}
else{
//log.info("Graph contains intra-edge");
IntraDomainEdge edge;
edge=simpleTEDBxx.getNetworkGraph().getEdge(LocalNodeIGPId, RemoteNodeIGPId);
if (this.availableLabels!=null){
if(((BitmapLabelSet)this.availableLabels.getLabelSet()).getDwdmWavelengthLabel()!=null){
((BitmapLabelSet)edge.getTE_info().getAvailableLabels().getLabelSet()).arraycopyBytesBitMap(((BitmapLabelSet)intraEdge.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap());
if (((BitmapLabelSet)intraEdge.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitmapReserved()!=null){
((BitmapLabelSet)edge.getTE_info().getAvailableLabels().getLabelSet()).arraycopyReservedBytesBitMap(((BitmapLabelSet)intraEdge.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitmapReserved());
}
}
}
}
/*
Enumeration el3 = intraTEDBs.keys();
while (el3.hasMoreElements()) {
String key = (String) el3.nextElement();
log.info("Intra-before.....the key is: "+key);
}
*/
}
else{
log.debug("INTERDOMAIN...");
InterDomainEdge interEdge = new InterDomainEdge();
if (linkNLRI.getLinkIdentifiersTLV() != null){
interEdge.setSrc_if_id(linkNLRI.getLinkIdentifiersTLV().getLinkLocalIdentifier());
interEdge.setDst_if_id(linkNLRI.getLinkIdentifiersTLV().getLinkRemoteIdentifier());
}
//terminamos de caracterizar el interedge...
interEdge.setSrc_router_id(LocalNodeIGPId);
interEdge.setDst_router_id(RemoteNodeIGPId);
interEdge.setDomain_dst_router(remoteDomainID);
interEdge.setDomain_src_router(localDomainID);
//check soyrce domain
DomainTEDB domain= (DomainTEDB)intraTEDBs.get(localDomainID.getHostAddress());
SimpleTEDB simpleTEDBs=null;
if (domain instanceof SimpleTEDB){
//log.info("is instance sssss");
simpleTEDBs = (SimpleTEDB) domain;
}else if (domain==null){
//log.info("nullssss");
simpleTEDBs = new SimpleTEDB();
simpleTEDBs.createGraph();
simpleTEDBs.setDomainID(localDomainID);
this.intraTEDBs.put(localDomainID.getHostAddress(), simpleTEDBs);
}
else {
log.error("PROBLEM: TEDB not compatible");
return;
}
//check soyrce domain
DomainTEDB domaind= (DomainTEDB)intraTEDBs.get(remoteDomainID.getHostAddress());
SimpleTEDB simpleTEDBd=null;
if (domaind instanceof SimpleTEDB){
//log.info("is instancedddddd");
simpleTEDBd = (SimpleTEDB) domaind;
}else if (domaind==null){
//log.info("nulldddd");
simpleTEDBd = new SimpleTEDB();
simpleTEDBd.createGraph();
simpleTEDBd.setDomainID(remoteDomainID);
this.intraTEDBs.put(remoteDomainID.getHostAddress(), simpleTEDBd);
}else {
log.error("PROBLEM: TEDB not compatible");
return;
}
/**Actualizando TED*/
//log.info("Updating Interdomain list...");
//FIXME: See what to do to create SSON Info
DomainTEDB simpleTEDB=new SimpleTEDB();
te_info = createTE_Info(simpleTEDB);
interEdge.setTE_info(te_info);
interEdge.setLearntFrom(learntFrom);
//FIXME: ADD I-D links to the Simple TEDBs
/**
if(simpleTEDB.getInterdomainLink(LocalNodeIGPId, RemoteNodeIGPId) == null){
simpleTEDB.getInterDomainLinks().add(interEdge);
InterDomainEdge edge = simpleTEDB.getInterdomainLink(LocalNodeIGPId, RemoteNodeIGPId);
((BitmapLabelSet)edge.getTE_info().getAvailableLabels().getLabelSet()).initializeReservation(((BitmapLabelSet)interEdge.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap());
}
*/
multiTedb.addInterdomainLink(localDomainID, LocalNodeIGPId, linkNLRI.getLinkIdentifiersTLV().getLinkLocalIdentifier(), remoteDomainID, RemoteNodeIGPId, linkNLRI.getLinkIdentifiersTLV().getLinkRemoteIdentifier(), te_info);
}
}
private TE_Information createTE_Info(DomainTEDB domainTEDB){
TE_Information te_info = new TE_Information();
if(linkDelay>0){
UndirectionalLinkDelayDescriptorSubTLV uSTLV = new UndirectionalLinkDelayDescriptorSubTLV();
uSTLV.setDelay(linkDelay);
te_info.setUndirLinkDelay(uSTLV);
}
if(linkDelayVar>0){
UndirectionalDelayVariationDescriptorSubTLV uSTLV = new UndirectionalDelayVariationDescriptorSubTLV();
uSTLV.setDelayVar(linkDelayVar);
te_info.setUndirDelayVar(uSTLV);
}
if(minDelay>0 && maxDelay>0){
MinMaxUndirectionalLinkDelayDescriptorSubTLV uSTLV = new MinMaxUndirectionalLinkDelayDescriptorSubTLV();
uSTLV.setHighDelay(maxDelay);
uSTLV.setLowDelay(minDelay);
te_info.setMinMaxUndirLinkDelay(uSTLV);
}
if(linkLoss>0){
UndirectionalLinkLossDescriptorSubTLV uSTLV = new UndirectionalLinkLossDescriptorSubTLV();
uSTLV.setLinkLoss(linkLoss);
te_info.setUndirLinkLoss(uSTLV);
}
if(residualBw>0){
UndirectionalResidualBandwidthDescriptorSubTLV uSTLV = new UndirectionalResidualBandwidthDescriptorSubTLV();
uSTLV.setResidualBw(residualBw);
te_info.setUndirResidualBw(uSTLV);
}
if(availableBw>0){
UndirectionalAvailableBandwidthDescriptorSubTLV uSTLV = new UndirectionalAvailableBandwidthDescriptorSubTLV();
uSTLV.setAvailableBw(availableBw);
te_info.setUndirAvailableBw(uSTLV);
}
if(utilizedBw>0){
UndirectionalUtilizedBandwidthDescriptorSubTLV uSTLV = new UndirectionalUtilizedBandwidthDescriptorSubTLV();
uSTLV.setUtilizedBw(utilizedBw);
te_info.setUndirUtilizedBw(uSTLV);
}
if (maximumLinkBandwidthTLV!=null){
MaximumBandwidth maximumBandwidth = new MaximumBandwidth();
maximumBandwidth.setMaximumBandwidth(maximumLinkBandwidthTLV.getMaximumBandwidth());
te_info.setMaximumBandwidth(maximumBandwidth);
}
if (maxReservableBandwidthTLV!=null){
MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth();
maximumReservableBandwidth.setMaximumReservableBandwidth(maxReservableBandwidthTLV.getMaximumReservableBandwidth());
te_info.setMaximumReservableBandwidth(maximumReservableBandwidth);
}
if (unreservedBandwidthTLV!=null){
UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth();
unreservedBandwidth.setUnreservedBandwidth(unreservedBandwidthTLV.getUnreservedBandwidth());
te_info.setUnreservedBandwidth(unreservedBandwidth);
}
if(iPv4RouterIDLocalNodeLATLV!=null){
IPv4RouterIDLocalNodeLinkAttribTLV iPv4RouterIDLocalNode = new IPv4RouterIDLocalNodeLinkAttribTLV();
iPv4RouterIDLocalNode.setIpv4Address(iPv4RouterIDLocalNodeLATLV.getIpv4Address());
te_info.setiPv4LocalNode(iPv4RouterIDLocalNode);
}
if(iPv4RouterIDRemoteNodeLATLV!=null){
IPv4RouterIDRemoteNodeLinkAttribTLV iPv4RouterIDRemoteNode = new IPv4RouterIDRemoteNodeLinkAttribTLV();
iPv4RouterIDRemoteNode.setIpv4Address(iPv4RouterIDRemoteNodeLATLV.getIpv4Address());
te_info.setiPv4RemoteNode(iPv4RouterIDRemoteNode);
}
if(metricTLV!=null){
MetricLinkAttribTLV metric = new MetricLinkAttribTLV();
metric.setMetric(metricTLV.getMetric());
te_info.setMetric(metric);
}
if(TEMetricTLV!=null){
TrafficEngineeringMetric teMetric = new TrafficEngineeringMetric();
teMetric.setLinkMetric((long)TEMetricTLV.getLinkMetric());
te_info.setTrafficEngineeringMetric(teMetric);
}
if(administrativeGroupTLV!=null){
AdministrativeGroup adminGroup = new AdministrativeGroup();
adminGroup.setAdministrativeGroup(administrativeGroupTLV.getAdministrativeGroup());
te_info.setAdministrativeGroup(adminGroup);
}
if(linkProtectionTLV!=null){
LinkProtectionTypeLinkAttribTLV linkProtection = new LinkProtectionTypeLinkAttribTLV();
linkProtection.setProtection_type(linkProtectionTLV.getProtection_type());
te_info.setLinkProtectionBGPLS(linkProtection);
}
if(this.mF_OTP_ATLV!=null){
MF_OTPAttribTLV mF_OTP_ATLV = this.mF_OTP_ATLV.duplicate();
te_info.setMfOTF(mF_OTP_ATLV);
}
if(this.transceiverClassAndAppATLV!=null){
TransceiverClassAndAppAttribTLV tap = new TransceiverClassAndAppAttribTLV();
tap.setTrans_class(transceiverClassAndAppATLV.getTrans_class());
tap.setTrans_app_code(transceiverClassAndAppATLV.getTrans_app_code());
te_info.setTrans(tap);
}
if (availableLabels!= null){
if(((BitmapLabelSet)this.availableLabels.getLabelSet()).getDwdmWavelengthLabel()!=null){
if(domainTEDB.getSSONinfo()==null){
log.debug("NEW SSON INFO");
SSONInformation ssonInfo = new SSONInformation();
ssonInfo.setCs(((BitmapLabelSet)this.availableLabels.getLabelSet()).getDwdmWavelengthLabel().getChannelSpacing());
ssonInfo.setGrid(((BitmapLabelSet)this.availableLabels.getLabelSet()).getDwdmWavelengthLabel().getGrid());
ssonInfo.setNumLambdas(((BitmapLabelSet)this.availableLabels.getLabelSet()).getNumLabels());
ssonInfo.setCommonAvailableLabels(this.availableLabels.dublicate());
ssonInfo.setnMin(0);
domainTEDB.setSSONinfo(ssonInfo);
}
if(domainTEDB.getWSONinfo()==null){
log.debug("NEW WSON INFO");
WSONInformation wsonInfo = new WSONInformation();
wsonInfo.setCs(((BitmapLabelSet)this.availableLabels.getLabelSet()).getDwdmWavelengthLabel().getChannelSpacing());
wsonInfo.setGrid(((BitmapLabelSet)this.availableLabels.getLabelSet()).getDwdmWavelengthLabel().getGrid());
wsonInfo.setNumLambdas(((BitmapLabelSet)this.availableLabels.getLabelSet()).getNumLabels());
wsonInfo.setCommonAvailableLabels(this.availableLabels.dublicate());
wsonInfo.setnMin(0);
domainTEDB.setWSONinfo(wsonInfo);
}
}
te_info.setAvailableLabels(availableLabels.dublicate());
}
return te_info;
}
private void fillITNodeInformation(ITNodeNLRI itNodeNLRI, String learntFrom){
/* try {
Thread.sleep(2000); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
*/ DomainTEDB domainTEDB= null;
domainTEDB=(DomainTEDB)intraTEDBs.get(itNodeNLRI.getNodeId());
SimpleTEDB simpleTEDB=null;
if (domainTEDB instanceof SimpleTEDB){
simpleTEDB = (SimpleTEDB) domainTEDB;
}else if (domainTEDB==null){
simpleTEDB = new SimpleTEDB();
simpleTEDB.createGraph();
try {
simpleTEDB.setDomainID((Inet4Address) InetAddress.getByName(itNodeNLRI.getNodeId()));
} catch (UnknownHostException e) {
e.printStackTrace();
}
this.intraTEDBs.put(itNodeNLRI.getNodeId(), simpleTEDB);
}
else {
log.error("PROBLEM: TEDB not compatible");
return;
}
log.info("Received IT info for domain "+itNodeNLRI.getNodeId()+" from peer "+learntFrom);
IT_Resources itResources = new IT_Resources();
itResources.setControllerIT(itNodeNLRI.getControllerIT());
itResources.setCpu(itNodeNLRI.getCpu());
itResources.setMem(itNodeNLRI.getMem());
itResources.setStorage(itNodeNLRI.getStorage());
itResources.setLearntFrom(learntFrom);
itResources.setITdomainID(itNodeNLRI.getNodeId());
simpleTEDB.setItResources(itResources);
}
private void fillNodeInformation(NodeNLRI nodeNLRI, String learntFrom){
Inet4Address as_number = null;
Inet4Address areaID= null ;
Inet4Address bgplsID = null;
int IGP_type = 0;
Inet4Address IGPID = null;
Node_Info node_info = new Node_Info();
Hashtable
© 2015 - 2025 Weber Informatics LLC | Privacy Policy