Class IcmpPacket

java.lang.Object
org.cloudbus.cloudsim.network.IcmpPacket
All Implemented Interfaces:
NetworkPacket<SimEntity>

public class IcmpPacket
extends java.lang.Object
implements NetworkPacket<SimEntity>
Represents a ping (ICMP protocol) packet that can be used to gather information from the network layer. An IcmpPacket traverses the network topology similar to a HostPacket, but it collects information like bandwidths, and Round Trip Time etc.

You can set all the parameters to an IcmpPacket that can be applied to a HostPacket. So if you want to find out the kind of information that a particular type of HostPacket is experiencing, set the size and network class of an IcmpPacket to the same as the HostPacket, and send it to the same destination from the same source.

Since:
CloudSim Toolkit 1.0
Author:
Gokul Poduval, Chen-Khong Tham, National University of Singapore
  • Constructor Summary

    Constructors 
    Constructor Description
    IcmpPacket​(java.lang.String name, int packetID, long size, SimEntity source, SimEntity destination, int netServiceLevel)
    Constructs a new ICMP packet.
  • Method Summary

    Modifier and Type Method Description
    void addBaudRate​(double baudRate)
    Register the baud rate of the output link where the current entity that holds the IcmpPacket will send it next.
    void addEntryTime​(double time)
    Register the time the packet arrives at an entity such as a Router or CloudResource.
    void addExitTime​(double time)
    Register the time the packet leaves an entity such as a Router or CloudResource.
    void addHop​(SimEntity entity)
    Add an entity where the IcmpPacket traverses.
    double getBaudRate()
    Gets the bottleneck bandwidth between the source and the destination.
    SimEntity getDestination()
    Gets the entity that the packet is going to.
    java.util.List<java.lang.Double> getDetailBaudRate()
    Gets a read-only list of all the bandwidths that this packet has traversed.
    java.util.List<java.lang.Double> getDetailEntryTimes()
    Gets a read-only list of all entry times that the packet has traversed.
    java.util.List<java.lang.Double> getDetailExitTimes()
    Gets a read-only list of all exit times from all entities that the packet has traversed.
    java.util.List<SimEntity> getHopsList()
    Gets a read-only list of all entities that this packet has traversed, that defines the hops it has made.
    int getId()
    Returns the ID of this packet
    SimEntity getLastHop()
    Gets the entity that was the last hop where this packet has traversed.
    int getNetServiceLevel()
    Gets the network service type of this packet
    int getNumberOfHops()
    Gets the number of hops that the packet has traversed.
    double getReceiveTime()
    Gets the time when the packet was received.
    double getSendTime()
    Gets the time when the packet was sent.
    long getSize()
    Gets the size of the packet in bytes.
    SimEntity getSource()
    Gets the entity that this packet is coming from (the sender).
    int getTag()
    Gets the packet direction that indicates if it is going or returning.
    double getTotalResponseTime()
    Gets the total time that the packet has spent in the network.
    void setDestination​(SimEntity destination)
    Sets the entity that the packet is going to (the receiver).
    void setLastHop​(SimEntity entity)
    Sets the entity that was the last hop where this packet has traversed.
    void setNetServiceLevel​(int netServiceLevel)
    Sets the network service type of this packet.
    void setReceiveTime​(double time)
    Sets the time when the packet was received.
    void setSendTime​(double time)
    Sets the time when the packet was sent.
    boolean setSize​(long size)
    Sets the size of the packet.
    void setSource​(SimEntity source)
    Sets the entity that this packet is coming from (the sender).
    boolean setTag​(int tag)
    Sets the packet direction that indicates if it is going or returning.
    java.lang.String toString()
    Returns a human-readable information of this packet.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • IcmpPacket

      public IcmpPacket​(java.lang.String name, int packetID, long size, SimEntity source, SimEntity destination, int netServiceLevel)
      Constructs a new ICMP packet.
      Parameters:
      name - Name of this packet
      packetID - the ID of this packet
      size - size of the packet
      source - the entity that sends out this packet
      destination - the entity to which this packet is destined
      netServiceLevel - the class of traffic this packet belongs to
  • Method Details

    • getId

      public int getId()
      Returns the ID of this packet
      Returns:
      packet ID
    • toString

      public java.lang.String toString()
      Returns a human-readable information of this packet.
      Overrides:
      toString in class java.lang.Object
      Returns:
      description of this packet
    • getSize

      public long getSize()
      Description copied from interface: NetworkPacket
      Gets the size of the packet in bytes.
      Specified by:
      getSize in interface NetworkPacket<SimEntity>
      Returns:
    • setSize

      public boolean setSize​(long size)
      Sets the size of the packet.
      Parameters:
      size - the size to set
      Returns:
      true if a positive value was given, false otherwise
    • getSource

      public SimEntity getSource()
      Description copied from interface: NetworkPacket
      Gets the entity that this packet is coming from (the sender).
      Specified by:
      getSource in interface NetworkPacket<SimEntity>
      Returns:
    • setSource

      public void setSource​(SimEntity source)
      Description copied from interface: NetworkPacket
      Sets the entity that this packet is coming from (the sender).
      Specified by:
      setSource in interface NetworkPacket<SimEntity>
      Parameters:
      source - the source ID to set
    • getDestination

      public SimEntity getDestination()
      Description copied from interface: NetworkPacket
      Gets the entity that the packet is going to.
      Specified by:
      getDestination in interface NetworkPacket<SimEntity>
      Returns:
    • setDestination

      public void setDestination​(SimEntity destination)
      Description copied from interface: NetworkPacket
      Sets the entity that the packet is going to (the receiver).
      Specified by:
      setDestination in interface NetworkPacket<SimEntity>
      Parameters:
      destination - the destination to set
    • getSendTime

      public double getSendTime()
      Description copied from interface: NetworkPacket
      Gets the time when the packet was sent.
      Specified by:
      getSendTime in interface NetworkPacket<SimEntity>
      Returns:
    • setSendTime

      public void setSendTime​(double time)
      Description copied from interface: NetworkPacket
      Sets the time when the packet was sent.
      Specified by:
      setSendTime in interface NetworkPacket<SimEntity>
      Parameters:
      time - the time to set
    • getReceiveTime

      public double getReceiveTime()
      Description copied from interface: NetworkPacket
      Gets the time when the packet was received.
      Specified by:
      getReceiveTime in interface NetworkPacket<SimEntity>
      Returns:
    • setReceiveTime

      public void setReceiveTime​(double time)
      Description copied from interface: NetworkPacket
      Sets the time when the packet was received.
      Specified by:
      setReceiveTime in interface NetworkPacket<SimEntity>
      Parameters:
      time - the time to set
    • getNumberOfHops

      public int getNumberOfHops()
      Gets the number of hops that the packet has traversed. Since the packet takes a round trip, the same router may have been traversed twice.
      Returns:
    • getTotalResponseTime

      public double getTotalResponseTime()
      Gets the total time that the packet has spent in the network. This is basically the Round-Trip Time (RTT). Dividing this by half should be the approximate latency. RTT is taken as the "final entry time" - "first exit time".
      Returns:
      total round-trip time
    • getBaudRate

      public double getBaudRate()
      Gets the bottleneck bandwidth between the source and the destination.
      Returns:
      the bottleneck bandwidth
    • addHop

      public void addHop​(SimEntity entity)
      Add an entity where the IcmpPacket traverses. This method should be called by network entities that count as hops, for instance Routers or CloudResources. It should not be called by links etc.
      Parameters:
      entity - the id of the hop that this IcmpPacket is traversing
    • addEntryTime

      public void addEntryTime​(double time)
      Register the time the packet arrives at an entity such as a Router or CloudResource. This method should be called by routers and other entities when the IcmpPacket reaches them along with the current simulation time.
      Parameters:
      time - current simulation time, use CloudSim.clock() to obtain this
    • addExitTime

      public void addExitTime​(double time)
      Register the time the packet leaves an entity such as a Router or CloudResource. This method should be called by routers and other entities when the IcmpPacket is leaving them. It should also supply the current simulation time.
      Parameters:
      time - current simulation time, use CloudSim.clock() to obtain this
    • addBaudRate

      public void addBaudRate​(double baudRate)
      Register the baud rate of the output link where the current entity that holds the IcmpPacket will send it next. Every entity that the IcmpPacket traverses should add the baud rate of the link on which this packet will be sent out next.
      Parameters:
      baudRate - the entity's baud rate in bits/s
    • getDetailBaudRate

      public java.util.List<java.lang.Double> getDetailBaudRate()
      Gets a read-only list of all the bandwidths that this packet has traversed.
      Returns:
    • getHopsList

      public java.util.List<SimEntity> getHopsList()
      Gets a read-only list of all entities that this packet has traversed, that defines the hops it has made.
      Returns:
    • getDetailEntryTimes

      public java.util.List<java.lang.Double> getDetailEntryTimes()
      Gets a read-only list of all entry times that the packet has traversed.
      Returns:
    • getDetailExitTimes

      public java.util.List<java.lang.Double> getDetailExitTimes()
      Gets a read-only list of all exit times from all entities that the packet has traversed.
      Returns:
    • getLastHop

      public SimEntity getLastHop()
      Gets the entity that was the last hop where this packet has traversed.
      Returns:
    • setLastHop

      public void setLastHop​(SimEntity entity)
      Sets the entity that was the last hop where this packet has traversed.
      Parameters:
      entity - the entity to set as the last hop
    • getNetServiceLevel

      public int getNetServiceLevel()
      Gets the network service type of this packet
      Returns:
      the network service type
    • setNetServiceLevel

      public void setNetServiceLevel​(int netServiceLevel)
      Sets the network service type of this packet.

      By default, the service type is 0 (zero). It is depends on the packet scheduler to determine the priority of this service level.

      Parameters:
      netServiceLevel - the service level to set
    • getTag

      public int getTag()
      Gets the packet direction that indicates if it is going or returning. The direction can be CloudSimTags.ICMP_PKT_SUBMIT or CloudSimTags.ICMP_PKT_RETURN.
      Returns:
    • setTag

      public boolean setTag​(int tag)
      Sets the packet direction that indicates if it is going or returning. The direction can be CloudSimTags.ICMP_PKT_SUBMIT or CloudSimTags.ICMP_PKT_RETURN.
      Parameters:
      tag - the direction to set
      Returns:
      true if the tag is valid, false otherwise