Programming has long been a subject for information technology and software guys. Telcos (telecommunication operators), on the other hand, have long been dealing with hardware and related configurations. However, recently we have heard the word ‘programming’ being used in the telco domain as - ‘network programming’, ‘programmable networks’, etc. Programming is traditionally defined as the process of creating a set of instructions that tell a computer how to perform a task. Along the same lines, network programming is the process of creating a set of instructions that tell a ‘network’ how to perform a task. Telcos have long been used to give instructions to individual network elements to do different tasks. This was done in terms of configuring individual network elements - locally or through remote access.
Typical Telco environment
A typical telco environment usually consists of networks, DCs (data centers), IT systems, etc. When a telco delivers a service, the service delivery involves all these areas. So, the question is, can we really program all these areas so that the service is, for example, auto provisioned once the customer requests it through a web portal. Can we really program all the components in the above areas? Certainly not. While we should be able to do some form of programming for the active components, there’s no way we can program the passive components and, generally, we don’t need to program passive components. For example, the last (or first) mile in the access network, which connects the customer premises to the nearest teleco node, requires some sort of media - wired or wireless. While in both cases, the CPE (customer premises equipment) needs to be installed (by the telco or the customer), the wired last mile requires the telco to do a wiring from the node to the customer premises. This is entirely passive and involves wiring, intermediate connectors, distribution points, cabinets etc.
Programmable components
The components which are programmable are usually the active components. These include routers, switches, including the ones in DCs, servers, optical gears, etc. What’s new today is that we take the network as a whole (consists of the network elements (routers, switches, optical gear, etc.) and the interconnections between them spanning across different layers and domains) and program.
How to do network programming?
The main thing that comes to our mind, when it comes to network programming, is SDN or software defined networking. As the name says, we use software to define the network. Not only just define, but also to configure, perform service delivery, and to do everything a network supposed to do. SDN can be used inside DCs, in the WAN (wide area network), in the transport network, and also in the optical domain. With SDN, we can abstract the network/s to a software domain and start programming it as a whole with a holistic view. The APIs (application programming interfaces) across different levels/layers (North-South, East-West) will pass the instructions to the network components to perform the real time configurations.