1 .. _ofconfig-dev-guide:
3 OF-CONFIG Developer Guide
4 =========================
9 OF-CONFIG defines an OpenFlow switch as an abstraction called an
10 OpenFlow Logical Switch. The OF-CONFIG protocol enables configuration of
11 essential artifacts of an OpenFlow Logical Switch so that an OpenFlow
12 controller can communicate and control the OpenFlow Logical switch via
13 the OpenFlow protocol. OF-CONFIG introduces an operating context for one
14 or more OpenFlow data paths called an OpenFlow Capable Switch for one or
15 more switches. An OpenFlow Capable Switch is intended to be equivalent
16 to an actual physical or virtual network element (e.g. an Ethernet
17 switch) which is hosting one or more OpenFlow data paths by partitioning
18 a set of OpenFlow related resources such as ports and queues among the
19 hosted OpenFlow data paths. The OF-CONFIG protocol enables dynamic
20 association of the OpenFlow related resources of an OpenFlow Capable
21 Switch with specific OpenFlow Logical Switches which are being hosted on
22 the OpenFlow Capable Switch. OF-CONFIG does not specify or report how
23 the partitioning of resources on an OpenFlow Capable Switch is achieved.
24 OF-CONFIG assumes that resources such as ports and queues are
25 partitioned amongst multiple OpenFlow Logical Switches such that each
26 OpenFlow Logical Switch can assume full control over the resources that
32 - start OF-CONFIG feature as below:
36 feature:install odl-of-config-all
38 Compatible with NETCONF
39 -----------------------
41 - Config OpenFlow Capable Switch via OpenFlow Configuration Points
46 http://localhost:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount/config:modules
48 Headers: Content-Type" and "Accept" header attributes set to
55 <module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
56 <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type>
58 <address xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">10.74.151.67</address>
59 <port xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">830</port>
60 <username xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">mininet</username>
61 <password xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">mininet</password>
62 <tcp-only xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">false</tcp-only>
63 <event-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
64 <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netty">prefix:netty-event-executor</type>
65 <name>global-event-executor</name>
67 <binding-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
68 <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-broker-osgi-registry</type>
69 <name>binding-osgi-broker</name>
71 <dom-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
72 <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">prefix:dom-broker-osgi-registry</type>
73 <name>dom-broker</name>
75 <client-dispatcher xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
76 <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:netconf">prefix:netconf-client-dispatcher</type>
77 <name>global-netconf-dispatcher</name>
79 <processing-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
80 <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:threadpool</type>
81 <name>global-netconf-processing-executor</name>
82 </processing-executor>
85 - NETCONF establishes the connections with OpenFlow Capable Switches
86 using the parameters in the previous step. NETCONF also gets the
87 information of whether the OpenFlow Switch supports NETCONF during
88 the signal handshaking. The information will be stored in the NETCONF
89 topology as prosperity of a node.
91 - OF-CONFIG can be aware of the switches accessing and leaving by
92 monitoring the data changes in the NETCONF topology. For the detailed
93 information it can be refered to the
94 `implementation <https://git.opendaylight.org/gerrit/gitweb?p=of-config.git;a=blob_plain;f=southbound/southbound-impl/src/main/java/org/opendaylight/ofconfig/southbound/impl/OdlOfconfigApiServiceImpl.java;hb=refs/heads/stable/boron>`__.
96 The establishment of OF-CONFIG topology
97 ---------------------------------------
99 Firstly, OF-CONFIG will check whether the newly accessed switch supports
100 OF-CONFIG by querying the NETCONF interface.
102 1. During the NETCONF connection’s establishment, the NETCONF and the
103 switches will exchange the their capabilities via the "hello"
106 2. OF-CONFIG gets the connection information between the NETCONF and
107 switches by monitoring the data changes via the interface of
110 3. After the NETCONF connection established, the OF-CONFIG module will
111 check whether OF-CONFIG capability is in the switch’s capabilities
112 list which is got in step 1.
114 4. If the result of step 3 is yes, the OF-CONFIG will call the following
115 processing steps to create the topology database.
117 For the detailed information it can be referred to the
118 `implementation <https://git.opendaylight.org/gerrit/gitweb?p=of-config.git;a=blob_plain;f=southbound/southbound-impl/src/main/java/org/opendaylight/ofconfig/southbound/impl/listener/OfconfigListenerHelper.java;hb=refs/heads/stable/boron>`__.
120 Secondly, the capable switch node and logical switch node are added in
121 the OF-CONFIG topology if the switch supports OF-CONFIG.
123 OF-CONFIG’s topology compromise: Capable Switch topology (underlay) and
124 logical Switch topology (overlay). Both of them are enhanced (augment)
127 /topo:network-topology/topo:topology/topo:node
129 The NETCONF will add the nodes in the Topology via the path of
130 "/topo:network-topology/topo:topology/topo:node" if it gets the
131 configuration information of the switches.
133 For the detailed information it can be referred to the
134 `implementation <https://git.opendaylight.org/gerrit/gitweb?p=of-config.git;a=blob;f=southbound/southbound-api/src/main/yang/odl-ofconfig-topology.yang;h=dbdaec46ee59da3791386011f571d7434dd1e416;hb=refs/heads/stable/boron>`__.