Fix broken links
[docs.git] / docs / developer-guide / sxp-developer-guide.rst
1 .. _sxp-dev-guide:
2
3 SXP Developer Guide
4 ===================
5
6 Overview
7 --------
8
9 SXP (Scalable-Group Tag eXchange Protocol) project is an effort to enhance
10 OpenDaylight platform with IP-SGT (IP Address to Source Group Tag)
11 bindings that can be learned from connected SXP-aware network nodes. The
12 current implementation supports SXP protocol version 4 according to the
13 Smith, Kandula - SXP `IETF
14 draft <https://tools.ietf.org/html/draft-smith-kandula-sxp-06>`__ and
15 grouping of peers and creating filters based on ACL/Prefix-list syntax
16 for filtering outbound and inbound IP-SGT bindings. All protocol legacy
17 versions 1-3 are supported as well. Additionally, version 4 adds
18 bidirectional connection type as an extension of a unidirectional one.
19
20 SXP Architecture
21 ----------------
22
23 The SXP Server manages all connected clients in separate threads and a
24 common SXP protocol agreement is used between connected peers. Each SXP
25 network peer is modelled with its pertaining class, e.g., SXP Server
26 represents the SXP Speaker, SXP Listener the Client. The server program
27 creates the ServerSocket object on a specified port and waits until a
28 client starts up and requests connect on the IP address and port of the
29 server. The client program opens a Socket that is connected to the
30 server running on the specified host IP address and port.
31
32 The SXP Listener maintains connection with its speaker peer. From an
33 opened channel pipeline, all incoming SXP messages are processed by
34 various handlers. Message must be decoded, parsed and validated.
35
36 The SXP Speaker is a counterpart to the SXP Listener. It maintains a
37 connection with its listener peer and sends composed messages.
38
39 The SXP Binding Handler extracts the IP-SGT binding from a message and
40 pulls it into the SXP-Database. If an error is detected during the
41 IP-SGT extraction, an appropriate error code and sub-code is selected
42 and an error message is sent back to the connected peer. All transitive
43 messages are routed directly to the output queue of SXP Binding
44 Dispatcher.
45
46 The SXP Binding Dispatcher represents a selector that will decides how
47 many data from the SXP-database will be sent and when. It is responsible
48 for message content composition based on maximum message length.
49
50 The SXP Binding Filters handles filtering of outgoing and incoming
51 IP-SGT bindings according to BGP filtering using ACL and Prefix List
52 syntax for specifying filter or based on Peer-sequence length.
53
54 The SXP Domains feature provides isolation of SXP peers and bindings
55 learned between them, also exchange of Bindings is possible across
56 SXP-Domains by ACL, Prefix List or Peer-Sequence filters
57
58 Key APIs and Interfaces
59 -----------------------
60
61 As this project is fairly small, it provides only few features that
62 install and provide all APIs and implementations for this project.
63
64 -  sxp-api
65
66 -  spx-core
67
68 -  sxp-controller
69
70 -  sxp-cluster-route
71
72 -  sxp-karaf
73
74 -  sxp-robot
75
76 -  sxp-system-tests
77
78 sxp-api
79 ~~~~~~~
80
81 Contains data holders and entities
82
83 spx-core
84 ~~~~~~~~
85
86 Main logic and core features
87
88 sxp-controller
89 ~~~~~~~~~~~~~~
90
91 RPC request handling
92
93 sxp-cluster-route
94 ~~~~~~~~~~~~~~~~~
95
96 Performs managing of SXP devices in cluster environment
97
98 sxp-karaf
99 ~~~~~~~~~
100
101 Defines Karaf4 dependencies
102
103 sxp-robot
104 ~~~~~~~~~
105
106 Contains JRobot libraries used in `CSIT Robot tests <https://jenkins.opendaylight.org/releng/view/sxp/>`__
107
108 sxp-system-tests
109 ~~~~~~~~~~~~~~~~
110
111 Contains REST client used for testing purposes
112
113 API Reference Documentation
114 ---------------------------
115
116 * `RESTCONF Interface and Dynamic Tree <https://wiki.opendaylight.org/images/9/91/SXP_Restconf_Interface_and_Dynamic_Tree.pdf>`__
117 * `Specification and Architecture <https://wiki.opendaylight.org/images/4/44/SXP_Specification_and_Architecture_v05.pdf>`__