From fe46d50ab3ec1b06924f31d5387b96309de26941 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Tue, 19 Dec 2017 15:18:08 +0100 Subject: [PATCH] netperf tests: test nic_router throughput Adds two new netperf tests, netperf_lxip_router and netperf_lwip_router who test the TCP throughput of the NIC router when routed with a tcp-forward rule and NAT. Issue #2624 --- repos/ports/run/netperf.inc | 59 ++++++++++++++++++++++++- repos/ports/run/netperf_lwip.run | 1 + repos/ports/run/netperf_lwip_bridge.run | 1 + repos/ports/run/netperf_lwip_router.run | 27 +++++++++++ repos/ports/run/netperf_lwip_usb30.run | 1 + repos/ports/run/netperf_lwip_wifi.run | 1 + repos/ports/run/netperf_lxip.run | 1 + repos/ports/run/netperf_lxip_bridge.run | 1 + repos/ports/run/netperf_lxip_router.run | 27 +++++++++++ repos/ports/run/netperf_lxip_usb30.run | 1 + repos/ports/run/netperf_lxip_wifi.run | 1 + 11 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 repos/ports/run/netperf_lwip_router.run create mode 100644 repos/ports/run/netperf_lxip_router.run diff --git a/repos/ports/run/netperf.inc b/repos/ports/run/netperf.inc index ca3deed09..e2220ade6 100644 --- a/repos/ports/run/netperf.inc +++ b/repos/ports/run/netperf.inc @@ -1,6 +1,7 @@ # # \brief Test for using netperf # \author Alexander Boettcher +# \author Martin Stein # \date 2013-04-18 # @@ -8,6 +9,11 @@ proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv } return gpio_drv } +if {[expr $use_nic_bridge && $use_nic_router]} { + puts "Cannot test with both NIC bridge and NIC router."; + exit 0 +} + if {[get_cmd_switch --autopilot] && [have_include "power_on/qemu"]} { puts "\nRunning netperf in autopilot on Qemu is not recommended.\n" exit @@ -86,6 +92,7 @@ append build_components " $netperf_target " lappend_if $use_nic_driver build_components drivers/nic lappend_if $use_usb_driver build_components drivers/usb lappend_if $use_nic_bridge build_components server/nic_bridge +lappend_if $use_nic_router build_components server/nic_router lappend_if [have_spec gpio] build_components drivers/gpio append_if $use_wifi_driver build_components { @@ -138,6 +145,42 @@ append_if [have_spec gpio] config " " +append_if $use_nic_router config { + + + + + + + + + + + + + + + + + + + + } +append_if $use_nic_router config " + " +append_if $use_nic_router config { + + + + +} + append_if $use_nic_bridge config { @@ -252,7 +295,7 @@ append config { @@ -266,6 +309,11 @@ append_if $use_nic_bridge config { } +append_if $use_nic_router config { + + + + } append config { @@ -286,6 +334,7 @@ set boot_modules { append boot_modules " $netperf_app " append boot_modules " $netperf_stack " lappend_if $use_nic_bridge boot_modules nic_bridge +lappend_if $use_nic_router boot_modules nic_router # platform-specific modules lappend_if [have_spec gpio] boot_modules [gpio_drv] @@ -324,6 +373,12 @@ append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 " append qemu_args " -net user -redir tcp:12865::12865 -redir tcp:49153::49153 " +set force_ports "" +if $use_nic_router { + set ip_match_string "nic_router\\\] \\\[uplink\\\] IP config: interface (\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}).*\n" + set force_ports "-P 12864,12864" +} + if {[have_spec linux]} { run_genode_until {.*family AF_INET.*\n} 60 } else { @@ -332,7 +387,6 @@ if {[have_spec linux]} { set serial_id [output_spawn_id] -set force_ports "" if {[have_include "power_on/qemu"]} { set ip_addr "localhost" set force_ports "-P 49153,49153" @@ -378,6 +432,7 @@ foreach netperf_test $netperf_tests { # format output parseable for post proccessing scripts puts -nonewline "! PERF: $netperf_test" if {$use_nic_bridge} { puts -nonewline "_bridge" } + if {$use_nic_router} { puts -nonewline "_router" } if {$use_usb_driver} { if {![string compare $use_usb_11 "yes"]} { puts -nonewline "_uhci" } if {![string compare $use_usb_20 "yes"]} { puts -nonewline "_ohci" } diff --git a/repos/ports/run/netperf_lwip.run b/repos/ports/run/netperf_lwip.run index 7cbd903f7..7e573bc56 100644 --- a/repos/ports/run/netperf_lwip.run +++ b/repos/ports/run/netperf_lwip.run @@ -7,6 +7,7 @@ # network configuration set use_nic_bridge 0 +set use_nic_router 0 set use_wifi_driver 0 set use_usb_11 "no" set use_usb_20 "yes" diff --git a/repos/ports/run/netperf_lwip_bridge.run b/repos/ports/run/netperf_lwip_bridge.run index df3d75335..2baec396a 100644 --- a/repos/ports/run/netperf_lwip_bridge.run +++ b/repos/ports/run/netperf_lwip_bridge.run @@ -17,6 +17,7 @@ if {[have_spec omap4]} { # network configuration set use_nic_bridge 1 +set use_nic_router 0 set use_wifi_driver 0 set use_usb_11 "no" set use_usb_20 "no" diff --git a/repos/ports/run/netperf_lwip_router.run b/repos/ports/run/netperf_lwip_router.run new file mode 100644 index 000000000..f7db8da68 --- /dev/null +++ b/repos/ports/run/netperf_lwip_router.run @@ -0,0 +1,27 @@ +# +# \brief Test using netperf with a NIC router and with a native driver or +# if not available for the platform using usb 3.0 by default +# \author Martin Stein +# \date 2017-12-19 +# + +if {[have_include "power_on/qemu"]} { + puts "\nNetperf running on Qemu with a router is not supported.\n" + exit +} + +if {[have_spec omap4]} { + puts stderr "\nTest requires 1 Gbit network interface - not supported for omap4\n" + exit 0 +} + +# network configuration +set use_nic_bridge 0 +set use_nic_router 1 +set use_wifi_driver 0 +set use_usb_11 "no" +set use_usb_20 "no" +set use_usb_30 "yes" + +source ${genode_dir}/repos/ports/run/netperf_lwip.inc +source ${genode_dir}/repos/ports/run/netperf.inc diff --git a/repos/ports/run/netperf_lwip_usb30.run b/repos/ports/run/netperf_lwip_usb30.run index 9a11512c9..3aa43783a 100644 --- a/repos/ports/run/netperf_lwip_usb30.run +++ b/repos/ports/run/netperf_lwip_usb30.run @@ -12,6 +12,7 @@ if {[have_spec omap4]} { # network configuration set use_nic_bridge 0 +set use_nic_router 0 set use_wifi_driver 0 # force usage of usb for nova, known to work with usb30 network adapter diff --git a/repos/ports/run/netperf_lwip_wifi.run b/repos/ports/run/netperf_lwip_wifi.run index d5091dec3..e74d49234 100644 --- a/repos/ports/run/netperf_lwip_wifi.run +++ b/repos/ports/run/netperf_lwip_wifi.run @@ -23,6 +23,7 @@ if {[get_cmd_switch --autopilot] && [have_spec x86_32] && ![have_spec acpi]} { # network configuration set use_nic_bridge 0 +set use_nic_router 0 set use_wifi_driver 1 set use_usb_11 "no" set use_usb_20 "no" diff --git a/repos/ports/run/netperf_lxip.run b/repos/ports/run/netperf_lxip.run index cbfaaaa0c..50481fde6 100644 --- a/repos/ports/run/netperf_lxip.run +++ b/repos/ports/run/netperf_lxip.run @@ -7,6 +7,7 @@ # network configuration set use_nic_bridge 0 +set use_nic_router 0 set use_wifi_driver 0 set use_usb_11 "no" set use_usb_20 "yes" diff --git a/repos/ports/run/netperf_lxip_bridge.run b/repos/ports/run/netperf_lxip_bridge.run index 85096c2ef..6d2fbb48d 100644 --- a/repos/ports/run/netperf_lxip_bridge.run +++ b/repos/ports/run/netperf_lxip_bridge.run @@ -17,6 +17,7 @@ if {[have_spec omap4]} { # network configuration set use_nic_bridge 1 +set use_nic_router 0 set use_wifi_driver 0 set use_usb_11 "no" set use_usb_20 "no" diff --git a/repos/ports/run/netperf_lxip_router.run b/repos/ports/run/netperf_lxip_router.run new file mode 100644 index 000000000..235e4e6a3 --- /dev/null +++ b/repos/ports/run/netperf_lxip_router.run @@ -0,0 +1,27 @@ +# +# \brief Test using netperf with a NIC router and with a native driver or +# if not available for the platform using usb 3.0 by default +# \author Martin Stein +# \date 2017-12-19 +# + +if {[have_include "power_on/qemu"]} { + puts "\nNetperf running on Qemu with a router is not supported.\n" + exit +} + +if {[have_spec omap4]} { + puts stderr "\nTest requires 1 Gbit network interface - not supported for omap4\n" + exit 0 +} + +# network configuration +set use_nic_bridge 0 +set use_nic_router 1 +set use_wifi_driver 0 +set use_usb_11 "no" +set use_usb_20 "no" +set use_usb_30 "yes" + +source ${genode_dir}/repos/ports/run/netperf_lxip.inc +source ${genode_dir}/repos/ports/run/netperf.inc diff --git a/repos/ports/run/netperf_lxip_usb30.run b/repos/ports/run/netperf_lxip_usb30.run index ec5ff0bba..d9cb9f580 100644 --- a/repos/ports/run/netperf_lxip_usb30.run +++ b/repos/ports/run/netperf_lxip_usb30.run @@ -12,6 +12,7 @@ if {[have_spec omap4]} { # network configuration set use_nic_bridge 0 +set use_nic_router 0 set use_wifi_driver 0 # force usage of usb for nova, known to work with usb30 network adapter diff --git a/repos/ports/run/netperf_lxip_wifi.run b/repos/ports/run/netperf_lxip_wifi.run index 6e242c29e..809893db8 100644 --- a/repos/ports/run/netperf_lxip_wifi.run +++ b/repos/ports/run/netperf_lxip_wifi.run @@ -23,6 +23,7 @@ if {[get_cmd_switch --autopilot] && [have_spec x86_32] && ![have_spec acpi]} { # network configuration set use_nic_bridge 0 +set use_nic_router 0 set use_wifi_driver 1 set use_usb_11 "no" set use_usb_20 "no"