In the layered network model, the network layer forwards data packets from source to destination, i.e., it is responsible for providing the host-to-host communication service. Every Internet device contains network layer functionality. The network layer is composed into two parts: the data plane and the control plane.

There are two main functions of the network layer:

  • Forwarding — move packets from a router’s input link to an appropriate router output link.
  • Routing — determine the route taken by packets from source to destination.

The router is a hardware component in each network layer node that examines header fields in all IP datagrams passing through it. It also moves datagrams from input ports to output ports to transfer datagrams along an end-to-end path.

The network layer largely functions on a “best effort” model, i.e., it makes no guarantees on successful datagram delivery, the timing/order of delivery, or the bandwidth available to end-end flow.

Data plane

The data plane is a local, per-router function. It determines how the datagram arriving on the router’s input port is forwarded to the router’s output port.

Control plane

The control plane refers to network-wide logic. It determines how the datagram is routed among routers along an end-to-end path from source host to destination host. There are two control plane approaches.

Routing algorithms

Traditional (distributed) routing algorithms are implemented in routers. In this approach, there are individual routing algorithm components in every router, which interact in the control plane.

One problem with theoretical control plane routing algorithms (Dijkstra’s, Bellman-Ford) is that they do not scale in practice, and that routers aren’t generally unable to store all destinations in routing table (exchanging the routing table would swamp links!).

There is also the consideration of administrative autonomy. Each network admin may want to control routing in its own network (recall the Internet is a network of networks).

Other paradigms

Software-defined networking (SDN) is implemented in remote servers, where the remote controller computes and installs forwarding tables into routers.