In the topology JSON structure, the links: object contains only the
inter-switch connections. However, the nodes: object contains the
information needed to map between sFlow agent,ifindex pairs and
OpenFlow dpid,port pairs. e.g.
"nodes": {
"s3": {
"agent": "10.0.0.30",
"dpid": "0000000000000003",
"ports": {
"s3-eth1": {"ifindex": "219"},
"s3-eth2": {"ifindex": "223"},
"s3-eth3": {"ifindex": "211"},
"s3-eth4": {"ifindex": "213"}
},
See
http://blog.sflow.com/2014/04/mininet-integrated-hybrid-openflow.html
This information is sufficient if sFlow-RT is also acting as the
OpenFlow controller since the initial OpenFlow exchange with OVS will
provide the mapping between interface names and OpenFlow port numbers.
If you are using an external OpenFlow controller, then you can pass
the OpenFlow port numbers in the sFlow-RT topology using the ofport
token.
e.g. "s3-eth1": {"ifindex":"219", "ofport":"123"}
If the sFlow agent supports the new OpenFlow extension
(
http://sflow.org/sflow_openflow.txt), then you could omit the nodes
object from the topology since the information in the nodes structure
is included in the sFlow feed. An alternative method of populating the
nodes information with OVS is to make a ovs-vsctl query, see
http://blog.sflow.com/2013/08/northbound-apis-for-traffic-engineering.html
Once sFlow-RT is able to map from sFlow to OpenFlow ports, then it can
access RESTful API's in external OpenFlow controllers and push flow
rules, e.g.
Open Daylight:
http://blog.sflow.com/2014/01/opendaylight.html
Floodlight:
http://blog.sflow.com/2013/12/integrated-hybrid-openflow.html