libnetwork implements a container network model (CNM). It formalizes the steps required to provide networking for containers, while providing an abstraction that can be used to support multiple network drivers. Its endpoint APIs are primarily used for managing the corresponding object and book-keeps them in order to provide a level of abstraction as required by the CNM model.
The CNM is built on three main components. The following figure shows the network sandbox model of libnetwork: