> "ip addr show" lists interfaces and their stats. It's harder to read than ifconfig -a but gives you the same information in a similar format.
> "ip route show" replaces netstat -rn to show the routing table but is also not as well formatted as the old command.
> So basically it combines a bunch of commands (including ifconfig) into one and gives them all a unified interface.
To me sounds like same but worse, and combining 10 commands into 1 seems to be totally against the unix philosophy "it should do one thing, and do it properly"
The "one thing" ip essentially does is working with NETLINK_ROUTE protocol; it is relatively thin wrapper exposing that to shell.
v6 works like v4, arp and ndp work the same (down to subcommand to invoke them: they're under "neighbor") everything uses the same verbiage: add/delete/change/set.
none of this sillyness where you need one command to show the routing table 'netstat -rn' and another to manipulate the routing table 'route add/delete/change' (and then v4 uses -mask and v6 uses -prefixlen, etc etc)
Flattening everything and then making it available through the 'verb' syntax is an absolute joy to work with, especially if you're doing time sensitive work or trying to debug a test setup.
The CLI flows like a language, and you find yourself guessing at new "phrases" that very often _don't_ summon demons and actually do what you expected. I like it so much, I emulate it whenever it makes sense to do so for my own CLI tools.
`ip` is ugly (especially it's help system or more like lack of it) but works and pretty consistent.
As a network engineer pre-ip linux was a disaster, while ip is a joy to work with.
I only have limited knowledge about netlink, all coming from a devsummit presentation by Alexander, but it seems like an actually good generic kernel interface to have.
NB: my experience specifically relates to C. Protobuf's bindings to other languages are better.
To me, the main advantage of netlink is the multicast mode, where you can subscribe to certain class of events. e.g. route add, neighbor add, etc.
Also, a lot of linux software for the networking domain interfaces with netlink, so they gain freebsd compatibility for, well, free. For example, you get FRR compat now.