• David Ahern's avatar
    netdevsim: Add simple FIB resource controller via devlink · 37923ed6
    David Ahern authored
    Add devlink support to netdevsim and use it to implement a simple,
    profile based resource controller. Only one controller is needed
    per namespace, so the first netdevsim netdevice in a namespace
    registers with devlink. If that device is deleted, the resource
    settings are deleted.
    
    The resource controller allows a user to limit the number of IPv4 and
    IPv6 FIB entries and FIB rules. The resource paths are:
        /IPv4
        /IPv4/fib
        /IPv4/fib-rules
        /IPv6
        /IPv6/fib
        /IPv6/fib-rules
    
    The IPv4 and IPv6 top level resources are unlimited in size and can not
    be changed. From there, the number of FIB entries and FIB rule entries
    are unlimited by default. A user can specify a limit for the fib and
    fib-rules resources:
    
        $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib size 96
        $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib-rules size 16
        $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib size 64
        $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib-rules size 16
        $ devlink dev reload netdevsim/netdevsim0
    
    such that the number of rules or routes is limited (96 ipv4 routes in the
    example above):
        $ for n in $(seq 1 32); do ip ro add 10.99.$n.0/24 dev eth1; done
        Error: netdevsim: Exceeded number of supported fib entries.
    
        $ devlink resource show netdevsim/netdevsim0
        netdevsim/netdevsim0:
          name IPv4 size unlimited unit entry size_min 0 size_max unlimited size_gran 1 dpipe_tables non
            resources:
              name fib size 96 occ 96 unit entry size_min 0 size_max unlimited size_gran 1 dpipe_tables
        ...
    
    With this template in place for resource management, it is fairly trivial
    to extend and shows one way to implement a simple counter based resource
    controller typical of network profiles.
    
    Currently, devlink only supports initial namespace. Code is in place to
    adapt netdevsim to a per namespace controller once the network namespace
    issues are resolved.
    Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    37923ed6
netdev.c 11.1 KB