示例#1
0
    def __init__(self, identity, left, right, rate, delay, size):
        Reporter.__init__(self, identity)
        self.left_node = left
        self.right_node = right

        # Need to standardize units to kbit/ms, kbits, and ms
        self.capacity_kbit_per_ms = float(
            rate)  # 1000 Kilobits in a Megabit, 1000 ms in a s
        self.ms_prop_delay = float(delay)  # Already standardized
        self.kbits_in_each_buffer = 8.0 * float(
            size
        )  # 8 = conversion from BYTE to BIT, ignore 1024 vs 1000 convention

        self.left_buff = LinkBuffer(self.kbits_in_each_buffer)
        self.right_buff = LinkBuffer(self.kbits_in_each_buffer)

        self.bidirectional_queueing_delay_memory = [
            -1
        ] * constants.QUEUEING_DELAY_WINDOW
示例#2
0
    def __init__(self, identifier, rate, delay, buffer_size, node1, node2):
        """
        A network link.

        Args:
            identifier (str):           The name of the link.
            rate (float):               The link capacity, in Mbps.
            delay (int):                Propagation delay, in ms.
            buffer_size (int):          The buffer size, in KB.
            node1 (Node):               The first endpoint of the link.
            node2 (Node):               The second endpoint of the link.
        """
        super(Link, self).__init__()

        self.id = identifier
        self.rate = rate
        self.delay = delay
        self.buffer_size = buffer_size * 1024
        self.node1 = node1
        self.node2 = node2

        self.node1.add_link(self)
        self.node2.add_link(self)

        # This determines whether the link is in use to handle half-duplex
        self.in_use = False
        self.current_dir = None

        # The buffer of packets going towards node 1 or node 2
        self.buffer = LinkBuffer(self)

        # Bytes sent over this link
        self.bytesSent = 0.0
        # Time it has taken so far to send these bytes
        self.sendTime = 0.0
        self.packets_on_link = {1: [], 2: []}