+ "sh -c '{}/resources/tools/t-rex/"
+ "t-rex-stateless-stop.py'".format(Constants.REMOTE_FW_DIR))
+ logger.trace(ret)
+ logger.trace(stdout)
+ logger.trace(stderr)
+
+ if int(ret) != 0:
+ raise RuntimeError('T-rex stateless runtime error')
+
+ def trex_stl_start_remote_exec(self, duration, rate, framesize,
+ traffic_type, async_call=False,
+ latency=True, warmup_time=5):
+ """Execute script on remote node over ssh to start traffic.
+
+ :param duration: Time expresed in seconds for how long to send traffic.
+ :param rate: Traffic rate expressed with units (pps, %)
+ :param framesize: L2 frame size to send (without padding and IPG).
+ :param traffic_type: Traffic profile.
+ :param async_call: If enabled then don't wait for all incomming trafic.
+ :param latency: With latency measurement.
+ :param warmup_time: Warmup time period.
+ :type duration: int
+ :type rate: str
+ :type framesize: int
+ :type traffic_type: str
+ :type async_call: bool
+ :type latency: bool
+ :type warmup_time: int
+ :returns: Nothing
+ :raises: NotImplementedError if traffic type is not supported.
+ :raises: RuntimeError in case of TG driver issue.
+ """
+ ssh = SSH()
+ ssh.connect(self._node)
+
+ _p0 = 1
+ _p1 = 2
+ _async = "--async" if async_call else ""
+ _latency = "--latency" if latency else ""
+
+ if self._ifaces_reordered != 0:
+ _p0, _p1 = _p1, _p0
+
+ if traffic_type in ["3-node-xconnect", "3-node-bridge"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 10.10.10.1 "
+ "--p{4}_src_end_ip 10.10.10.254 "
+ "--p{4}_dst_start_ip 20.20.20.1 "
+ "--p{5}_src_start_ip 20.20.20.1 "
+ "--p{5}_src_end_ip 20.20.20.254 "
+ "--p{5}_dst_start_ip 10.10.10.1 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+ elif traffic_type in ["3-node-IPv4"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 10.10.10.2 "
+ "--p{4}_src_end_ip 10.10.10.254 "
+ "--p{4}_dst_start_ip 20.20.20.2 "
+ "--p{5}_src_start_ip 20.20.20.2 "
+ "--p{5}_src_end_ip 20.20.20.254 "
+ "--p{5}_dst_start_ip 10.10.10.2 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+ elif traffic_type in ["3-node-IPv4-dst-1"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 10.0.0.1 "
+ "--p{4}_dst_start_ip 20.0.0.0 "
+ "--p{4}_dst_end_ip 20.0.0.0 "
+ "--p{5}_src_start_ip 20.0.0.1 "
+ "--p{5}_dst_start_ip 10.0.0.0 "
+ "--p{5}_dst_end_ip 10.0.0.0 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+ elif traffic_type in ["3-node-IPv4-dst-100"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 10.0.0.1 "
+ "--p{4}_dst_start_ip 20.0.0.0 "
+ "--p{4}_dst_end_ip 20.0.0.99 "
+ "--p{5}_src_start_ip 20.0.0.1 "
+ "--p{5}_dst_start_ip 10.0.0.0 "
+ "--p{5}_dst_end_ip 10.0.0.99 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+ elif traffic_type in ["3-node-IPv4-dst-1000"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 10.0.0.1 "
+ "--p{4}_dst_start_ip 20.0.0.0 "
+ "--p{4}_dst_end_ip 20.0.3.231 "
+ "--p{5}_src_start_ip 20.0.0.1 "
+ "--p{5}_dst_start_ip 10.0.0.0 "
+ "--p{5}_dst_end_ip 10.0.3.231 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-1u-1p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.0.0 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1024 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1028 "
+ "--p{5}_dst_end_udp_port 1028 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-1u-15p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.0.0 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1038 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1024 "
+ "--p{5}_dst_end_udp_port 1038 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-10u-15p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.0.9 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1038 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1024 "
+ "--p{5}_dst_end_udp_port 1173 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-100u-15p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.0.99 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1038 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1024 "
+ "--p{5}_dst_end_udp_port 2523 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration) + 60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-1000u-15p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.3.231 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1038 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1024 "
+ "--p{5}_dst_end_udp_port 16023 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-2000u-15p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.7.207 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1038 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1024 "
+ "--p{5}_dst_end_udp_port 31022 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),
+ timeout=int(duration)+60)
+
+ elif traffic_type in ["3-node-IPv4-SNAT-4000u-15p"]:
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+ "--duration={1} -r {2} -s {3} "
+ "--p{4}_src_start_ip 20.0.0.0 "
+ "--p{4}_src_end_ip 20.0.15.159 "
+ "--p{4}_dst_start_ip 12.0.0.2 "
+ "--p{5}_src_start_ip 12.0.0.2 "
+ "--p{5}_src_end_ip 12.0.0.2 "
+ "--p{5}_dst_start_ip 200.0.0.0 "
+ "--p{4}_src_start_udp_port 1024 "
+ "--p{4}_src_end_udp_port 1038 "
+ "--p{4}_dst_start_udp_port 1024 "
+ "--p{5}_src_start_udp_port 1024 "
+ "--p{5}_dst_start_udp_port 1024 "
+ "--p{5}_dst_end_udp_port 61022 "
+ "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+ duration, rate, framesize,
+ _p0, _p1, _async, _latency,
+ warmup_time),