3 Network Intent Composition (NIC) User Guide
4 ===========================================
9 Network Intent Composition (NIC) is an interface that allows clients to
10 express a desired state in an implementation-neutral form that will be
11 enforced via modification of available resources under the control of
12 the OpenDaylight system.
14 This description is purposely abstract as an intent interface might
15 encompass network services, virtual devices, storage, etc.
17 The intent interface is meant to be a controller-agnostic interface so
18 that "intents" are portable across implementations, such as OpenDaylight
19 and ONOS. Thus an intent specification should not contain implementation
20 or technology specifics.
22 The intent specification will be implemented by decomposing the intent
23 and augmenting it with implementation specifics that are driven by local
24 implementation rules, policies, and/or settings.
26 Network Intent Composition (NIC) Architecture
27 ---------------------------------------------
29 The core of the NIC architecture is the intent model, which specifies
30 the details of the desired state. It is the responsibility of the NIC
31 implementation transforms this desired state to the resources under the
32 control of OpenDaylight. The component that transforms the intent to the
33 implementation is typically referred to as a renderer.
35 For the Boron release, multiple, simultaneous renderers will not be
36 supported. Instead either the VTN or GBP renderer feature can be
37 installed, but not both.
39 For the Boron release, the only actions supported are "ALLOW" and
40 "BLOCK". The "ALLOW" action indicates that traffic can flow between the
41 source and destination end points, while "BLOCK" prevents that flow;
42 although it is possible that an given implementation may augment the
43 available actions with additional actions.
45 Besides transforming a desired state to an actual state it is the
46 responsibility of a renderer to update the operational state tree for
47 the NIC data model in OpenDaylight to reflect the intent which the
50 Configuring Network Intent Composition (NIC)
51 --------------------------------------------
53 For the Boron release there is no default implementation of a renderer,
54 thus without an additional module installed the NIC will not function.
56 Administering or Managing Network Intent Composition (NIC)
57 ----------------------------------------------------------
59 There is no additional administration of management capabilities related
60 to the Network Intent Composition features.
65 A user can interact with the Network Intent Composition (NIC) either
66 through the RESTful interface using standard RESTCONF operations and
67 syntax or via the Karaf console CLI.
75 The Network Intent Composition (NIC) feature supports the following REST
76 operations against the configuration data store.
78 - POST - creates a new instance of an intent in the configuration
79 store, which will trigger the realization of that intent. An ID
80 *must* be specified as part of this request as an attribute of the
83 - GET - fetches a list of all configured intents or a specific
86 - DELETE - removes a configured intent from the configuration store,
87 which triggers the removal of the intent from the network.
92 The Network Intent Composition (NIC) feature supports the following REST
93 operations against the operational data store.
95 - GET - fetches a list of all operational intents or a specific
101 This feature provides karaf console CLI command to manipulate the intent
102 data model. The CLI essentailly invokes the equivalent data operations.
107 Creates a new intent in the configuration data tree
114 Adds an intent to the controller.
116 Examples: --actions [ALLOW] --from <subject> --to <subject>
117 --actions [BLOCK] --from <subject>
124 Action to be performed.
125 -a / --actions BLOCK/ALLOW
126 (defaults to [BLOCK])
128 Display this help message
135 -f / --from <subject>
141 Removes an existing intent from the system
148 Removes an intent from the controller.
159 Lists all the intents in the system
166 Lists all intents in the controller.
169 intent:list [options]
173 List Configuration Data (optional).
174 -c / --config <ENTER>
176 Display this help message
181 Displayes the details of a single intent
188 Shows detailed information about an intent.
199 List/Add/Delete current state from/to the mapping service.
206 List/Add/Delete current state from/to the mapping service.
211 Examples: --list, -l [ENTER], to retrieve all keys.
212 --add-key <key> [ENTER], to add a new key with empty contents.
213 --del-key <key> [ENTER], to remove a key with it's values."
214 --add-key <key> --value [<value 1>, <value 2>, ...] [ENTER],
215 to add a new key with some values (json format).
218 Display this help message
220 List values associated with a particular key.
221 -l / --filter <regular expression> [ENTER]
223 Adds a new key to the mapping service.
224 --add-key <key name> [ENTER]
226 Specifies which value should be added/delete from the mapping service.
227 --value "key=>value"... --value "key=>value" [ENTER]
230 Deletes a key from the mapping service.
231 --del-key <key name> [ENTER]
239 Start mininet, and create three switches (s1, s2, and s3) and four hosts
240 (h1, h2, h3, and h4) in it.
242 Replace <Controller IP> based on your environment.
246 $ sudo mn --mac --topo single,2 --controller=remote,ip=<Controller IP>
255 s1 lo: s1-eth1:s2-eth3 s1-eth2:s3-eth3
256 s2 lo: s2-eth1:h1-eth0 s2-eth2:h2-eth0 s2-eth3:s1-eth1
257 s3 lo: s3-eth1:h3-eth0 s3-eth2:h4-eth0 s3-eth3:s1-eth2
259 Downloading and deploy Karaf distribution
260 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
262 - Get the Boron distribution.
264 - Unzip the downloaded zip distribution.
272 - Once the console is up, type as below to install feature.
276 feature:install odl-nic-core-mdsal odl-nic-console odl-nic-listeners
278 Simple Mininet topology
279 -----------------------
285 from mininet.topo import Topo
287 class SimpleTopology( Topo ):
288 "Simple topology example."
290 def __init__( self ):
291 "Create custom topo."
294 Topo.__init__( self )
297 Switch1 = self.addSwitch( 's1' )
298 Switch2 = self.addSwitch( 's2' )
299 Switch3 = self.addSwitch( 's3' )
300 Switch4 = self.addSwitch( 's4' )
301 Host11 = self.addHost( 'h1' )
302 Host12 = self.addHost( 'h2' )
303 Host21 = self.addHost( 'h3' )
304 Host22 = self.addHost( 'h4' )
305 Host23 = self.addHost( 'h5' )
306 Service1 = self.addHost( 'srvc1' )
309 self.addLink( Host11, Switch1 )
310 self.addLink( Host12, Switch1 )
311 self.addLink( Host21, Switch2 )
312 self.addLink( Host22, Switch2 )
313 self.addLink( Host23, Switch2 )
314 self.addLink( Switch1, Switch2 )
315 self.addLink( Switch2, Switch4 )
316 self.addLink( Switch4, Switch3 )
317 self.addLink( Switch3, Switch1 )
318 self.addLink( Switch3, Service1 )
319 self.addLink( Switch4, Service1 )
322 topos = { 'simpletopology': ( lambda: SimpleTopology() ) }
324 - Initialize topology
326 - Add hosts and switches
328 - Host used to represent the service
332 Source: https://gist.github.com/vinothgithub15/315d0a427d5afc39f2d7
334 How to configure VTN Renderer
335 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
337 The section demonstrates allow or block packets of the traffic within a
338 VTN Renderer, according to the specified flow conditions.
340 The table below lists the actions to be applied when a packet matches
343 +----------------+-----------------------------------------------------------+
344 | Action | Function |
345 +================+===========================================================+
346 | Allow | Permits the packet to be forwarded normally. |
347 +----------------+-----------------------------------------------------------+
348 | Block | Discards the packet preventing it from being forwarded. |
349 +----------------+-----------------------------------------------------------+
354 - Before execute the follow steps, please, use default requirements.
355 See section `Default Requirements <#_default_requirements>`__.
360 Please execute the following curl commands to test network intent using
366 To provision the network for the two hosts(h1 and h2) and demonstrates
371 curl -v --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://localhost:8181/restconf/config/intent:intents/intent/b9a13232-525e-4d8c-be21-cd65e3436034 -d '{ "intent:intent" : { "intent:id": "b9a13232-525e-4d8c-be21-cd65e3436034", "intent:actions" : [ { "order" : 2, "allow" : {} } ], "intent:subjects" : [ { "order":1 , "end-point-group" : {"name":"10.0.0.1"} }, { "order":2 , "end-point-group" : {"name":"10.0.0.2"}} ] } }'
373 To provision the network for the two hosts(h2 and h3) and demonstrates
378 curl -v --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://localhost:8181/restconf/config/intent:intents/intent/b9a13232-525e-4d8c-be21-cd65e3436035 -d '{ "intent:intent" : { "intent:id": "b9a13232-525e-4d8c-be21-cd65e3436035", "intent:actions" : [ { "order" : 2, "allow" : {} } ], "intent:subjects" : [ { "order":1 , "end-point-group" : {"name":"10.0.0.2"} }, { "order":2 , "end-point-group" : {"name":"10.0.0.3"}} ] } }'
383 As we have applied action type allow now ping should happen between
384 hosts (h1 and h2) and (h2 and h3).
389 Ping: testing ping reachability
398 To provision block action that indicates traffic is not allowed between
403 curl -v --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://localhost:8181/restconf/config/intent:intents/intent/b9a13232-525e-4d8c-be21-cd65e3436034 -d '{ "intent:intent" : { "intent:id": "b9a13232-525e-4d8c-be21-cd65e3436034", "intent:actions" : [ { "order" : 2, "block" : {} } ], "intent:subjects" : [ { "order":1 , "end-point-group" : {"name":"10.0.0.1"} }, { "order":2 , "end-point-group" : {"name":"10.0.0.2"}} ] } }'
408 As we have applied action type block now ping should not happen between
414 Ping: testing ping reachability
422 Old actions and hosts are replaced by the new action and hosts.
427 Respective intent and the traffics will be deleted.
431 curl -v --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE http://localhost:8181/restconf/config/intent:intents/intent/b9a13232-525e-4d8c-be21-cd65e3436035
436 Deletion of intent and flow.
441 Ping: testing ping reachability
449 Ping between two hosts can also be done using MAC Address
451 To provision the network for the two hosts(h1 MAC address and h2 MAC
456 curl -v --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://localhost:8181/restconf/config/intent:intents/intent/b9a13232-525e-4d8c-be21-cd65e3436035 -d '{ "intent:intent" : { "intent:id": "b9a13232-525e-4d8c-be21-cd65e3436035", "intent:actions" : [ { "order" : 2, "allow" : {} } ], "intent:subjects" : [ { "order":1 , "end-point-group" : {"name":"6e:4f:f7:27:15:c9"} }, { "order":2 , "end-point-group" : {"name":"aa:7d:1f:4a:70:81"}} ] } }'
458 How to configure Redirect Action
459 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
461 The section explains the redirect action supported in NIC. The redirect
462 functionality supports forwarding (to redirect) the traffic to a service
463 configured in SFC before forwarding it to the destination.
465 .. figure:: ./images/nic/Service_Chaining.png
466 :alt: REDIRECT SERVICE
470 Following steps explain Redirect action function:
472 - Configure the service in SFC using the SFC APIs.
474 - Configure the intent with redirect action and the service information
475 where the traffic needs to be redirected.
477 - The flows are computed as below
479 1. First flow entry between the source host connected node and the
480 ingress node of the configured service.
482 2. Second flow entry between the egress Node id the configured
483 service and the ID and destination host connected host.
485 3. Third flow entry between the destination host node and the source
491 - Save the mininet `Simple Mininet
492 topology <#_simple_mininet_topology>`__ script as redirect\_test.py
494 - Start mininet, and create switches in it.
496 Replace <Controller IP> based on your environment.
500 sudo mn --controller=remote,ip=<Controller IP>--custom redirect_test.py --topo mytopo2
510 srvc1 srvc1-eth0:s3-eth3 srvc1-eth1:s4-eth3
511 s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 s1-eth3:s2-eth4 s1-eth4:s3-eth2
512 s2 lo: s2-eth1:h3-eth0 s2-eth2:h4-eth0 s2-eth3:h5-eth0 s2-eth4:s1-eth3 s2-eth5:s4-eth1
513 s3 lo: s3-eth1:s4-eth2 s3-eth2:s1-eth4 s3-eth3:srvc1-eth0
514 s4 lo: s4-eth1:s2-eth5 s4-eth2:s3-eth1 s4-eth3:srvc1-eth1
520 - Before execute the following steps, please, use the default
521 requirements. See section `Downloading and deploy Karaf
522 distribution <#_default_requirements>`__.
530 .. figure:: ./images/nic/Redirect_flow.png
531 :alt: CONFIGURATION THE NETWORK IN MININET
533 CONFIGURATION THE NETWORK IN MININET
535 - Configure srvc1 as service node in the mininet environment.
537 Please execute the following commands in the mininet console (where
538 mininet script is executed).
542 srvc1 ip addr del 10.0.0.6/8 dev srvc1-eth0
543 srvc1 brctl addbr br0
544 srvc1 brctl addif br0 srvc1-eth0
545 srvc1 brctl addif br0 srvc1-eth1
546 srvc1 ifconfig br0 up
547 srvc1 tc qdisc add dev srvc1-eth1 root netem delay 200ms
549 Configure service in SFC
550 ''''''''''''''''''''''''
552 The service (srvc1) is configured using SFC REST API. As part of the
553 configuration the ingress and egress node connected the service is
558 curl -i -H "Content-Type: application/json" -H "Cache-Control: no-cache" --data '{
559 "service-functions": {
560 "service-function": [
563 "sf-data-plane-locator": [
566 "service-function-forwarder": "openflow:4"
570 "service-function-forwarder": "openflow:3"
578 }' -X PUT --user admin:admin http://localhost:8181/restconf/config/service-function:service-functions/
580 **SFF RESTCONF Request**
582 Configuring switch and port information for the service functions.
586 curl -i -H "Content-Type: application/json" -H "Cache-Control: no-cache" --data '{
587 "service-function-forwarders": {
588 "service-function-forwarder": [
590 "name": "openflow:3",
591 "service-node": "OVSDB2",
592 "sff-data-plane-locator": [
595 "data-plane-locator":
598 "mac": "11:11:11:11:11:11",
599 "transport": "service-locator:mac"
601 "service-function-forwarder-ofs:ofs-port":
607 "service-function-dictionary": [
610 "sff-sf-data-plane-locator":
612 "sf-dpl-name" : "openflow:3",
613 "sff-dpl-name" : "Ingress"
619 "name": "openflow:4",
620 "service-node": "OVSDB3",
621 "sff-data-plane-locator": [
624 "data-plane-locator":
627 "mac": "44:44:44:44:44:44",
628 "transport": "service-locator:mac"
630 "service-function-forwarder-ofs:ofs-port":
636 "service-function-dictionary": [
639 "sff-sf-data-plane-locator":
641 "sf-dpl-name" : "openflow:4",
642 "sff-dpl-name" : "Egress"
649 }' -X PUT --user admin:admin http://localhost:8181/restconf/config/service-function-forwarder:service-function-forwarders/
654 To provision the network for the two hosts (h1 and h5).
656 Demonstrates the redirect action with service name srvc1.
660 intent:add -f <SOURCE_MAC> -t <DESTINATION_MAC> -a REDIRECT -s <SERVICE_NAME>
666 intent:add -f 32:bc:ec:65:a7:d1 -t c2:80:1f:77:41:ed -a REDIRECT -s srvc1
671 - As we have applied action type redirect now ping should happen
672 between hosts h1 and h5.
677 PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
678 64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=201 ms
679 64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=200 ms
680 64 bytes from 10.0.0.5: icmp_seq=4 ttl=64 time=200 ms
682 The redirect functionality can be verified by the time taken by the ping
683 operation (200ms). The service srvc1 configured using SFC introduces
684 200ms delay. As the traffic from h1 to h5 is redirected via the srvc1,
685 the time taken by the traffic from h1 to h5 will take about 200ms.
687 - Flow entries added to nodes for the redirect action.
691 mininet> dpctl dump-flows
692 *** s1 ------------------------------------------------------------------------
693 NXST_FLOW reply (xid=0x4):
694 cookie=0x0, duration=9.406s, table=0, n_packets=6, n_bytes=588, idle_age=3, priority=9000,in_port=1,dl_src=32:bc:ec:65:a7:d1, dl_dst=c2:80:1f:77:41:ed actions=output:4
695 cookie=0x0, duration=9.475s, table=0, n_packets=6, n_bytes=588, idle_age=3, priority=9000,in_port=3,dl_src=c2:80:1f:77:41:ed, dl_dst=32:bc:ec:65:a7:d1 actions=output:1
696 cookie=0x1, duration=362.315s, table=0, n_packets=144, n_bytes=12240, idle_age=4, priority=9500,dl_type=0x88cc actions=CONTROLLER:65535
697 cookie=0x1, duration=362.324s, table=0, n_packets=4, n_bytes=168, idle_age=3, priority=10000,arp actions=CONTROLLER:65535,NORMAL
698 *** s2 ------------------------------------------------------------------------
699 NXST_FLOW reply (xid=0x4):
700 cookie=0x0, duration=9.503s, table=0, n_packets=6, n_bytes=588, idle_age=3, priority=9000,in_port=3,dl_src=c2:80:1f:77:41:ed, dl_dst=32:bc:ec:65:a7:d1 actions=output:4
701 cookie=0x0, duration=9.437s, table=0, n_packets=6, n_bytes=588, idle_age=3, priority=9000,in_port=5,dl_src=32:bc:ec:65:a7:d1, dl_dst=c2:80:1f:77:41:ed actions=output:3
702 cookie=0x3, duration=362.317s, table=0, n_packets=144, n_bytes=12240, idle_age=4, priority=9500,dl_type=0x88cc actions=CONTROLLER:65535
703 cookie=0x3, duration=362.32s, table=0, n_packets=4, n_bytes=168, idle_age=3, priority=10000,arp actions=CONTROLLER:65535,NORMAL
704 *** s3 ------------------------------------------------------------------------
705 NXST_FLOW reply (xid=0x4):
706 cookie=0x0, duration=9.41s, table=0, n_packets=6, n_bytes=588, idle_age=3, priority=9000,in_port=2,dl_src=32:bc:ec:65:a7:d1, dl_dst=c2:80:1f:77:41:ed actions=output:3
707 *** s4 ------------------------------------------------------------------------
708 NXST_FLOW reply (xid=0x4):
709 cookie=0x0, duration=9.486s, table=0, n_packets=6, n_bytes=588, idle_age=3, priority=9000,in_port=3,dl_src=32:bc:ec:65:a7:d1, dl_dst=c2:80:1f:77:41:ed actions=output:1
711 How to configure QoS Attribute Mapping
712 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
714 This section explains how to provision QoS attribute mapping constraint
715 using NIC OF-Renderer.
717 The QoS attribute mapping currently supports DiffServ. It uses a 6-bit
718 differentiated services code point (DSCP) in the 8-bit differentiated
719 services field (DS field) in the IP header.
721 +----------------+-----------------------------------------------------------+
722 | Action | Function |
723 +================+===========================================================+
724 | Allow | Permits the packet to be forwarded normally, but allows |
725 | | for packet header fields, e.g., DSCP, to be modified. |
726 +----------------+-----------------------------------------------------------+
728 The following steps explain QoS Attribute Mapping function:
730 - Initially configure the QoS profile which contains profile name and
733 - When a packet is transferred from a source to destination, the flow
734 builder evaluates whether the transferred packet matches the
735 condition such as action, endpoints in the flow.
737 - If the packet matches the endpoints, the flow builder applies the
738 flow matching action and DSCP value.
743 - Before execute the following steps, please, use the default
744 requirements. See section `Default
745 Requirements <#_default_requirements>`__.
750 Please execute the following CLI commands to test network intent using
753 - To apply the QoS constraint, configure the QoS profile.
757 intent:qosConfig -p <qos_profile_name> -d <valid_dscp_value>
763 intent:qosConfig -p High_Quality -d 46
767 Valid DSCP value ranges from 0-63.
769 - To provision the network for the two hosts (h1 and h3), add intents
770 that allows traffic in both directions by execute the following CLI
773 Demonstrates the ALLOW action with constraint QoS and QoS profile name.
777 intent:add -a ALLOW -t <DESTINATION_MAC> -f <SOURCE_MAC> -q QOS -p <qos_profile_name>
783 intent:add -a ALLOW -t 00:00:00:00:00:03 -f 00:00:00:00:00:01 -q QOS -p High_Quality
784 intent:add -a ALLOW -t 00:00:00:00:00:01 -f 00:00:00:00:00:03 -q QOS -p High_Quality
789 - As we have applied action type ALLOW now ping should happen between
795 PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
796 64 bytes from 10.0.0.3: icmp_req=1 ttl=64 time=0.984 ms
797 64 bytes from 10.0.0.3: icmp_req=2 ttl=64 time=0.110 ms
798 64 bytes from 10.0.0.3: icmp_req=3 ttl=64 time=0.098 ms
800 - Verification of the flow entry and ensuring the mod\_nw\_tos is part
805 mininet> dpctl dump-flows
806 *** s1 ------------------------------------------------------------------------
807 NXST_FLOW reply (xid=0x4):
808 cookie=0x0, duration=21.873s, table=0, n_packets=3, n_bytes=294, idle_age=21, priority=9000,dl_src=00:00:00:00:00:03,dl_dst=00:00:00:00:00:01 actions=NORMAL,mod_nw_tos:184
809 cookie=0x0, duration=41.252s, table=0, n_packets=3, n_bytes=294, idle_age=41, priority=9000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:03 actions=NORMAL,mod_nw_tos:184
814 - Before execute the follow steps, please, use default requirements.
815 See section `Default Requirements <#_default_requirements>`__.
817 How to configure Log Action
818 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
820 This section demonstrates log action in OF Renderer. This demonstration
821 aims at enabling communication between two hosts and logging the flow
822 statistics details of the particular traffic.
827 Please execute the following CLI commands to test network intent using
830 - To provision the network for the two hosts (h1 and h3), add intents
831 that allows traffic in both directions by execute the following CLI
836 intent:add –a ALLOW -t <DESTINATION_MAC> -f <SOURCE_MAC>
842 intent:add -a ALLOW -t 00:00:00:00:00:03 -f 00:00:00:00:00:01
843 intent:add -a ALLOW -t 00:00:00:00:00:01 -f 00:00:00:00:00:03
845 - To log the flow statistics details of the particular traffic.
849 intent:add –a LOG -t <DESTINATION_MAC> -f <SOURCE_MAC>
855 intent:add -a LOG -t 00:00:00:00:00:03 -f 00:00:00:00:00:01
860 - As we have applied action type ALLOW now ping should happen between
866 PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
867 64 bytes from 10.0.0.3: icmp_req=1 ttl=64 time=0.984 ms
868 64 bytes from 10.0.0.3: icmp_req=2 ttl=64 time=0.110 ms
869 64 bytes from 10.0.0.3: icmp_req=3 ttl=64 time=0.098 ms
871 - To view the flow statistics log details such as, byte count, packet
872 count and duration, check the karaf.log.
876 2015-12-15 22:56:20,256 | INFO | lt-dispatcher-23 | IntentFlowManager | 264 - org.opendaylight.nic.of-renderer - 1.1.0.SNAPSHOT | Creating block intent for endpoints: source00:00:00:00:00:01 destination 00:00:00:00:00:03
877 2015-12-15 22:56:20,252 | INFO | lt-dispatcher-29 | FlowStatisticsListener | 264 - org.opendaylight.nic.of-renderer - 1.1.0.SNAPSHOT | Flow Statistics gathering for Byte Count:Counter64 [_value=238]
878 2015-12-15 22:56:20,252 | INFO | lt-dispatcher-29 | FlowStatisticsListener | 264 - org.opendaylight.nic.of-renderer - 1.1.0.SNAPSHOT | Flow Statistics gathering for Packet Count:Counter64 [_value=3]
879 2015-12-15 22:56:20,252 | INFO | lt-dispatcher-29 | FlowStatisticsListener | 264 - org.opendaylight.nic.of-renderer - 1.1.0.SNAPSHOT | Flow Statistics gathering for Duration in Nano second:Counter32 [_value=678000000]
880 2015-12-15 22:56:20,252 | INFO | lt-dispatcher-29 | FlowStatisticsListener | 264 - org.opendaylight.nic.of-renderer - 1.1.0.SNAPSHOT | Flow Statistics gathering for Duration in Second:Counter32 [_value=49]