Merge "Create Distribution Version chapter of developer guide" into stable/boron
[docs.git] / docs / developer-guide / atrium-developer-guide.rst
1 Atrium Developer Guide
2 ======================
3
4 Overview
5 --------
6
7 Project Atrium is an open source SDN distribution - a vertically
8 integrated set of open source components which together form a complete
9 SDN stack. It’s goals are threefold:
10
11 -  Close the large integration-gap of the elements that are needed to
12    build an SDN stack - while there are multiple choices at each layer,
13    there are missing pieces with poor or no integration.
14
15 -  Overcome a massive gap in interoperability - This exists both at the
16    switch level, where existing products from different vendors have
17    limited compatibility, making it difficult to connect an arbitrary
18    switch and controller and at an API level, where its difficult to
19    write a portable application across multiple controller platforms.
20
21 -  Work closely with network operators on deployable use-cases, so that
22    they could download near production quality code from one location,
23    and get started with functioning software defined networks on real
24    hardware.
25
26 Architecture
27 ------------
28
29 The key components of Atrium BGP Peering Router Application are as
30 follows:
31
32 -  Data Plane Switch - Data plane switch is the entity that uses flow
33    table entries installed by BGP Routing Application through SDN
34    controller. In the simplest form data plane switch with the installed
35    flows act like a BGP Router.
36
37 -  OpenDaylight Controller - OpenDaylight SDN controller has many
38    utility applications or plugins which are leveraged by the BGP Router
39    application to manage the control plane information.
40
41 -  BGP Routing Application - An application running within the
42    OpenDaylight runtime environment to handle I-BGP updates.
43
44 -  `DIDM <#_didm_developer_guide>`__ - DIDM manages the drivers specific
45    to each data plane switch connected to the controller. The drivers
46    are created primarily to hide the underlying complexity of the
47    devices and to expose a uniform API to applications.
48
49 -  Flow Objectives API - The driver implementation provides a pipeline
50    abstraction and exposes Flow Objectives API. This means applications
51    need to be aware of only the Flow Objectives API without worrying
52    about the Table IDs or the pipelines.
53
54 -  Control Plane Switch - This component is primarily used to connect
55    the OpenDaylight SDN controller with the Quagga Soft-Router and
56    establish a path for forwarding E-BGP packets to and from Quagga.
57
58 -  Quagga soft router - An open source routing software that handles
59    E-BGP updates.
60
61 Key APIs and Interfaces
62 -----------------------
63
64 BGP Routing Configuration
65 ~~~~~~~~~~~~~~~~~~~~~~~~~
66
67 The BGP Routing Configuration maintains information about its BGP
68 Speakers & BGP Peers.
69
70 -  Configuration data about BGP speakers can be accessed from the below
71    URL:
72
73    ::
74
75        GET http://<controller_ip>:8181/restconf/config/bgpconfig:bgpSpeakers/
76
77 -  Configuration data about BGP peers can be accessed from the below
78    URL:
79
80    ::
81
82        GET http://<controller_ip>:8181/restconf/config/bgpconfig:bgpPeers/
83
84 Host Service
85 ~~~~~~~~~~~~
86
87 Host Service API contains the host specific details that can be used
88 during address resolution
89
90 -  Host specific data can be accessed by using the below REST request:
91
92    ::
93
94        GET http://<controller_ip>:8181/restconf/config/hostservice-api:addresses/
95
96 BGP Routing Information Base
97 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98
99 The BGP RIB module stores all the route information that it has learnt
100 from its peers.
101
102 -  Routing Information Base entries can be accessed from the URL below:
103
104    ::
105
106        GET http://<controller_ip>:8181/restconf/operational/bgp-rib:bgp-rib/
107
108 Forwarding Information Base
109 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
110
111 The Forwarding Information Base is used to keep track of active FIB
112 entries.
113
114 -  FIB entries can be accessed from the URL below:
115
116    ::
117
118        GET http://<controller_ip>:8181/restconf/config/routingservice-api:fibEntries/
119