Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  router_scale.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

ROUTER_NUM_NETIFS=4
: ${TIMEOUT:=20000} # ms

router_h1_create()
{
 simple_if_init $h1 192.0.1.1/24
}

router_h1_destroy()
{
 simple_if_fini $h1 192.0.1.1/24
}

router_h2_create()
{
 simple_if_init $h2 192.0.2.1/24
 tc qdisc add dev $h2 handle ffff: ingress
}

router_h2_destroy()
{
 tc qdisc del dev $h2 handle ffff: ingress
 simple_if_fini $h2 192.0.2.1/24
}

router_create()
{
 ip link set dev $rp1 up
 ip link set dev $rp2 up

 ip address add 192.0.1.2/24 dev $rp1
 ip address add 192.0.2.2/24 dev $rp2
}

router_destroy()
{
 ip address del 192.0.2.2/24 dev $rp2
 ip address del 192.0.1.2/24 dev $rp1

 ip link set dev $rp2 down
 ip link set dev $rp1 down
}

router_setup_prepare()
{
 h1=${NETIFS[p1]}
 rp1=${NETIFS[p2]}

 rp2=${NETIFS[p3]}
 h2=${NETIFS[p4]}

 h1mac=$(mac_get $h1)
 rp1mac=$(mac_get $rp1)

 vrf_prepare

 router_h1_create
 router_h2_create

 router_create
}

wait_for_routes()
{
 local t0=$1; shift
 local route_count=$1; shift

 local t1=$(ip route | grep 'offload' | grep -v 'offload_failed' | wc -l)
 local delta=$((t1 - t0))
 echo $delta
 [[ $delta -ge $route_count ]]
}

router_routes_create()
{
 local route_count=$1
 local count=0

 ROUTE_FILE="$(mktemp)"

 for i in {0..255}
 do
  for j in {0..255}
  do
   for k in {0..255}
   do
    if [[ $count -eq $route_count ]]; then
     break 3
    fi

    echo route add 193.${i}.${j}.${k}/32 dev $rp2 \
     >> $ROUTE_FILE
    ((count++))
   done
  done
 done

 ip -b $ROUTE_FILE &> /dev/null
}

router_routes_destroy()
{
 if [[ -v ROUTE_FILE ]]; then
  rm -f $ROUTE_FILE
 fi
}

router_test()
{
 local route_count=$1
 local should_fail=$2
 local delta

 RET=0

 local t0=$(ip route | grep -o 'offload' | wc -l)
 router_routes_create $route_count
 delta=$(busywait "$TIMEOUT" wait_for_routes $t0 $route_count)

 check_err_fail $should_fail $? "Offload routes: Expected $route_count, got $delta."
 if [[ $RET -ne 0 ]] || [[ $should_fail -eq 1 ]]; then
  return
 fi

 router_routes_destroy
}

router_cleanup()
{
 pre_cleanup

 router_routes_destroy
 router_destroy

 router_h2_destroy
 router_h1_destroy

 vrf_cleanup
}

Messung V0.5
C=98 H=75 G=87

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge