Per-ifa packet accounting is what is seen in 'netstat -i' output for IPv4/IPv6 addresses.
The main reason besides this change is that new routing API does not return individual route entries anymore (so you need to perform additional ia lookup/ref for accurate IPv4 packet accounting).
However, there are other reasons:
- IPv4 accouting is not always correct (for example, locally-originated TCP traffic w/ source address bound to IPv4 alias would account for 'primary' IPv4 address).
- In IPv6 due to much more complicated SAS already performs addtional ia lookup for non-frag cases which is too costy (lookup + atomic ref/unref) and uses rt_ifa for fragments (which can easily be LL address (e.g. wrong)).
On the other side, precise accounting could easily be implemented using simple (ipfw,pf) set of rules.