This figure is similar to the multi-layer canonical controller in figure 5.15. At the top and outside of the ONOS controller, we see a layer labeled "Network control apps," represented by unlabeled blue ovals. Below this is a dashed line. The top layer of the ONOS controller is labeled "northbound abstractions, protocols," and includes two boxes, labeled (from left to right): "REST API," and "Intent." The middle layer is labeled "ONOS distributed core," and includes seven boxes arranged in two rows. The top row includes (from left to right): "hosts," "paths," and "flow rules." The bottom row includes "devices," "links," and "statistics." A seventh box appears between the two rows to the right: "topology." The bottom layer of the ONOS controller is labeled "southbound abstractions, protocols," and includes eight boxes arranged into two rows. The top row includes (from left to right): "device," "link," "host," "flow," and "packet." The bottom row includes "OpenFlow," "Netconf," and "OVSDB." Below the ONOS controller is a router network.