lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <177465a0-aaba-4063-e451-ebbf46728b77@itcare.pl>
Date:   Tue, 15 Aug 2017 18:30:12 +0200
From:   Paweł Staszewski <pstaszewski@...are.pl>
To:     Linux Kernel Network Developers <netdev@...r.kernel.org>
Subject: 100% CPU load when generating traffic to destination network that
 nexthop is not reachable

Hi


Doing some tests i discovered that when traffic is send by pktgen to 
forwarding host where nexthop for destination network on forwarding 
router is not reachable i have 100% cpu on all cores and perf top show 
mostly:

     77.19%  [kernel]            [k] queued_spin_lock_slowpath
     10.20%  [kernel]            [k] acpi_processor_ffh_cstate_enter
      1.41%  [kernel]            [k] queued_write_lock_slowpath


Configuration of forwarding host below:

ip a

Receiving interface:

8: enp175s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state 
UP group default qlen 1000
     link/ether 0c:c4:7a:d8:5d:1c brd ff:ff:ff:ff:ff:ff
     inet 10.0.0.1/30 scope global enp175s0f0
        valid_lft forever preferred_lft forever
     inet6 fe80::ec4:7aff:fed8:5d1c/64 scope link
        valid_lft forever preferred_lft forever

Transmitting vlans (binded to: enp175s0f1)
12: vlan1000@...175s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
qdisc noqueue state UP group default qlen 1000
     link/ether 0c:c4:7a:d8:5d:1d brd ff:ff:ff:ff:ff:ff
     inet 10.10.0.1/30 scope global vlan1000
        valid_lft forever preferred_lft forever
     inet6 fe80::ec4:7aff:fed8:5d1d/64 scope link
        valid_lft forever preferred_lft forever
13: vlan1001@...175s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
qdisc noqueue state UP group default qlen 1000
     link/ether 0c:c4:7a:d8:5d:1d brd ff:ff:ff:ff:ff:ff
     inet 10.10.1.1/30 scope global vlan1001
        valid_lft forever preferred_lft forever
     inet6 fe80::ec4:7aff:fed8:5d1d/64 scope link
        valid_lft forever preferred_lft forever
14: vlan1002@...175s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
qdisc noqueue state UP group default qlen 1000
     link/ether 0c:c4:7a:d8:5d:1d brd ff:ff:ff:ff:ff:ff
     inet 10.10.2.1/30 scope global vlan1002
        valid_lft forever preferred_lft forever
     inet6 fe80::ec4:7aff:fed8:5d1d/64 scope link
        valid_lft forever preferred_lft forever

Routing table:
10.0.0.0/30 dev enp175s0f0 proto kernel scope link src 10.0.0.1
10.10.0.0/30 dev vlan1000 proto kernel scope link src 10.10.0.1
10.10.1.0/30 dev vlan1001 proto kernel scope link src 10.10.1.1
10.10.2.0/30 dev vlan1002 proto kernel scope link src 10.10.2.1
172.16.0.0/24 via 10.10.0.2 dev vlan1000
172.16.1.0/24 via 10.10.1.2 dev vlan1001
172.16.2.0/24 via 10.10.2.2 dev vlan1002


pktgen is transmitting packets to this forwarding hosts and generating 
random destinations from ip range:
     pg_set $dev "dst_min 172.16.0.1"
     pg_set $dev "dst_max 172.16.2.255"


So when packets with destination network 172.16.0.0/24 are reaching 
forwarding host then are routed via  10.10.0.2 dev vlan1000
for packets with destination network 172.16.1.0/24 forwarding host 
routing them via 10.10.1.2 dev vlan1001
and last network 172.16.2.0/24 is routed via 10.10.2.2 dev vlan1002


Normally when situation is like this:

ip neigh ls dev vlan1000
10.10.0.2 lladdr ac:1f:6b:2c:18:89 REACHABLE
ip neigh ls dev vlan1001
10.10.1.2 lladdr ac:1f:6b:2c:18:89 REACHABLE
ip neigh ls dev vlan1002
10.10.2.2 lladdr ac:1f:6b:2c:18:89 REACHABLE


There is no problem router is receiving 11Mpps and forwarding then 
equally to vlans:
  bwm-ng v0.6.1 (probing every 1.000s), press 'h' for help
   input: /proc/net/dev type: rate
   -         iface                   Rx Tx                Total
==============================================================================
          vlan1002:            0.00 P/s       3877006.00 P/s 3877006.00 P/s
          vlan1001:            0.00 P/s       3877234.75 P/s 3877234.75 P/s
        enp175s0f0:     11962601.00 P/s             0.00 P/s 11962601.00 P/s
          vlan1000:            0.00 P/s       3862602.00 P/s 3862602.00 P/s
------------------------------------------------------------------------------
             total:     11962601.00 P/s      11616843.00 P/s 23579444.00 P/s



And perf top shows like this:
    PerfTop:  210522 irqs/sec  kernel:99.7%  exact:  0.0% [4000Hz 
cycles],  (all, 56 CPUs)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     26.98%  [kernel]       [k] do_raw_spin_lock
      7.69%  [kernel]       [k] acpi_processor_ffh_cstate_enter
      4.92%  [kernel]       [k] fib_table_lookup
      4.28%  [mlx5_core]    [k] mlx5e_xmit
      4.01%  [mlx5_core]    [k] mlx5e_handle_rx_cqe
      2.71%  [kernel]       [k] virt_to_head_page
      2.21%  [kernel]       [k] tasklet_action
      1.87%  [mlx5_core]    [k] mlx5_eq_int
      1.58%  [kernel]       [k] ipt_do_table
      1.55%  [mlx5_core]    [k] mlx5e_poll_tx_cq
      1.53%  [kernel]       [k] irq_entries_start
      1.48%  [kernel]       [k] __dev_queue_xmit
      1.44%  [kernel]       [k] __build_skb
      1.30%  [mlx5_core]    [k] eq_update_ci
      1.20%  [kernel]       [k] read_tsc
      1.10%  [kernel]       [k] ip_finish_output2
      1.06%  [kernel]       [k] ip_rcv
      1.02%  [kernel]       [k] netif_skb_features
      1.01%  [mlx5_core]    [k] mlx5_cqwq_get_cqe
      0.95%  [kernel]       [k] __netif_receive_skb_core



But when i will disable any vlan on the switch - for example I will do 
this for vlan1002
(Forwarding host is connected thru switch where are vlans to the sink host)
root@...ulus:~# ip link set down dev vlan1002.49
root@...ulus:~# ip link set down dev vlan1002.3
root@...ulus:~# ip link set down dev brtest1002

Wait for fdb to expire on switch.

there is incomplete arp on interface vlan1002
ip neigh ls dev vlan1002
10.10.2.2  INCOMPLETE


pktgen is still pushing traffic with packets that destination network is 
172.16.2.0/24




and we have 100% cpu with pps below:
   bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help
   input: /proc/net/dev type: rate
   |         iface                   Rx Tx                Total
==============================================================================
          vlan1002:            0.00 P/s             1.99 P/s             
1.99 P/s
          vlan1001:            0.00 P/s        717227.12 P/s 717227.12 P/s
        enp175s0f0:      2713679.25 P/s             0.00 P/s 2713679.25 P/s
          vlan1000:            0.00 P/s        716145.44 P/s 716145.44 P/s
------------------------------------------------------------------------------
             total:      2713679.25 P/s       1433374.50 P/s 4147054.00 P/s


with perf top:



    PerfTop:  218506 irqs/sec  kernel:99.7%  exact:  0.0% [4000Hz 
cycles],  (all, 56 CPUs)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     91.45%  [kernel]            [k] queued_spin_lock_slowpath
      1.71%  [kernel]            [k] queued_write_lock_slowpath
      0.46%  [kernel]            [k] ip_finish_output2
      0.44%  [mlx5_core]         [k] mlx5e_handle_rx_cqe
      0.43%  [kernel]            [k] fib_table_lookup
      0.40%  [kernel]            [k] do_raw_spin_lock
      0.35%  [kernel]            [k] __neigh_event_send
      0.33%  [kernel]            [k] dst_release
      0.26%  [kernel]            [k] queued_write_lock
      0.22%  [mlx5_core]         [k] mlx5_cqwq_get_cqe
      0.22%  [mlx5_core]         [k] mlx5e_xmit
      0.19%  [kernel]            [k] virt_to_head_page
      0.18%  [kernel]            [k] page_frag_free
[...]















Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ