be.ac.ulg.montefiore.run.totem.domain.model.impl
Class BandwidthSharingBandwidthManagement

java.lang.Object
  extended by be.ac.ulg.montefiore.run.totem.domain.model.impl.BandwidthSharingBandwidthManagement
All Implemented Interfaces:
BandwidthManagement

public class BandwidthSharingBandwidthManagement
extends java.lang.Object
implements BandwidthManagement

This class manages link bandwidth. Lsps can be added or remove temporarily to see the effect on reservable bandwidth. Lsp can also be added or removed permanently, changing the reservation in the links.
It uses bandwidth sharing on links. Backup-to-backup and primary-to-backup bandwidth sharing.
This class can be used only on domain that uses only one class type.

Author:
Gaël Monfort (monfort@run.montefiore.ulg.ac.be)
See Also:
"A scalable and decentralized fast-rerouting scheme with efficient bandwidth sharing", S. Balon, L. Mélon and G. Leduc in Computer Networks, vol. 50, nb. 16, Nov. 2006, pp. 3043-3063

Creation date: 3/11/2006


Constructor Summary
BandwidthSharingBandwidthManagement(Domain domain)
          Create a new BandwidthSharingBandwidthManagement object to use with the given domain.
 
Method Summary
 void addLsp(Lsp lsp)
          Add lsp reservation.
 void addLspTemp(Lsp lsp)
          Adds a lsp temporarily.
 void cancelChanges()
          Cancel changes made by adding and removing lsp temporarily.
 float computeOversubscription()
           
 java.lang.String getDomainLabelUse()
           
 java.util.List<Lsp> getPreemptList(Lsp lsp)
          Returns an empty list.
 float getReservableBandwidth(int priority, Link link, java.util.Set<Link> protectedLinks)
          Returns the maximum reservable bandwidth at priority level priority for a lsp traversing the link link.
 void init()
          Initialise the Bandwidth Management object with the lsps already present in the domain.
 void printDomainLabelUse()
           
 void recomputeRbw(Link link)
          Recompute the reservable bandwidth (rbw array) of the link link.
Warning: all rbw values should be set to 0 before calling this method.
 void removeLsp(Lsp lsp)
          Removes lsp reservation.
 void removeLspTemp(Lsp lsp)
          Removes a lsp temporarily.
 boolean usePreemption()
          returns false.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BandwidthSharingBandwidthManagement

public BandwidthSharingBandwidthManagement(Domain domain)
                                    throws DiffServConfigurationException
Create a new BandwidthSharingBandwidthManagement object to use with the given domain.

Parameters:
domain -
Throws:
DiffServConfigurationException - if the domain contains more than on class type
Method Detail

init

public void init()
          throws LinkCapacityExceededException
Initialise the Bandwidth Management object with the lsps already present in the domain. This must be called prior to use.

Specified by:
init in interface BandwidthManagement
Throws:
LinkCapacityExceededException - if the calculated bandwidth exceed link capacity

getPreemptList

public java.util.List<Lsp> getPreemptList(Lsp lsp)
Returns an empty list. Preemption are not used.

Specified by:
getPreemptList in interface BandwidthManagement
Parameters:
lsp -
Returns:

addLsp

public void addLsp(Lsp lsp)
            throws DiffServConfigurationException,
                   LspNotFoundException,
                   LinkCapacityExceededException
Add lsp reservation. It adds some reservation to the links in the path of the lsp. Bandwidth sharing is used.

Specified by:
addLsp in interface BandwidthManagement
Parameters:
lsp -
Throws:
LinkCapacityExceededException
DiffServConfigurationException
LspNotFoundException - if the argument is a backup lsp and the primary lsp cannot be found in the domain

removeLsp

public void removeLsp(Lsp lsp)
               throws DiffServConfigurationException,
                      LspNotFoundException,
                      LinkCapacityExceededException
Removes lsp reservation. It removes some reservation to the links in the path of the lsp.

Specified by:
removeLsp in interface BandwidthManagement
Parameters:
lsp -
Throws:
DiffServConfigurationException
LspNotFoundException
LinkCapacityExceededException

removeLspTemp

public void removeLspTemp(Lsp lsp)
                   throws DiffServConfigurationException,
                          LspNotFoundException,
                          LinkCapacityExceededException
Removes a lsp temporarily. The result of this removing is seen when the #getReservableBandwidth(int, Link, java.util.Set) method is called. This can be undone by a call to cancelChanges() .

Specified by:
removeLspTemp in interface BandwidthManagement
Parameters:
lsp -
Throws:
LinkCapacityExceededException
DiffServConfigurationException
LspNotFoundException

addLspTemp

public void addLspTemp(Lsp lsp)
                throws DiffServConfigurationException,
                       LspNotFoundException,
                       LinkCapacityExceededException
Adds a lsp temporarily. The result of this adding is seen when the #getReservableBandwidth(int, Link, java.util.Set) method is called. This can be undone by a call to cancelChanges() .

Specified by:
addLspTemp in interface BandwidthManagement
Parameters:
lsp -
Throws:
LinkCapacityExceededException
DiffServConfigurationException
LspNotFoundException

cancelChanges

public void cancelChanges()
Cancel changes made by adding and removing lsp temporarily.

Specified by:
cancelChanges in interface BandwidthManagement

getReservableBandwidth

public float getReservableBandwidth(int priority,
                                    Link link,
                                    java.util.Set<Link> protectedLinks)
Returns the maximum reservable bandwidth at priority level priority for a lsp traversing the link link. If protectedLinks is given, the reservable bandwidth for a backup lsp protecting those links is returned, otherwise, a primary lsp is assumed.
This method takes the temporarily added and removed lsps into account.
The reservable bandwidth for a particular lsp on the link ij is computed as follow:

Specified by:
getReservableBandwidth in interface BandwidthManagement
Parameters:
priority -
link -
protectedLinks -
Returns:

usePreemption

public boolean usePreemption()
returns false. Bandwidth Sharing is not diffserv-aware and do not use preemption.

Specified by:
usePreemption in interface BandwidthManagement
Returns:

recomputeRbw

public void recomputeRbw(Link link)
                  throws LinkCapacityExceededException
Recompute the reservable bandwidth (rbw array) of the link link.
Warning: all rbw values should be set to 0 before calling this method.

Specified by:
recomputeRbw in interface BandwidthManagement
Parameters:
link -
Throws:
LinkCapacityExceededException

getDomainLabelUse

public java.lang.String getDomainLabelUse()

printDomainLabelUse

public void printDomainLabelUse()

computeOversubscription

public float computeOversubscription()


Copyright © 2004-2007 Research Unit in Networking, All Rights Reserved.