Re: That works for a simple network
Let me come to the table on this. As a former developer of infrastructure networking equipment scaling from chip architecture to routing protocols as well as feeding my family for 5 years by being a Cisco network engineer and quite successfully to now working as hard as I can to automate out as many low level network consultants as possible.
Interior gateway protocols are long overdue for a refresh. The fact that we still run internal networks as opposed to internal fabrics is absolute proof that companies like Cisco, HP, Juniper, etc... are far out of touch with modern technology. The simple fact that we need IGPs is fundamentally wrong.
We depend on archaic standards like OSPF, IS-IS, EIGRP and RIP for networking and all four of these architectures are absolutely horrible and the only redeeming feature they have is that they're compatible with other vendors and old stuff. OSPFv3 with address family support is possibly the worst thing that ever happened to networking.
As for BGP. Don't get carried away. BGP as a protocol will remain necessary, but it's for the purpose of communicating between WANs. BGP is less of a routing protocol as opposed to a dog pissing on a tree to inform the world who owns which IP addresses. BGP doesn't really route so much as force traffic in a general direction. There are multiple enterprise grade open source BGP implementations out there and there's no reason to make your internal network suck because you are concerned about BGP support.
Peering to the Internet requires edge devices which may or may not speak BGP.
When you design a modern network infrastructure, you can completely disregard inter-vendor operability and design a fabric instead. There's a few things you probably want to do. Instead of inventing new fiber standards, it would be profitable to attempt to depend on commercial SFPs. As for vendor codings, I spent a long time making different vendor's SFPs work with my hardware... those codings actually mean something.
So... consider this. Imagine building a network based mostly on a new design where the entire enterprise is a single fabric. By this, I mean that you have a single router for the entire enterprise. That router is made up of 10-100000 boxes which all speak proprietary protocols and are engineered for simplicity and actually route traffic intelligently... without any switching.
You may think this is unrealistic or stupid, but it's really quite possible to do with far fewer transistors than you would use to support modern standards based layer-2 and layer-3 switching. Eliminate the routing table from your network altogether and instead implement something similar to Cisco's fast-caching forwarding mechanism with centralized databases for IP management.
Then to connect to the outside world, you simply buy a Cisco router or three and connect them at the edges.
I can say with confidence after considerable thought (years) on this topic that there's absolutely no reason this couldn't be much simpler and cleaner than modern networking and while three-tier network design would still make sense... or at least spine-leaf... any partial mesh with no single point of failure would work without any silliness like "you need to aggregate your routing tables to keep your routing table small."... we are long past the point where routing table lookups are O(32 > n > 0) where n = bits complexity. Then route learning via conversational characteristics would keep the per interface FIB small.
So... let's be honest... a developer can see the problem of networking clearly ... especially if they know networking.
A network engineer starts by spouting about how things like BGP are really hard... fine... use it as a boundary and stop filling my network with that crap... buy someone else's box for that or run a Linux box to do it.