+ _traffic_options = {}
+ #default L3 profile is IPv4
+ _use_ipv6 = False
+ #default warmup time is 5 seconds
+ _warmup_time = 5
+ #default behaviour of this script is sychronous
+ _async_call = False
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-d", "--duration", required=True, type=int,
+ help="Duration of traffic run")
+ parser.add_argument("-s", "--frame_size", required=True, type=int,
+ help="Size of a Frame without padding and IPG")
+ parser.add_argument("-r", "--rate", required=True,
+ help="Traffic rate with included units (%, pps)")
+ parser.add_argument("-6", "--use_IPv6", action="store_true",
+ help="Use IPv6 traffic profile instead of IPv4")
+ parser.add_argument("--async", action="store_true",
+ help="Non-blocking call of the script")
+ parser.add_argument("-w", "--warmup_time", type=int,
+ help="Traffic warmup time in seconds, 0 = disable")
+# parser.add_argument("--p1_src_mac",
+# help="Port 1 source MAC address")
+# parser.add_argument("--p1_dst_mac",
+# help="Port 1 destination MAC address")
+ parser.add_argument("--p1_src_start_ip", required=True,
+ help="Port 1 source start IP address")
+ parser.add_argument("--p1_src_end_ip", required=True,
+ help="Port 1 source end IP address")
+ parser.add_argument("--p1_dst_start_ip", required=True,
+ help="Port 1 destination start IP address")
+# parser.add_argument("--p1_dst_end_ip",
+# help="Port 1 destination end IP address")
+# parser.add_argument("--p2_src_mac",
+# help="Port 2 source MAC address")
+# parser.add_argument("--p2_dst_mac",
+# help="Port 2 destination MAC address")
+ parser.add_argument("--p2_src_start_ip", required=True,
+ help="Port 2 source start IP address")
+ parser.add_argument("--p2_src_end_ip", required=True,
+ help="Port 2 source end IP address")
+ parser.add_argument("--p2_dst_start_ip", required=True,
+ help="Port 2 destination start IP address")
+# parser.add_argument("--p2_dst_end_ip",
+# help="Port 2 destination end IP address")
+
+ args = parser.parse_args()
+
+ _duration = args.duration
+ _frame_size = args.frame_size
+ _rate = args.rate
+ _use_ipv6 = args.use_IPv6
+ _async_call = args.async
+
+ if args.warmup_time is not None:
+ _warmup_time = args.warmup_time
+
+ for attr in [a for a in dir(args) if a.startswith('p')]:
+ if getattr(args, attr) is not None:
+ _traffic_options[attr] = getattr(args, attr)
+
+ if _use_ipv6:
+ pkt_a, pkt_b = create_packets_v6(_traffic_options,
+ frame_size=_frame_size)
+ else:
+ pkt_a, pkt_b = create_packets(_traffic_options,
+ frame_size=_frame_size)
+
+ simple_burst(pkt_a, pkt_b, _duration, _rate, _warmup_time, _async_call)