コード例 #1
0
def do_test(n_data_packets, cc, add_events):
    """
    The test has 2 hosts connected by a link, and one flow.
    """
    em = EventManager(logging=False)
    host_1 = Host(em, 'H1', debug=False)
    host_2 = Host(em, 'H2', debug=False)
    sr = SeqNumberRecorder('S', host_2)
    l1_a = Link(em, 'L1_a', host_1, sr, DATA_PACKET_SIZE * 1000, 0.01,
                5 * DATA_PACKET_SIZE, debug=False)
    l1_b = Link(em, 'L1_b', host_2, host_1, DATA_PACKET_SIZE * 1000, 0.01,
                5 * DATA_PACKET_SIZE, debug=False)
    host_1.link = l1_a
    host_2.link = l1_b
    flow = Flow(em, 'F1', host_1, host_2, n_data_packets * DATA_PACKET_SIZE, 1,
                cc, debug=False)

    add_events(em, host_1, host_2, sr, l1_a, l1_b, flow)
    em.run()

    assert sr.seqs == set(range(n_data_packets + 1))
    # print('Src send first unacked', flow.src.send_first_unacked, 'Src send next', flow.src.send_next, 'Dst receive next', flow.dst.receive_next)
    assert flow.src.last_seq_number == n_data_packets
    assert flow.src.send_first_unacked == n_data_packets + 1
    assert flow.src.send_next == n_data_packets + 1
    assert flow.dst.receive_next == n_data_packets + 1
コード例 #2
0
    def on_reception(self, t, p):
        self.packets.append(p)
        self.next_component.on_reception(t, p)

em = EventManager(logging=False)
host_1 = Host(em, 'H1', debug=True)
p1 = PacketRecorder(host_1)
host_2 = Host(em, 'H2', debug=True)
p2 = PacketRecorder(host_2)
l1_a = Link(em, 'L1_a', host_1, p2, 10485760, 0.01, 524288, debug=False)
l1_b = Link(em, 'L1_b', host_2, p1, 10485760, 0.01, 524288, debug=False)
host_1.link = l1_a
host_2.link = l1_b
flow = Flow(em, 'F1', host_1, host_2, DATA_PACKET_SIZE, 1, StopAndWait(), debug=True)
em.run()

# Packets sent by host 1
p2_expect = [
    # SYN
    Packet('F11', flow, host_1, host_2, syn_flag = True, ack_flag = False,
           fin_flag = False, seq_number = 0, ack_number = None, size = CONTROL_PACKET_SIZE),
    # ACK of SYN
    Packet('F13', flow, host_1, host_2, syn_flag = False, ack_flag = True,
           fin_flag = False, seq_number = 1, ack_number = 1, size = CONTROL_PACKET_SIZE),
    # Data
    Packet('F14', flow, host_1, host_2, syn_flag = False, ack_flag = True,
           fin_flag = False, seq_number = 1, ack_number = 1, size = DATA_PACKET_SIZE),
]
print([str(p) for p in p2.packets])
print([str(p) for p in p2_expect])
コード例 #3
0
        self.i = i


em = EventManager(logging=False)
h1 = MockHost('H1')
h2 = MockHost('H2')
f = MockFlow('F')
# rate 1 pkt/sec, delay 10s
l = Link(em,
         'L',
         h1,
         h2,
         DATA_PACKET_SIZE,
         10,
         DATA_PACKET_SIZE * 10,
         debug=False)
l.on_packet_entry(
    0, Packet('P1', f, h1, h2, False, False, False, 1, 0, DATA_PACKET_SIZE))
l.on_packet_entry(
    0, Packet('P2', f, h1, h2, False, False, False, 2, 0, DATA_PACKET_SIZE))
l.on_packet_entry(
    0, Packet('P3', f, h1, h2, False, False, False, 3, 0, DATA_PACKET_SIZE))
l.on_packet_entry(
    0, Packet('P4', f, h1, h2, False, False, False, 4, 0, DATA_PACKET_SIZE))
l.on_packet_entry(
    0, Packet('P5', f, h1, h2, False, False, False, 5, 0, DATA_PACKET_SIZE))
# print(l.buffer)
# print(h2.packets, h2.times)
em.run(stop_when_flows_done=False)
assert h2.times == [11, 12, 13, 14, 15]