public class MulticastDemand extends NetworkElement
This class contains a representation of a multicast demand. Multicast demands are defined by its initial node, a set of different end nodes (all different from the initial node)and end node, the network layer they belong to, and their offered traffic. Multicast demand traffic is carried through multicast trees with the same end nodes.
In multilayer designs, a multicast demand in a lower layer can be coupled to a set of links in the upper layer: one link between the demand initial node, and each demand end node. Then, the demand carried traffic is equal to the upper layer link capacities (thus, upper link capacity and lower layer demand traffic must be measured in the same units).
Modifier and Type | Method and Description |
---|---|
Pair<SortedSet<MulticastTree>,Double> |
computeMinimumCostMulticastTrees(double[] costs)
Returns the multicast tree of this demand with lowest cost (and its cost), using the cost per link array provided.
|
void |
couple(Set<Link> links)
Couples this demand to the given
SortedSet of Links in the upper layer. |
SortedSet<Link> |
coupleToNewLinksCreated(NetworkLayer newLinkLayer)
Creates new links in the given layer, from the demand ingress node to each one of the demand egress nodes, and couples these newly created links to the multicast demand.
|
void |
decouple()
Decouples this mulicast demand from a set of upper layer
Links . |
double |
getBlockedTraffic()
Returns the blocked traffic of the demand (offered minus carried, or 0 if carried is above offered).
|
double |
getCarriedTraffic()
Returns the carried traffic of the demand, summing all the associated
Multicast Trees |
SortedSet<Link> |
getCoupledLinks()
Returns the
SortedSet of Links this demand is coupled to, or an empty SortedSet if this demand is not coupled. |
SortedSet<Node> |
getEgressNodes()
Returns the
SortedSet of demand egress Nodes . |
Node |
getIngressNode()
Returns the demand ingress Returns the demand ingress
Node |
NetworkLayer |
getLayer()
Returns the
NetworkLayer object this element belongs to |
SortedSet<Link> |
getLinksNoDownPropagationPotentiallyCarryingTraffic(Node egressNode)
Returns the set of links in this layer that could potentially carry traffic of this multicast demand,
when flowing from the origin node to the given egress node, according to the multicast trees defined.
|
double |
getMaximumAcceptableE2EWorstCaseLatencyInMs()
Returns the maximum e2e latency registered as acceptable for the demand (in ms)
|
TrafficSeries |
getMonitoredOrForecastedOfferedTraffic()
Returns the object contianing the monitored or forecasted time series information for the offered traffic
|
SortedSet<MulticastTree> |
getMulticastTrees()
Returns the
Multicast Trees associated to this demand. |
double |
getOfferedTraffic()
Returns the offered traffic of the demand, in traffic units.
|
double |
getOfferedTrafficPerPeriodGrowthFactor()
Return the growth factor of the offered traffic in subsequent periods.
|
String |
getQosType()
Return the QoS type of the demand
|
SortedMap<Link,Double> |
getTraversedLinksAndCarriedTraffic(boolean normalizedToOfferedTraffic)
Returns a map with an entry for each traversed link, and associated to it the demand's traffic carried in that link.
|
double |
getWorseCasePropagationTimeInMs()
Returns the worse case end-to-end propagation time of the demand traffic.
|
double |
getWorstCaseLengthInKm()
Returns the worst case end-to-end length in km of this demand traffic.
|
boolean |
isAllTreesReachingAllEgressNodes()
Returns true if all the multicast trees of the demand, reach all the multicast demand egress nodes
|
boolean |
isBifurcated()
Returns
true if more than one Multicast Tree is associated to the demand (trees with zero carried traffic, or that are
down also count). |
boolean |
isBlocked()
Returns
true if the carried traffic is strictly less than the offered traffic, up to the Net2Plan
precision factor. |
boolean |
isCoupled()
Returns
true if the demand is coupled. |
boolean |
isTraversingOversubscribedLinks()
Returns
true if the traffic of the demand is traversing an oversubscribed Link . |
void |
remove()
Removes this multicast demand, and any associated multicast trees.
|
void |
setMaximumAcceptableE2EWorstCaseLatencyInMs(double maxLatencyMs)
Sets the maximum latency in ms acceptable for the demand.
|
void |
setMonitoredOrForecastedOfferedTraffic(TrafficSeries newTimeSeries)
Sets the new time series for the monitored or forecasted offered traffic, eliminating any previous values
|
void |
setOfferedTraffic(double offeredTraffic)
Sets the offered traffic by a multicast demand.
|
void |
setOfferedTrafficPerPeriodGrowthFactor(double growthFactor)
Sets the growth factor of the offered traffic in subsequent periods.
|
void |
setQoSType(String newQosType)
Sets the QoS type of the demand.
|
String |
toString()
Returns a
String representation of the multicast demand. |
addTag, checkAttachedToNetPlanObject, checkAttachedToNetPlanObject, compareTo, equals, getAttribute, getAttribute, getAttributeAsDouble, getAttributeAsDoubleList, getAttributeAsDoubleMatrix, getAttributeAsDoubleMatrix, getAttributeAsStringList, getAttributeAsStringMatrix, getAttributes, getDescription, getId, getIndex, getName, getNetPlan, getNeType, getTags, hasTag, removeAllAttributes, removeAttribute, removeTag, setAttribute, setAttribute, setAttributeAsNumberList, setAttributeAsNumberMatrix, setAttributeAsNumberMatrix, setAttributeAsStringList, setAttributeAsStringMatrix, setAttributeMap, setDescription, setName, wasRemoved
public Pair<SortedSet<MulticastTree>,Double> computeMinimumCostMulticastTrees(double[] costs)
Returns the multicast tree of this demand with lowest cost (and its cost), using the cost per link array provided.
If more than one minimum cost tree exists, all of them are returned. If the cost vector provided is null
,
all links are assigned a cost of one.
costs
- Link weightsPair
where the first element is a SortedSet
of minimum cost trees, and the second element is the common minimum costpublic void couple(Set<Link> links)
Couples this demand to the given SortedSet
of Links
in the upper layer. The number of links equals to the number of egress nodes of the
demand. Links must start in the demand ingress node, and end in each of the multicast demand egress nodes.
Important: This demand and the links must not be already coupled.
links
- The set of links to couple topublic SortedSet<Link> coupleToNewLinksCreated(NetworkLayer newLinkLayer)
Creates new links in the given layer, from the demand ingress node to each one of the demand egress nodes, and couples these newly created links to the multicast demand.
newLinkLayer
- The layer where the new links will be createdpublic void decouple()
Decouples this mulicast demand from a set of upper layer Links
. If the demand is not coupled, an exception is thrown
public double getBlockedTraffic()
Returns the blocked traffic of the demand (offered minus carried, or 0 if carried is above offered).
public double getCarriedTraffic()
Returns the carried traffic of the demand, summing all the associated Multicast Trees
public SortedSet<Link> getCoupledLinks()
Returns the SortedSet
of Links
this demand is coupled to, or an empty SortedSet
if this demand is not coupled.
SortedSet
of links (a copy , any changes will not affect the coupling)public SortedSet<Node> getEgressNodes()
Returns the SortedSet
of demand egress Nodes
.
SortedSet
of demand egress nodes as an unmodifiable setpublic Node getIngressNode()
Returns the demand ingress Returns the demand ingress Node
public NetworkLayer getLayer()
Returns the NetworkLayer
object this element belongs to
NetworkLayer
public SortedSet<Link> getLinksNoDownPropagationPotentiallyCarryingTraffic(Node egressNode)
egressNode
- the egress nodepublic double getMaximumAcceptableE2EWorstCaseLatencyInMs()
public TrafficSeries getMonitoredOrForecastedOfferedTraffic()
public SortedSet<MulticastTree> getMulticastTrees()
Returns the Multicast Trees
associated to this demand.
SortedSet
of MulticastTree
as an unmodifable set (empty if no trees exist)public double getOfferedTraffic()
Returns the offered traffic of the demand, in traffic units.
public double getOfferedTrafficPerPeriodGrowthFactor()
public String getQosType()
public SortedMap<Link,Double> getTraversedLinksAndCarriedTraffic(boolean normalizedToOfferedTraffic)
normalizedToOfferedTraffic
- see abovepublic double getWorseCasePropagationTimeInMs()
Returns the worse case end-to-end propagation time of the demand traffic. This is the worse end-to-end propagation time
(summing the Link
latencies) for each of the paths from the origin Node
, to each output node,
among all the Multicast Trees
carrying traffic
of this demand. In multilayer designs, when the traffic of a multicast tree traverses a link that is coupled to a lower layer demand,
the link latency taken is the worse case propagation time of the underlying demand.
public double getWorstCaseLengthInKm()
Returns the worst case end-to-end length in km of this demand traffic. This is the worse end-to-end length in km for each of the paths from the origin node to each output node, among all the trees carrying traffic of this demand. In multilayer designs, when the traffic of a multicast tree traverses a link that is coupled to a lower layer demand, the link length taken is the worst case length of the underlying demand.
public boolean isAllTreesReachingAllEgressNodes()
public boolean isBifurcated()
Returns true
if more than one Multicast Tree
is associated to the demand (trees with zero carried traffic, or that are
down also count).
True
if traffic is bifurcated between two or more multicast trees (see above), or false
otherwisepublic boolean isBlocked()
Returns true
if the carried traffic is strictly less than the offered traffic, up to the Net2Plan
precision factor.
True
if the demand has blocked traffic, false
otherwiseConfiguration
public boolean isCoupled()
Returns true
if the demand is coupled.
true
if the demand is coupled, false
otherwisepublic boolean isTraversingOversubscribedLinks()
Returns true
if the traffic of the demand is traversing an oversubscribed Link
.
True
if the traffic of the demand is traversing an oversubscribed, false
otherwisepublic void remove()
Removes this multicast demand, and any associated multicast trees. If the demand is coupled, it is first decoupled.
public void setMaximumAcceptableE2EWorstCaseLatencyInMs(double maxLatencyMs)
maxLatencyMs
- see abovepublic void setMonitoredOrForecastedOfferedTraffic(TrafficSeries newTimeSeries)
newTimeSeries
- see abovepublic void setOfferedTraffic(double offeredTraffic)
Sets the offered traffic by a multicast demand. This does not change the carried traffic, which only depends on the associated multicast trees.
offeredTraffic
- Offered trafficpublic void setOfferedTrafficPerPeriodGrowthFactor(double growthFactor)
growthFactor
- see abovepublic void setQoSType(String newQosType)
newQosType
- see abovepublic String toString()
Returns a String
representation of the multicast demand.
toString
in class NetworkElement
String
representation of the multicast demandCopyright © 2018. All rights reserved.