> On 20 Apr 2016, at 6:43 PM, Roopa Prabhu <ro...@cumulusnetworks.com> wrote:
> 
> From: Roopa Prabhu <ro...@cumulusnetworks.com>
> 
> This patch adds a new RTM_GETSTATS message to query link stats via netlink
> from the kernel. RTM_NEWLINK also dumps stats today, but RTM_NEWLINK
> returns a lot more than just stats and is expensive in some cases when
> frequent polling for stats from userspace is a common operation.
> 
> RTM_GETSTATS is an attempt to provide a light weight netlink message
> to explicity query only link stats from the kernel on an interface.
> The idea is to also keep it extensible so that new kinds of stats can be
> added to it in the future.
> 
> This patch adds the following attribute for NETDEV stats:
> struct nla_policy ifla_stats_policy[IFLA_STATS_MAX + 1] = {
>        [IFLA_STATS_LINK_64]  = { .len = sizeof(struct rtnl_link_stats64) },
> };
> 
> Like any other rtnetlink message, RTM_GETSTATS can be used to get stats of
> a single interface or all interfaces with NLM_F_DUMP.
> 
> Future possible new types of stat attributes:
> link af stats:
>    - IFLA_STATS_LINK_IPV6  (nested. for ipv6 stats)
>    - IFLA_STATS_LINK_MPLS  (nested. for mpls/mdev stats)
> extended stats:
>    - IFLA_STATS_LINK_EXTENDED (nested. extended software netdev stats like 
> bridge,
>      vlan, vxlan etc)
>    - IFLA_STATS_LINK_HW_EXTENDED (nested. extended hardware stats which are
>      available via ethtool today)

I think that it’s better to have IFLA_STATS_LINK_CPU_ONLY attribute. The 
default stat should be aggregation of HW only packets and packets that got 
trapped to CPU together.

> 
> This patch also declares a filter mask for all stat attributes.
> User has to provide a mask of stats attributes to query. filter mask
> can be specified in the new hdr 'struct if_stats_msg' for stats messages.
> Other important field in the header is the ifindex.
> 
> This api can also include attributes for global stats (eg tcp) in the future.
> When global stats are included in a stats msg, the ifindex in the header
> must be zero. A single stats message cannot contain both global and
> netdev specific stats. To easily distinguish them, netdev specific stat
> attributes name are prefixed with IFLA_STATS_LINK_
> 
> Without any attributes in the filter_mask, no stats will be returned.
> 
> This patch has been tested with mofified iproute2 ifstat.
> 
> Suggested-by: Jamal Hadi Salim <j...@mojatatu.com>
> Signed-off-by: Roopa Prabhu <ro...@cumulusnetworks.com>

Nice work! Thank you Roopa!

Reply via email to