What is KISS Principle ? Okay it stands for Keep it Simple and Stupid but what does really it mean in networking ?
Can we really make things simpler ?. Probably yes but should we ?
Let’s remember What Einstein said about simplicity.
” Everything should be made as simple as possible, but no simpler ”
It is very long debate what really Einstein was trying to say and unfortunately since He is dead, we can’t ask himself but at least let’s try to understand.
If ‘A represents a process, and ‘A***’ represents the simplest possible version of ‘A’, then one should work towards finding ‘A***’, and not towards an intermediate version ‘A**’ or ‘A*.
From this example, as you can understand, most possible simplicity is recommended by Einstein.
How we can adapt Einstein’s simplicity principle to networking ?
Let’s think about routing protocols.
In a small OSPF network, imagine you have 1 datacenter and 20 branch offices. And totally you have 22 routers, 2 in DC and 1 in each branch office.
Let me give you design options.
1. You can deploy in datacenter and each and every branch , different OSPF processes, and you deal with the redistribution because you use different OSPF processes in different places of network
2. You can place datacenter in OSPF Backbone area and each and every branch in separate Area, you deal with multiple areas, 21 different OSPF area in this case
3. You can place datacenter in OSPF Backbone area and all branches in same non-backbone area. You have totally two OSPF areas and 2 ABRs.
4. You can place datacenter and all the branch offices in a backbone area. No multiple OSPF area , No ABR
First option is most complex and it is unnecessarily complex. Second option is less complex than third one and fourth option is the least complex. In other word, fourth option is simplest option.
Of course, complexity is necessary in some cases to solve particular problem as I explained in my ‘Network Complexity’ article, for the above requirements (1 DC , 20 branches, 22 routers), it is best to place all routers in one backbone area.
KISS Principle recommend the same what Einstein is recommending with his quote and goes beyond.
Keep it simple part of the KISS principle has the same meaning with Einstein’s quote.
Stupid part comes from the idea of having dump core devices and smart edge devices.
In fact, I wrote an article on the subject and highlighted that ‘Edge devices are the brain of the network’
Remember in three layer architecture , access , aggregation and core. What was the job of each layer ?
Access layer is used for user/device termination , policy enforcement , trust boundary, filtering and so on.
Aggregation layer is used speed multiplexing , providing scalability for overall network by preventing excess amount of connection.
Core layer is used to pass traffic between each and every point in the network , as fast as possible, if it is possible, without any policy enforcement.
Of course, bigger size of networks (MNOs for example) use 4 even 5 layers as of 2017 but it doesn’t change the role of core/backbone layer.
Stupid part of KISS principle actually mean, keeping the intelligent functions away from core/backbone of the networks. As an example, in MPLS network, Core devices only swap the label, but edge devices runs MP-BGP, VRFs, layer 2protocols or Routing with the customers, QoS and security functions and so on.
What I see in the networking field, what most people do, is to read, watch materials on the topic , just modify it a little but and publish it as their own. Later on, after couple years another people research the same topic and repeat the same.
This goes on. But instead, if people think multiple steps ahead and design the things in the simple way possible, so no more modifications can be possible by anyone else in the future.
Keep it simple and Stupid is very important and you should remember this principle , Einstein, Stupid Core Networks and Orhan Ergun whenever you design any communication network.