aboutsummaryrefslogtreecommitdiffstats
path: root/GPL
diff options
context:
space:
mode:
authorVratko Polak <vrpolak@cisco.com>2022-07-20 10:18:29 +0200
committerVratko Polak <vrpolak@cisco.com>2022-07-20 10:18:29 +0200
commitb06a1adb1c26eeb5bf5c86091fef30441f6d06a1 (patch)
tree74c1139c3fd8412fd39185b75b07b230f2415f79 /GPL
parent371bac71bc789bf9d68fa1b8ba77f21c4876244f (diff)
fix(astf): avoid issues in pps tput
When more than 1 data packet is sent in the same chunk, TRex is sometimes not fully deterministic in its usage of delayed ACKs. This changes the "application protocol" to sent 5 chunks (1 data packet each), c2s and s2c interleaved, so each subsequent chunk acts as an ACK. The overall packet count remains the same, and even though this interleaved way may be more demanding on TRex CPU, preliminary results show NAT performance is still well below ip4base performance. As a side effect, the interleaved way seems to work also for 100B data frames, so we are avoiding two issues at once. Ticket: CSIT-1846 Ticket: CSIT-1830 Change-Id: Ia4dcfa7c89f2c08fc32bd6118e2e009316b33c25 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'GPL')
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py21
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py21
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py21
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py21
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py21
5 files changed, 60 insertions, 45 deletions
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py
index 546e11bb5e..9c3ab873c1 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py
@@ -73,14 +73,20 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram()
prog_c.connect()
- prog_c.send(u"1" * data_size)
- prog_c.recv(data_size)
+ prog_c.set_var(u"var1", self.n_data_frames)
+ prog_c.set_label(u"a1:")
+ prog_c.send(u"1" * real_mss)
+ prog_c.recv(real_mss)
+ prog_c.jmp_nz(u"var1", u"a1:")
# server commands
prog_s = ASTFProgram()
prog_s.accept()
- prog_s.recv(data_size)
- prog_s.send(u"1" * data_size)
+ prog_s.set_var(u"var2", self.n_data_frames)
+ prog_s.set_label(u"a2:")
+ prog_s.recv(real_mss)
+ prog_s.send(u"1" * real_mss)
+ prog_s.jmp_nz(u"var2", u"a2:")
# ip generators
ip_gen_c = ASTFIPGenDist(
@@ -113,11 +119,8 @@ class TrafficProfile(TrafficProfileBaseClass):
globinfo = ASTFGlobalInfo()
# Ensure correct data frame size.
globinfo.tcp.mss = trex_mss
- # Ensure the whole transaction is a single burst (per direction).
- globinfo.tcp.initwnd = self.n_data_frames
- # Ensure buffers are large enough so starting window works.
- globinfo.tcp.txbufsize = data_size
- globinfo.tcp.rxbufsize = data_size
+ globinfo.tcp.txbufsize = trex_mss
+ globinfo.tcp.rxbufsize = trex_mss
kwargs = dict(
default_c_glob_info=globinfo,
default_s_glob_info=globinfo,
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py
index 565ccac3d5..ae5879a98f 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py
@@ -73,14 +73,20 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram()
prog_c.connect()
- prog_c.send(u"1" * data_size)
- prog_c.recv(data_size)
+ prog_c.set_var(u"var1", self.n_data_frames)
+ prog_c.set_label(u"a1:")
+ prog_c.send(u"1" * real_mss)
+ prog_c.recv(real_mss)
+ prog_c.jmp_nz(u"var1", u"a1:")
# server commands
prog_s = ASTFProgram()
prog_s.accept()
- prog_s.recv(data_size)
- prog_s.send(u"1" * data_size)
+ prog_s.set_var(u"var2", self.n_data_frames)
+ prog_s.set_label(u"a2:")
+ prog_s.recv(real_mss)
+ prog_s.send(u"1" * real_mss)
+ prog_s.jmp_nz(u"var2", u"a2:")
# ip generators
ip_gen_c = ASTFIPGenDist(
@@ -113,11 +119,8 @@ class TrafficProfile(TrafficProfileBaseClass):
globinfo = ASTFGlobalInfo()
# Ensure correct data frame size.
globinfo.tcp.mss = trex_mss
- # Ensure the whole transaction is a single burst (per direction).
- globinfo.tcp.initwnd = self.n_data_frames
- # Ensure buffers are large enough so starting window works.
- globinfo.tcp.txbufsize = data_size
- globinfo.tcp.rxbufsize = data_size
+ globinfo.tcp.txbufsize = trex_mss
+ globinfo.tcp.rxbufsize = trex_mss
kwargs = dict(
default_c_glob_info=globinfo,
default_s_glob_info=globinfo,
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py
index 54b38a43a9..46468386b1 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py
@@ -73,14 +73,20 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram()
prog_c.connect()
- prog_c.send(u"1" * data_size)
- prog_c.recv(data_size)
+ prog_c.set_var(u"var1", self.n_data_frames)
+ prog_c.set_label(u"a1:")
+ prog_c.send(u"1" * real_mss)
+ prog_c.recv(real_mss)
+ prog_c.jmp_nz(u"var1", u"a1:")
# server commands
prog_s = ASTFProgram()
prog_s.accept()
- prog_s.recv(data_size)
- prog_s.send(u"1" * data_size)
+ prog_s.set_var(u"var2", self.n_data_frames)
+ prog_s.set_label(u"a2:")
+ prog_s.recv(real_mss)
+ prog_s.send(u"1" * real_mss)
+ prog_s.jmp_nz(u"var2", u"a2:")
# ip generators
ip_gen_c = ASTFIPGenDist(
@@ -113,11 +119,8 @@ class TrafficProfile(TrafficProfileBaseClass):
globinfo = ASTFGlobalInfo()
# Ensure correct data frame size.
globinfo.tcp.mss = trex_mss
- # Ensure the whole transaction is a single burst (per direction).
- globinfo.tcp.initwnd = self.n_data_frames
- # Ensure buffers are large enough so starting window works.
- globinfo.tcp.txbufsize = data_size
- globinfo.tcp.rxbufsize = data_size
+ globinfo.tcp.txbufsize = trex_mss
+ globinfo.tcp.rxbufsize = trex_mss
kwargs = dict(
default_c_glob_info=globinfo,
default_s_glob_info=globinfo,
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py
index 0108edbcd5..35e961495d 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py
@@ -73,14 +73,20 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram()
prog_c.connect()
- prog_c.send(u"1" * data_size)
- prog_c.recv(data_size)
+ prog_c.set_var(u"var1", self.n_data_frames)
+ prog_c.set_label(u"a1:")
+ prog_c.send(u"1" * real_mss)
+ prog_c.recv(real_mss)
+ prog_c.jmp_nz(u"var1", u"a1:")
# server commands
prog_s = ASTFProgram()
prog_s.accept()
- prog_s.recv(data_size)
- prog_s.send(u"1" * data_size)
+ prog_s.set_var(u"var2", self.n_data_frames)
+ prog_s.set_label(u"a2:")
+ prog_s.recv(real_mss)
+ prog_s.send(u"1" * real_mss)
+ prog_s.jmp_nz(u"var2", u"a2:")
# ip generators
ip_gen_c = ASTFIPGenDist(
@@ -113,11 +119,8 @@ class TrafficProfile(TrafficProfileBaseClass):
globinfo = ASTFGlobalInfo()
# Ensure correct data frame size.
globinfo.tcp.mss = trex_mss
- # Ensure the whole transaction is a single burst (per direction).
- globinfo.tcp.initwnd = self.n_data_frames
- # Ensure buffers are large enough so starting window works.
- globinfo.tcp.txbufsize = data_size
- globinfo.tcp.rxbufsize = data_size
+ globinfo.tcp.txbufsize = trex_mss
+ globinfo.tcp.rxbufsize = trex_mss
kwargs = dict(
default_c_glob_info=globinfo,
default_s_glob_info=globinfo,
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py
index 54de3e500d..5dcfb70cb7 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py
@@ -73,14 +73,20 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram()
prog_c.connect()
- prog_c.send(u"1" * data_size)
- prog_c.recv(data_size)
+ prog_c.set_var(u"var1", self.n_data_frames)
+ prog_c.set_label(u"a1:")
+ prog_c.send(u"1" * real_mss)
+ prog_c.recv(real_mss)
+ prog_c.jmp_nz(u"var1", u"a1:")
# server commands
prog_s = ASTFProgram()
prog_s.accept()
- prog_s.recv(data_size)
- prog_s.send(u"1" * data_size)
+ prog_s.set_var(u"var2", self.n_data_frames)
+ prog_s.set_label(u"a2:")
+ prog_s.recv(real_mss)
+ prog_s.send(u"1" * real_mss)
+ prog_s.jmp_nz(u"var2", u"a2:")
# ip generators
ip_gen_c = ASTFIPGenDist(
@@ -113,11 +119,8 @@ class TrafficProfile(TrafficProfileBaseClass):
globinfo = ASTFGlobalInfo()
# Ensure correct data frame size.
globinfo.tcp.mss = trex_mss
- # Ensure the whole transaction is a single burst (per direction).
- globinfo.tcp.initwnd = self.n_data_frames
- # Ensure buffers are large enough so starting window works.
- globinfo.tcp.txbufsize = data_size
- globinfo.tcp.rxbufsize = data_size
+ globinfo.tcp.txbufsize = trex_mss
+ globinfo.tcp.rxbufsize = trex_mss
kwargs = dict(
default_c_glob_info=globinfo,
default_s_glob_info=globinfo,