示例#1
0
        else:
            pkt = (Ether(src='ff:22:33:44:55:66', dst='77:88:99:aa:bb:cc') /
                   IP(src=src_ip_addr, dst=dst_ip_addr) / TCP() / payload_data)
            pkt.time = i * (1e-8)
            pkt.tuser_sport = no_port
            pkts_tcp.append(pkt)

pkts_udp = []
#A simple UDP/IP packet embedded in an Ethernet II frame
for i in range(int(no_pkt)):
    if (args.align == '1'):
        if (args.vlan):
            pkt = (align_byte /
                   Ether(src='ff:22:33:44:55:66', dst='77:88:99:aa:bb:cc') /
                   tag_val / IP(src=src_ip_addr, dst=dst_ip_addr) /
                   UDP(sport=ip_sport_no, dport=ip_dport_no) / payload_data)
            pkt.time = i * (1e-8)
            pkt.tuser_sport = no_port
            pkts_udp.append(pkt)
        else:
            pkt = (align_byte /
                   Ether(src='ff:22:33:44:55:66', dst='77:88:99:aa:bb:cc') /
                   IP(src=src_ip_addr, dst=dst_ip_addr) /
                   UDP(sport=ip_sport_no, dport=ip_dport_no) / payload_data)
            pkt.time = i * (1e-8)
            pkt.tuser_sport = no_port
            pkts_udp.append(pkt)
    else:
        if (args.vlan):
            pkt = (Ether(src='ff:22:33:44:55:66', dst='77:88:99:aa:bb:cc') /
                   tag_val / IP(src=src_ip_addr, dst=dst_ip_addr) /
示例#2
0
                                   '00').decode("hex")

        if five_sell_price >= 1000:
            five_sell_price_pkt = (five_sell_price_str + '00').decode("hex")
        elif five_sell_price < 1000 and five_sell_price >= 100:
            five_sell_price_pkt = ('0' + five_sell_price_str +
                                   '00').decode("hex")
        elif five_sell_price < 100 and five_sell_price >= 10:
            five_sell_price_pkt = ('00' + five_sell_price_str +
                                   '00').decode("hex")
        elif five_sell_price < 10:
            five_sell_price_pkt = ('000' + five_sell_price_str +
                                   '00').decode("hex")
        pkt = (Ether(src=src_mac_addr, dst=dst_mac_addr) /
               IP(src=src_ip_addr, dst=dst_ip_addr) /
               UDP(sport=ip_sport_no, dport=ip_dport_no) /
               format_six_esc_code_string / payload_len_str /
               format_six_type_string / format_six_string /
               format_six_version_string / format_six_seq_num_string /
               format_six_stock_id / format_six_transction_time_final_string /
               for_mat_six_ob / for_mat_six_ud_string /
               for_mat_six_state_string / for_mat_six_Qty_pkt /
               one_buy_price_pkt / one_buy_Qty_pkt / two_buy_price_pkt /
               two_buy_Qty_pkt / three_buy_price_pkt / three_buy_Qty_pkt /
               four_buy_price_pkt / four_buy_Qty_pkt / five_buy_price_pkt /
               five_buy_Qty_pkt / one_sell_price_pkt / one_sell_Qty_pkt /
               two_sell_price_pkt / two_sell_Qty_pkt / three_sell_price_pkt /
               three_sell_Qty_pkt / four_sell_price_pkt / four_sell_Qty_pkt /
               five_sell_price_pkt / five_sell_Qty_pkt / checksum /
               terminalcode)
        pkt.time = pkt_timestamp
    def start(self, args: dict) -> None:

        # create packets
        pkt1 = (Ether(dst=DEST_MAC) / IP(src="16.0.0.1", dst="48.0.0.1") /
                UDP(dport=12, sport=1025) / ("*" * 1500))
        pkt2 = (Ether(dst=DEST_MAC) / IP(src="16.0.0.2", dst="48.0.0.2") /
                UDP(dport=12, sport=1025) / ("*" * 1500))
        pkt3 = (Ether(dst=DEST_MAC) / IP(src="16.0.0.3", dst="48.0.0.3") /
                UDP(dport=12, sport=1025) / ("*" * 1500))

        # stream list
        streams = []

        # Create a traffic stream
        # assume s1 is a delay critical stream with QoS
        s1 = STLStream(
            packet=STLPktBuilder(pkt=pkt1),
            mode=STLTXCont(percentage=1),
            flow_stats=STLFlowLatencyStats(pg_id=1),
        )
        # assume s2 is a delay critical stream without QoS
        s2 = STLStream(
            packet=STLPktBuilder(pkt=pkt2),
            mode=STLTXCont(percentage=1),
            flow_stats=STLFlowLatencyStats(pg_id=2),
        )
        # assume s3 is a lower priority stream
        s3 = STLStream(
            packet=STLPktBuilder(pkt=pkt3),
            mode=STLTXCont(percentage=98),
            flow_stats=STLFlowLatencyStats(pg_id=3),
        )

        # prepare ports
        self.client.reset(ports=[0, 1])

        # add sterams
        streams.append(s1)
        streams.append(s2)
        streams.append(s3)
        self.client.add_streams(streams, ports=[0])

        logging.info(
            "Starting traffic, duration: %d sec",
            args.duration,
        )

        # Start sending traffic
        self.client.start(SENDER_PORT, mult="100%", duration=args.duration)
        pgids = self.client.get_active_pgids()

        logging.info("Waiting until all traffic stop")
        self.client.wait_on_traffic(ports=SENDER_PORT)

        # stats for pg_id 1 and 2
        stats = self.client.get_pgid_stats(pgids["latency"])
        flow_stats_1 = stats["flow_stats"].get(1)
        flow_stats_2 = stats["flow_stats"].get(2)
        global_lat_stats = stats["latency"]
        lat_stats_1 = global_lat_stats.get(1)
        lat_stats_2 = global_lat_stats.get(2)

        tx_pkts_1 = flow_stats_1["tx_pkts"].get(0, 0)
        rx_pkts_1 = flow_stats_1["rx_pkts"].get(1, 0)
        drops_1 = lat_stats_1["err_cntrs"]["dropped"]

        tx_pkts_2 = flow_stats_2["tx_pkts"].get(0, 0)
        rx_pkts_2 = flow_stats_2["rx_pkts"].get(1, 0)
        drops_2 = lat_stats_2["err_cntrs"]["dropped"]

        print(
            " \n TX and RX flow stats and packets dropped for s1 (i.e., delay critical): "
        )
        print("  tx packets: {0}".format(tx_pkts_1))
        print("  tx bytes : {0}".format(tx_pps_1))
        print("  rx packets : {0}".format(rx_pkts_1))
        print("  drops: {0}".format(drops_1))

        print(
            " \n TX and RX flow stats and packets dropped for s2 (i.e., delay critical): "
        )
        print("  tx packets: {0}".format(tx_pkts_2))
        print("  tx bytes : {0}".format(tx_pps_2))
        print("  rx packets : {0}".format(rx_pkts_2))
        print("  drops: {0}".format(drops_2))

        # latency info for s1
        lat_1 = lat_stats_1["latency"]
        avg_1 = lat_1["average"]
        tot_max_1 = lat_1["total_max"]
        tot_min_1 = lat_1["total_min"]

        # latency info for s2
        lat_2 = lat_stats_2["latency"]
        avg_2 = lat_2["average"]
        tot_max_2 = lat_2["total_max"]
        tot_min_2 = lat_2["total_min"]

        print("\n Latency info for s1 (ie., delay critical with QoS):")
        print("  Maximum latency(usec): {0}".format(tot_max_1))
        print("  Minimum latency(usec): {0}".format(tot_min_1))
        print("  Average latency(usec): {0}".format(avg_1))

        print("\n Latency info for s2 (ie., delay critical without QoS):")
        print("  Maximum latency(usec): {0}".format(tot_max_2))
        print("  Minimum latency(usec): {0}".format(tot_min_2))
        print("  Average latency(usec): {0}".format(avg_2))

        # max latency difference between delay critcal streams s1 and s2
        dc_max_lat_diff = tot_max_2 - tot_max_1

        assert (LATENCY_LP_MAX_USEC - LATENCY_DC_MAX_USEC
                ) <= dc_max_lat_diff, "Priority scheduling test failed."

        # Get statistics for TX and RX ports
        stats = self.client.get_stats()
        readable_stats_0 = get_readable_port_stats(stats[0])
        readable_stats_1 = get_readable_port_stats(stats[1])

        logging.info("Priority scheduling test successfully executed.")
        print("\n Overall Statistics for TX port: \n")
        print(readable_stats_0)
        print("\n Overall Statistics for RX port: \n")
        print(readable_stats_1)