Interface Switch

    • Field Detail

      • NULL

        static final Switch NULL
        An attribute that implements the Null Object Design Pattern for Switch objects.
    • Method Detail

      • downlinkTransferDelay

        double downlinkTransferDelay​(HostPacket packet,
                                     int simultaneousPackets)
        Considering a list of packets to be sent simultaneously, computes the expected time to transfer each packet through the downlink, assuming that the bandwidth is shared equally between all packets.
        Parameters:
        simultaneousPackets - number of packets to be simultaneously sent
        Returns:
        the expected transmission time in seconds
      • uplinkTransferDelay

        double uplinkTransferDelay​(HostPacket packet,
                                   int simultaneousPackets)
        Considering a list of packets to be sent simultaneously, computes the expected time to transfer each packet through the uplink, assuming that the bandwidth is shared equally between all packets.
        Parameters:
        simultaneousPackets - number of packets to be simultaneously sent
        Returns:
        the expected transmission time in seconds
      • getUplinkBandwidth

        double getUplinkBandwidth()
        Gets the bandwidth this Switch has to communicate with Switches in the upper layer.
        Returns:
        Bandwidth of uplink (in Megabits/s).
        See Also:
        getUplinkSwitches()
      • setUplinkBandwidth

        void setUplinkBandwidth​(double uplinkBandwidth)
        Sets the bandwidth this Switch has to communicate with Switches in the upper layer.
        Parameters:
        uplinkBandwidth - uplink bandwidth to set (in Megabits/s).
        See Also:
        getUplinkSwitches()
      • getDownlinkBandwidth

        double getDownlinkBandwidth()
        Gets the bandwidth this Switch has to communicate with Switches in the lower layer.
        Returns:
        Bandwidth of downlink (in Megabits/s).
        See Also:
        getDownlinkSwitches()
      • setDownlinkBandwidth

        void setDownlinkBandwidth​(double downlinkBandwidth)
        Sets the bandwidth this Switch has to communicate with Switches in the lower layer.
        Parameters:
        downlinkBandwidth - downlink bandwidth to set (in Megabits/s).
        See Also:
        getDownlinkSwitches()
      • getPorts

        int getPorts()
        Gets the number of ports the switch has.
        Returns:
      • setPorts

        void setPorts​(int ports)
        Sets the number of ports the switch has.
        Parameters:
        ports - the number of ports to set
      • getSwitchingDelay

        double getSwitchingDelay()
        Gets the latency time the switch spends to process a received packet. This time is considered constant no matter how many packets the switch have to process (in seconds).
        Returns:
        the switching delay
      • setSwitchingDelay

        void setSwitchingDelay​(double switchingDelay)
        Sets the latency time the switch spends to process a received packet. This time is considered constant no matter how many packets the switch have to process (in seconds).
        Parameters:
        switchingDelay - the switching delay to set
      • getUplinkSwitches

        List<Switch> getUplinkSwitches()
        Gets the list of Switches in the upper layer that this Switch is connected to.
        Returns:
      • getPacketToHostMap

        Map<NetworkHost,​List<HostPacket>> getPacketToHostMap()
        Returns:
        a read-only map of hosts and the list of packets to be sent to each one.
      • getDownlinkSwitches

        List<Switch> getDownlinkSwitches()
        Gets the list of Switches in the lower layer that this Switch is connected to.
        Returns:
      • getDownlinkSwitchPacketList

        List<HostPacket> getDownlinkSwitchPacketList​(Switch downlinkSwitch)
        Gets the list of packets to be sent to a downlink switch.
        Parameters:
        downlinkSwitch - the id of the switch to get the list of packets to send
        Returns:
        the list of packets to be sent to the given switch.
      • getUplinkSwitchPacketList

        List<HostPacket> getUplinkSwitchPacketList​(Switch uplinkSwitch)
        Gets the list of packets to be sent to an uplink switch.
        Parameters:
        uplinkSwitch - the switch to get the list of packets to send
        Returns:
        the list of packets to be sent to the given switch.
      • getHostPacketList

        List<HostPacket> getHostPacketList​(NetworkHost host)
        Gets the list of packets to be sent to a host.
        Parameters:
        host - the host to get the list of packets to send
        Returns:
        the list of packets to be sent to the given host.
      • getUplinkSwitchPacketMap

        Map<Switch,​List<HostPacket>> getUplinkSwitchPacketMap()
        Returns:
        a read-only map of the uplink Switches and list of packets to be sent to each one.
      • addPacketToSendToDownlinkSwitch

        void addPacketToSendToDownlinkSwitch​(Switch downlinkSwitch,
                                             HostPacket packet)
        Adds a packet that will be sent to a downlink Switch.
        Parameters:
        downlinkSwitch - the target switch
        packet - the packet to be sent
      • addPacketToSendToUplinkSwitch

        void addPacketToSendToUplinkSwitch​(Switch uplinkSwitch,
                                           HostPacket packet)
        Adds a packet that will be sent to a uplink Switch.
        Parameters:
        uplinkSwitch - the target switch
        packet - the packet to be sent
      • addPacketToSendToHost

        void addPacketToSendToHost​(NetworkHost host,
                                   HostPacket packet)
        Adds a packet that will be sent to a NetworkHost.
        Parameters:
        host - the target NetworkHost
        packet - the packet to be sent
      • getDatacenter

        NetworkDatacenter getDatacenter()
        Gets the Datacenter where the switch is connected to.
        Returns:
      • setDatacenter

        void setDatacenter​(NetworkDatacenter datacenter)
        Sets the Datacenter where the switch is connected to.
        Parameters:
        datacenter - the Datacenter to set
      • getLevel

        int getLevel()
        Gets the level (layer) of the Switch in the network topology, depending if it is a root switch (layer 0), aggregate switch (layer 1) or edge switch (layer 2)
        Returns:
        the switch network level