]
PapiSocketExecutor.dump_and_log(node, cmds)
+ @staticmethod
+ def compute_max_translations_per_thread(sessions, threads):
+ """Compute value of max_translations_per_thread NAT44 parameter based on
+ total number of worker threads.
+
+ :param sessions: Required number of NAT44 sessions.
+ :param threads: Number of worker threads.
+ :type sessions: int
+ :type threads: int
+ :returns: Value of max_translations_per_thread NAT44 parameter.
+ :rtype: int
+ """
+ from math import log2, modf
+ rest, mult = modf(log2(sessions/(10*threads)))
+ return 2 ** (int(mult) + (1 if rest else 0)) * 10
+
# DET44 PAPI calls
# DET44 means deterministic mode of NAT44
@staticmethod
| ${dest_mask}= | ${22}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 81920
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${22}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.0
| ${out_mask}= | ${32}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4tcp-1024h
| ${cps}= | ${64512}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${18}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 655360
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${18}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.15
| ${out_mask}= | ${28}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4tcp-16384h
| ${cps}= | ${1032192}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${14}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 10485760
| ${in_net}= | 172.16.0.0
| ${in_mask}= | ${14}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.255
| ${out_mask}= | ${24}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4tcp-262144h
| ${cps}= | ${16515072}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${20}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 163840
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${20}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.3
| ${out_mask}= | ${30}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4tcp-4096h
| ${cps}= | ${258048}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${16}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 2621440
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${16}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.63
| ${out_mask}= | ${26}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4tcp-65536h
| ${cps}= | ${4128768}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${22}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 81920
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${22}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.0
| ${out_mask}= | ${32}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4udp-1024h
| ${cps}= | ${64512}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${8}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 64512
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${8}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.0
| ${out_mask}= | ${32}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4udp-1024u63p-udir
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${18}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 655360
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${18}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.15
| ${out_mask}= | ${28}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4udp-16384h
| ${cps}= | ${1032192}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${8}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 1032192
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${18}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.15
| ${out_mask}= | ${28}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4udp-16384u63p-udir
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${14}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 10485760
| ${in_net}= | 172.16.0.0
| ${in_mask}= | ${14}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.255
| ${out_mask}= | ${24}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4udp-262144h
| ${cps}= | ${16515072}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${8}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 16515072
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${8}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.255
| ${out_mask}= | ${24}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4udp-262144u63p-udir
# Main heap size multiplicator
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${20}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 163840
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${20}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.3
| ${out_mask}= | ${30}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4udp-4096h
| ${cps}= | ${258048}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${8}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 258048
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${8}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.3
| ${out_mask}= | ${30}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4udp-4096u63p-udir
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${16}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 2621440
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${16}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.63
| ${out_mask}= | ${26}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-astf-ethip4udp-65536h
| ${cps}= | ${4128768}
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs
| ${dest_mask}= | ${8}
# NAT settings
| ${nat_mode}= | endpoint-dependent
-| ${max_translations_per_thread}= | 4128768
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${8}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.63
| ${out_mask}= | ${26}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4udp-65536u63p-udir
# Main heap size multiplicator
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
| | And Add NAT max translations per thread to all DUTs
| | ... | ${max_translations_per_thread}
| | And Apply startup configuration on all VPP DUTs