Srikanth Vavilapalli
Committed by Gerrit Code Review

Segment Routing ONS demo fixes: Includes traffic visualization fix

Change-Id: I5119271464b696fd145c6b63bee09d7f3ef109bd
...@@ -121,6 +121,10 @@ public class IpHandler { ...@@ -121,6 +121,10 @@ public class IpHandler {
121 * @param destIpAddress destination IP address 121 * @param destIpAddress destination IP address
122 */ 122 */
123 public void forwardPackets(DeviceId deviceId, Ip4Address destIpAddress) { 123 public void forwardPackets(DeviceId deviceId, Ip4Address destIpAddress) {
124 + if (ipPacketQueue.get(destIpAddress) == null) {
125 + return;
126 + }
127 +
124 for (IPv4 ipPacket : ipPacketQueue.get(destIpAddress)) { 128 for (IPv4 ipPacket : ipPacketQueue.get(destIpAddress)) {
125 Ip4Address destAddress = Ip4Address.valueOf(ipPacket.getDestinationAddress()); 129 Ip4Address destAddress = Ip4Address.valueOf(ipPacket.getDestinationAddress());
126 if (ipPacket != null && config.inSameSubnet(deviceId, destAddress)) { 130 if (ipPacket != null && config.inSameSubnet(deviceId, destAddress)) {
......
...@@ -51,6 +51,7 @@ public class PortStatisticsManager implements PortStatisticsService { ...@@ -51,6 +51,7 @@ public class PortStatisticsManager implements PortStatisticsService {
51 51
52 private static final long POLL_FREQUENCY = 10_000; // milliseconds 52 private static final long POLL_FREQUENCY = 10_000; // milliseconds
53 private static final long STALE_LIMIT = (long) (1.5 * POLL_FREQUENCY); 53 private static final long STALE_LIMIT = (long) (1.5 * POLL_FREQUENCY);
54 + private static final int SECOND = 1_000; // milliseconds
54 55
55 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 56 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
56 protected DeviceService deviceService; 57 protected DeviceService deviceService;
...@@ -79,13 +80,11 @@ public class PortStatisticsManager implements PortStatisticsService { ...@@ -79,13 +80,11 @@ public class PortStatisticsManager implements PortStatisticsService {
79 long now = System.currentTimeMillis(); 80 long now = System.currentTimeMillis();
80 81
81 if (c != null && p != null && (now - c.time < STALE_LIMIT)) { 82 if (c != null && p != null && (now - c.time < STALE_LIMIT)) {
82 - if (c.stats.durationSec() > p.stats.durationSec() && 83 + if ((c.time > p.time + SECOND) &&
83 - c.stats.bytesSent() >= p.stats.bytesSent() && 84 + (c.stats.bytesSent() >= p.stats.bytesSent())) {
84 - c.stats.durationSec() >= POLL_FREQUENCY / 1_000) {
85 return new DefaultLoad(c.stats.bytesSent(), p.stats.bytesSent(), 85 return new DefaultLoad(c.stats.bytesSent(), p.stats.bytesSent(),
86 - c.stats.durationSec() - p.stats.durationSec()); 86 + (int) (c.time - p.time) / SECOND);
87 } 87 }
88 - return new DefaultLoad(c.stats.bytesSent(), 0, c.stats.durationSec());
89 } 88 }
90 return null; 89 return null;
91 } 90 }
......
...@@ -105,7 +105,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -105,7 +105,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
105 private final InternalDeviceProvider listener = new InternalDeviceProvider(); 105 private final InternalDeviceProvider listener = new InternalDeviceProvider();
106 106
107 // TODO: We need to make the poll interval configurable. 107 // TODO: We need to make the poll interval configurable.
108 - static final int POLL_INTERVAL = 10; 108 + static final int POLL_INTERVAL = 5;
109 109
110 private HashMap<Dpid, PortStatsCollector> collectors = Maps.newHashMap(); 110 private HashMap<Dpid, PortStatsCollector> collectors = Maps.newHashMap();
111 111
...@@ -245,7 +245,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -245,7 +245,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
245 245
246 private class InternalDeviceProvider implements OpenFlowSwitchListener, OpenFlowEventListener { 246 private class InternalDeviceProvider implements OpenFlowSwitchListener, OpenFlowEventListener {
247 247
248 - private List<OFPortStatsEntry> portStatsReplies = Lists.newArrayList(); 248 + private HashMap<Dpid, List<OFPortStatsEntry>> portStatsReplies = new HashMap<>();
249 249
250 @Override 250 @Override
251 public void switchAdded(Dpid dpid) { 251 public void switchAdded(Dpid dpid) {
...@@ -450,10 +450,15 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -450,10 +450,15 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
450 case STATS_REPLY: 450 case STATS_REPLY:
451 if (((OFStatsReply) msg).getStatsType() == OFStatsType.PORT) { 451 if (((OFStatsReply) msg).getStatsType() == OFStatsType.PORT) {
452 OFPortStatsReply portStatsReply = (OFPortStatsReply) msg; 452 OFPortStatsReply portStatsReply = (OFPortStatsReply) msg;
453 - portStatsReplies.addAll(portStatsReply.getEntries()); 453 + List<OFPortStatsEntry> portStatsReplyList = portStatsReplies.get(dpid);
454 + if (portStatsReplyList == null) {
455 + portStatsReplyList = Lists.newArrayList();
456 + }
457 + portStatsReplyList.addAll(portStatsReply.getEntries());
458 + portStatsReplies.put(dpid, portStatsReplyList);
454 if (!portStatsReply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) { 459 if (!portStatsReply.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) {
455 - pushPortMetrics(dpid, portStatsReplies); 460 + pushPortMetrics(dpid, portStatsReplies.get(dpid));
456 - portStatsReplies.clear(); 461 + portStatsReplies.get(dpid).clear();
457 } 462 }
458 } 463 }
459 break; 464 break;
......
1 { 1 {
2 "devices": [ 2 "devices": [
3 - { "uri": "of:00010001e88b27e3", "mac": "0001e88b27e3", "annotations": { "name": "s101", "latitude": 41.996877, "longitude": -84.169273 }},
4 { "uri": "of:00010001e88b9368", "mac": "0001e88b9368", "annotations": { "name": "s101", "latitude": 37.710742, "longitude": -103.975010 }}, 3 { "uri": "of:00010001e88b9368", "mac": "0001e88b9368", "annotations": { "name": "s101", "latitude": 37.710742, "longitude": -103.975010 }},
5 - { "uri": "of:00010001e88b93ad", "mac": "0001e88b93ad", "annotations": { "name": "s101", "latitude": 37.634692, "longitude": -84.215821 }}, 4 + { "uri": "of:00010001e88b939b", "mac": "0001e88b939b", "annotations": { "name": "s102", "latitude": 37.756072, "longitude": -97.547678 }},
6 - { "uri": "of:00010001e88b93bc", "mac": "0001e88b93bc", "annotations": { "name": "s101", "latitude": 41.951018, "longitude": -103.853350 }}, 5 + { "uri": "of:00010001e88b938c", "mac": "0001e88b938c", "annotations": { "name": "s103", "latitude": 37.657851, "longitude": -90.778101 }},
7 - { "uri": "of:00010001e88b9398", "mac": "0001e88b9398", "annotations": { "name": "s101", "latitude": 41.952876, "longitude": -90.696484 }}, 6 + { "uri": "of:00010001e88b93ad", "mac": "0001e88b93ad", "annotations": { "name": "s104", "latitude": 37.634692, "longitude": -84.215821 }},
8 - { "uri": "of:00010001e88b938c", "mac": "0001e88b938c", "annotations": { "name": "s101", "latitude": 37.657851, "longitude": -90.778101 }}, 7 + { "uri": "of:00010001e88b93bc", "mac": "0001e88b93bc", "annotations": { "name": "s105", "latitude": 41.951018, "longitude": -103.853350 }},
9 - { "uri": "of:00010001e88b939b", "mac": "0001e88b939b", "annotations": { "name": "s101", "latitude": 37.756072, "longitude": -97.547678 }}, 8 + { "uri": "of:00010001e88b93c2", "mac": "0001e88b93c2", "annotations": { "name": "s106", "latitude": 41.945684, "longitude": -97.526174 }},
10 - { "uri": "of:00010001e88b93c2", "mac": "0001e88b93c2", "annotations": { "name": "s101", "latitude": 41.945684, "longitude": -97.526174 }} 9 + { "uri": "of:00010001e88b9398", "mac": "0001e88b9398", "annotations": { "name": "s107", "latitude": 41.952876, "longitude": -90.696484 }},
10 + { "uri": "of:00010001e88b27e3", "mac": "0001e88b27e3", "annotations": { "name": "s108", "latitude": 41.996877, "longitude": -84.169273 }}
11 ], 11 ],
12 "hosts": [ 12 "hosts": [
13 - { "id": "5A:66:A0:6F:10:A5/-1", "mac": "5A:66:A0:6F:10:A5", "vlan": -1, "location": "of:00010001e88b93ad/1", "ip": "1.2.3.4", "annotations": { "name": "h1", "latitude": 34.384830, "longitude": -104.019262 }}, 13 + { "id": "00:1f:29:e1:2c:36/-1", "mac": "00:1f:29:e1:2c:36", "vlan": -1, "location": "of:00010001e88b9368/46", "ip": "10.200.1.11", "annotations": { "name": "h1", "latitude": 34.384830, "longitude": -104.019262 }},
14 - { "id": "D2:22:5A:E1:52:B7/-1", "mac": "D2:22:5A:E1:52:B7", "vlan": -1, "location": "of:00010001e88b93ad/1", "ip": "1.2.3.4", "annotations": { "name": "h1", "latitude": 34.133376, "longitude": -89.442032 }}, 14 + { "id": "00:1e:0b:cb:9d:64/-1", "mac": "00:1e:0b:cb:9d:64", "vlan": -1, "location": "of:00010001e88b9368/45", "ip": "10.200.1.12", "annotations": { "name": "h2", "latitude": 34.384830, "longitude": -104.019262 }},
15 - { "id": "F2:25:F0:11:69:E2/-1", "mac": "F2:25:F0:11:69:E2", "vlan": -1, "location": "of:00010001e88b93ad/1", "ip": "1.2.3.4", "annotations": { "name": "h1", "latitude": 34.166625, "longitude": -91.983293 }}, 15 + { "id": "00:1c:c4:6b:d8:12/-1", "mac": "00:1c:c4:6b:d8:12", "vlan": -1, "location": "of:00010001e88b939b/46", "ip": "10.200.2.21", "annotations": { "name": "h3", "latitude": 34.133376, "longitude": -89.442032 }},
16 - { "id": "52:1C:5E:A5:8C:E0/-1", "mac": "52:1C:5E:A5:8C:E0", "vlan": -1, "location": "of:00010001e88b93ad/1", "ip": "1.2.3.4", "annotations": { "name": "h1", "latitude": 34.225065, "longitude": -97.492882 }}, 16 + { "id": "00:1e:0b:ca:90:44/-1", "mac": "00:1e:0b:ca:90:44", "vlan": -1, "location": "of:00010001e88b939b/45", "ip": "10.200.2.22", "annotations": { "name": "h4", "latitude": 34.133376, "longitude": -89.442032 }},
17 - { "id": "EA:11:0C:F7:49:D8/-1", "mac": "EA:11:0C:F7:49:D8", "vlan": -1, "location": "of:00010001e88b93ad/1", "ip": "1.2.3.4", "annotations": { "name": "h1", "latitude": 34.249236, "longitude": -84.253025 }} 17 + { "id": "00:1e:0b:ca:e5:1a/-1", "mac": "00:1e:0b:ca:e5:1a", "vlan": -1, "location": "of:00010001e88b938c/46", "ip": "10.200.3.31", "annotations": { "name": "h5", "latitude": 34.166625, "longitude": -91.983293 }},
18 + { "id": "52:1C:5E:A5:8C:E0/-1", "mac": "52:1C:5E:A5:8C:E0", "vlan": -1, "location": "of:00010001e88b938c/45", "ip": "10.200.3.32", "annotations": { "name": "h6", "latitude": 34.166625, "longitude": -91.983293 }},
19 + { "id": "00:1e:0b:cb:3f:ac/-1", "mac": "00:1e:0b:cb:3f:ac", "vlan": -1, "location": "of:00010001e88b93ad/46", "ip": "10.200.4.41", "annotations": { "name": "h7", "latitude": 34.225065, "longitude": -97.492882 }},
20 + { "id": "EA:11:0C:F7:49:D8/-1", "mac": "EA:11:0C:F7:49:D8", "vlan": -1, "location": "of:00010001e88b93ad/45", "ip": "10.200.4.42", "annotations": { "name": "h8", "latitude": 34.249236, "longitude": -84.253025 }}
18 ] 21 ]
19 } 22 }
......