If Twitter is good for nothing else, it can generate a lot of great entertainment. Last Friday, when everyone was unwrapping a new Fruit Company Mobile Telephony Device, a back-and-forth erupted on Twitter between Christofer Hoff (@Beaker) and Brad Hedlund (@BradHedlund). The nature of the discussion started as to whether VXLAN and NVGRE were “standards” or just experimental drafts. Tony Bourke (@TBourke) also chimed in toward the end in regards to proprietary implementations in new data center switching fabrics. As I’ve written a little about the fabric conundrum before, I spent some time thinking about proprietary-ness in general where it applies in the data center. Besides, I had to wait to setup my mobile telephony device, so I had the free time.
To directly answer Tony’s question here, I’m going to have to side with Beaker on this one. Proprietary is very cut and dried. You are either entirely open and run the same implementation with everyone, like OSPF or IS-IS, or you are closed and only play well with your own kind, like EIGRP or IRF. I’ve always been of the mind that proprietary implementations of things aren’t necessarily a bad thing. When you are starting out creating something from scratch or attacking a difficult problem you don’t often have time to think about whether or not the solution will be open and documented for future generations. This is typified by the idea, “Just make it work. I’ll figure out the details later.” All well and good for someone that is creating parts for a hand-made bookcase or designing a specialized tool. Not so great for those that come after you and have to make your new proprietary widget behave with the rest of society.
Standardization is what you get when someone comes in behind you and tries to figure out what you’ve done. Reverse engineering or disassembly help people figure out what you were thinking. Then we take what we’ve learned and try to make that repeatable. We write rules and guidelines that govern the behavior of the standard. This many inches, this voltage input, and so on. The rules help make sure everyone plays nice with each other.
Standards are important for the sake of predictability. Electrical sockets, shoe sizes, and vehicle tire sizes are a great example of why standardization is important. Proprietary tire sizes at best mean that you don’t have much choice in where you buy your product. At worst, you end up with the problems faced in the American Civil War, where the Confederacy was littered with railroad tracks of varying gauge size, which led to an inability to effectively move troops and supplies around the war zone. Not that a routing protocol has anything to do with a bloody civil war, but it does illustrate the point.
In today’s data center, vendors are starting to produce solutions that are more and more proprietary over a larger area. Tony was right in that scale matters. Only it wasn’t in regards to how proprietary a solution is. Instead, think of it in terms of the effect it has on your network. Today, proprietary interfaces between line cards and backplanes mean you can’t put a Brocade card in an HP switch. Previously, our largest scale example was running a routing protocol like EIGRP in the network. If you wanted to put a non-Cisco router somewhere, you were forced to interoperate by adding static routes pointing to your device at the edge of EIGRP or by running a routing protocol like OSPF and doing redistribution. I think the routing protocol example is a great way to illustrate the growing data center fabric trend toward vendor happiness. I’m going to pick on EIGRP here since it is the most obvious example of a proprietary protocol.
If you’ve only ever bought Cisco equipment in your network and need to run a routing protocol, EIGRP is an easy choice. It’s simple to configure and runs with little intervention. Kind of “set it and forget it” operation. That doesn’t change so long as everything is Cisco. The first Brocade switch you buy, however, is going to cause some issues. If you want to simply send traffic to that network, you can plug in static routes. Not an elegant or scalable solution, but it does work. If you want to address scalability, you can look at reconfiguring your network to use the standard OSPF routing protocol. That could take days or weeks to accomplish. You would also have to learn a new protocol. The investment of time to be standardized would probably be insurmountable. The last option is to interoperate via redistribution. By running OSPF on your Brocade switch and redistributing it into EIGRP you can achieve a stable network topology. You lose EIGRP-specific benefits when you move into the OSPF area (and vice versa) but everything works. Depending on your level of unease with this solution, you might even be tempted to avoid buying the Brocade switch and just stick with Cisco. That way, all you have to do is turn up EIGRP and keep on running.
In the same way in a data center, once a large fabric is implemented, you have specific benefits that a particular vendor’s solution provides. When you want to make your fabric talk to another fabric, you have to strip out the extra “goodies” and send that packet over to the other side. Much like creating an ASBR in OSPF, this isn’t necessarily a fun job. You’re going to lose functionality when that transition is made. Maybe the packets are switched a fraction of a second slower. Maybe the routing lookups take half a second more. The idea is that you will look at the complexity of interoperating and decide it’s not worth the hassle. Instead, you’ll just keep buying the vendor’s fabric solutions no matter how proprietary they may be. Because you want things to just work. There’s nothing malicious or vindictive on the vendor’s part. They are selling the best product they can. They are offering you the option of interoperating.
Remember that interoperating isn’t like running a standard protocol across your network like OSPF. It’s consciously deciding to create a point of demarcation for the purposes of making nice with someone else’s proprietary ideas. It’s messy to setup and a pain to manage. But it’s not vendor lock-in, right? So we learn to live with large-scale proprietary-ness with small connections of interoperability for the sake of simplicity.
Having something be proprietary isn’t bad. Think of a finely tailored suit. Totally custom made and well worth it. The key is to understand what being proprietary means to you and your network. You must realize that you are going to commit extra resources one way or another. You commit them in the form of capital by being beholden to a specific vendor for their equipment that works best with it’s own kind. The other method is to save capital resources and instead expend time and effort making all the solutions work together for the good of the data center. Either way, there is an opportunity cost associated. Some Network Rock Stars are perfectly happy buying everything from Vendor X. Others chafe at the idea of being indentured to any one vendor and would rather spend their time tweaking knobs and switches to make everything run as efficiently as possible despite being heterogeneous. One isn’t necessarily better than the other. They key is to recognize which is better for you and your network and act accordingly.