On Mon, Jan 3, 2022 at 1:24 PM Theodore Ts'o <tytso@mit.edu> wrote:
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.  :-)

For my corner of the world, 2.3 was stable enough to run in production. 2.4
was fast enough :)
 
> 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.

The 4.4BSD route command does this. The various BSDs now support multiple
routing tables through an evolved interface...
 
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.

True. The vast majority of installs today are just "use DHCP and be happy"
though somebody has to run the dhcp server :)
 
> 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.

For machines you manage, sure. It's easy. Try it with the linksys
router you can log into and it starts to get much harder... though
with those loading new firmware isn't super hard.

Warner