On Mon, Jan 03, 2022 at 08:35:24AM -0500, Dan Cross wrote:
(No
matter that Solaris 2 was a major step *backwards* in terms of
performance and stability compared to Sun OS....)
That it was, at least initially. It's actually pretty good now, but it
took a _long_ time to get there, and the forced incompatibilities
caused a lot of pain in the process, which was my original thesis.
Even now, though, I find some things gratuitously different than other
versions of Unix (network administration, for example). Managing NFS
is still something of a mystery to me.
Yeah, to be fair, by the time Solaris 2.3 or 2.4 came around, it was
mostly up to par. (Or maybe it was because Moore's law meant that we
didn't care any more. :-)
Are there _distros_ that don't supply those
things? Probably; I really
have no idea. Are there mainstream distros that do not? I doubt it.
However, they have to be installed, which is an additional step that
has to at least be accounted for. At scale, that's a pain: I imagine
that if, say, Google wanted to move to `ip` in lieu of `ifconfig` et
al in prod, it would be a multiyear process, including sunsetting the
older tools. Just identifying every use of `ifconfig` in a shell
script somewhere would be a pretty major undertaking.
Sure, but there's no *point* to sunset the old tools. The git tree
for net-tools is still being actively developed (the last commit was
dated December 12, 2021). And the kernel interfaces are not going to
be disappear, because of the prime directive: Thou Shalt Not Break
Userspace.
The reason why
ip and ss were added was because there was a
significant amount of new functionality that was added to the Linux
networking stack (especially relating to routing and address aliasing)
that couldn't be expressed using the older C programming interfaces as
well as the ifconfig/route shell commands.
Surely the programmatic interfaces are separate from their realization
in a tool? I can understand the rigidity of some `ioctl` based
interface that's a pain to work around; I find it harder to believe
that plugging some other interface into `ifconfig` in a relatively
graceful way is untractible. Surely, in the limit, one could extend
ifconfig with a new verb as the first positional argument that expands
to the argument set of `ip`: `ifconfig ip address ...` etc. Maybe that
was considered and rejected by the maintainers.
Well, take a look at the ip-route man page. The BSD route command
assumes fundamentally there is a single routing table that you can
update. In Linux, there are multiple routing tables --- to support
NAT, VRF (virtual routing and forwarding), etc.
I suspect the other consideration was that all of this extra
functionality and complexity were done by folks who wanted the Linux
networking stack to essentially have pretty much all of the
functionality of a Cisco Router. So it made sense to create a new
user interface interface that was inspired by the Cisco IOS
configuration language. Now, if you weren't trying to do something
ala a router in the default-free zone, and were just simply doing what
most leaf nodes on the internet (99.99999% of the hosts), there really
is no reason to need to use the ip/ss interface. For that matter, you
probably don't need to use ifconfig/route --- just let the DHCP client
server of your choice take care of setting up the network, and you're
done.
Well, you kind of have. It's a small thing to
install another package,
sure, but still something that must be done if you want the old tools.
That's a distro-level choice. And for most users, their networking is
automatically brought up using NetworkManager, or some such, so they
probably don't care. And it's not like installing a package is that
painful. I don't see users of say, mysql complaining that they have
to install that package should they want to use it.
I'm old school, and since I generally tend to install BIND, that will
drag in net-tools as dependency, so all my systems have ifconfig
installed. But I'm not going to have a lot of sympathy for someone
who thinks that "sudo apt-get install net-tools" is massive
inconvenience.
- Ted