diff --git a/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html b/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html
index f9f1a4f..8e6bbc5 100644
--- a/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html
+++ b/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.html
@@ -1,20 +1,36 @@
 <wicket:extend xmlns:wicket>
-    <h2>System Load</h2>
+    <center><h2>Node Information</h2></center>
+    <table border="0">
+        <tr><td>Node Id</td><td><span id="node-id"></span></td></tr>
+        <tr><td>Architecture</td><td><span id="arch"></span></td></tr>
+        <tr><td>OS Name</td><td><span id="os-name"></span></td></tr>
+        <tr><td>OS Version</td><td><span id="os-version"></span></td></tr>
+        <tr><td># of processors</td><td><span id="num-processors"></span></td></tr>
+    </table>
+
+    <center><h2>System Load</h2></center>
     <div id='system-load-chart' class="time-chart">
     </div>
 
-    <h2>Garbage Collection</h2>
+    <center><h2>Garbage Collection</h2></center>
     <div id='gc-charts'>
     </div>
 
-    <h2>Memory Usage</h2>
+    <center><h2>Memory Usage</h2></center>
     <div id='heap-usage-chart' class="time-chart">
     </div>
     <div id='nonheap-usage-chart' class="time-chart">
     </div>
 
-    <h2>Thread Statistics</h2>
+    <center><h2>Thread Statistics</h2></center>
     <div id='thread-chart' class="time-chart">
     </div>
+
+    <center><h2>Network Statistics</h2></center>
+    <div id='net-payload-bandwidth' class="time-chart">
+    </div>
+    <div id='net-signaling-bandwidth' class="time-chart">
+    </div>
+
     <script src="/static/javascript/adminconsole/NodeDetailsPage.js" type="text/javascript"></script>
 </wicket:extend>
diff --git a/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js b/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
index c97ec94..a864ceb 100644
--- a/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
+++ b/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
@@ -1,7 +1,8 @@
 $(function() {
     var options = {
         lines : {
-            show : true
+            show : true,
+            fill : true
         },
         points : {
             show : false
@@ -12,8 +13,17 @@
         }
     };
 
+    function computeBandwidth(bytes, rrdPtr) {
+        return (bytes[(rrdPtr + 1) % bytes.length] - bytes[rrdPtr]) / 10;
+    }
+
     function onDataReceived(data) {
         var result = data.result;
+        $('#node-id')[0].innerHTML = result['node-id'];
+        $('#arch')[0].innerHTML = result['arch'];
+        $('#os-name')[0].innerHTML = result['os-name'];
+        $('#os-version')[0].innerHTML = result['os-version'];
+        $('#num-processors')[0].innerHTML = result['num-processors'];
         var sysLoad = result['system-load-averages'];
         var heapUsageInitSizes = result['heap-init-sizes'];
         var heapUsageUsedSizes = result['heap-used-sizes'];
@@ -27,6 +37,10 @@
         var peakThreadCounts = result['peak-thread-counts'];
         var gcCollectionCounts = result['gc-collection-counts'];
         var gcCollectionTimes = result['gc-collection-times'];
+        var netPayloadBytesRead = result['net-payload-bytes-read'];
+        var netPayloadBytesWritten = result['net-payload-bytes-written'];
+        var netSignalingBytesRead = result['net-signaling-bytes-read'];
+        var netSignalingBytesWritten = result['net-signaling-bytes-written'];
         var sysLoadArray = [];
         var heapUsageInitSizesArray = [];
         var heapUsageUsedSizesArray = [];
@@ -40,6 +54,10 @@
         var peakThreadCountsArray = [];
         var gcCollectionCountsArray = [];
         var gcCollectionTimesArray = [];
+        var netPayloadReadBWArray = [];
+        var netPayloadWriteBWArray = [];
+        var netSignalingReadBWArray = [];
+        var netSignalingWriteBWArray = [];
         var gcChartsDiv = document.getElementById('gc-charts');
         for ( var i = 0; i < gcCollectionCounts.length; ++i) {
             gcCollectionCountsArray.push([]);
@@ -71,6 +89,12 @@
             for ( var j = 0; j < gcCollectionTimes.length; ++j) {
                 gcCollectionTimesArray[j].push([ i, gcCollectionTimes[j][rrdPtr] ]);
             }
+            if (i < sysLoad.length - 1) {
+                netPayloadReadBWArray.push([ i, computeBandwidth(netPayloadBytesRead, rrdPtr) ]);
+                netPayloadWriteBWArray.push([ i, computeBandwidth(netPayloadBytesWritten, rrdPtr) ]);
+                netSignalingReadBWArray.push([ i, computeBandwidth(netSignalingBytesRead, rrdPtr) ]);
+                netSignalingWriteBWArray.push([ i, computeBandwidth(netSignalingBytesWritten, rrdPtr) ]);
+            }
             rrdPtr = (rrdPtr + 1) % sysLoad.length;
         }
 
@@ -129,6 +153,22 @@
             label : 'Peak Thread Count',
             data : peakThreadCountsArray
         } ], options);
+
+        $.plot($('#net-payload-bandwidth'), [ {
+            label : 'Payload Read Bandwidth (bytes/sec)',
+            data : netPayloadReadBWArray
+        }, {
+            label : 'Payload Write Bandwidth (bytes/sec)',
+            data : netPayloadWriteBWArray
+        } ], options);
+
+        $.plot($('#net-signaling-bandwidth'), [ {
+            label : 'Signaling Read Bandwidth (bytes/sec)',
+            data : netSignalingReadBWArray
+        }, {
+            label : 'Signaling Write Bandwidth (bytes/sec)',
+            data : netSignalingWriteBWArray
+        } ], options);
     }
 
     function fetchData() {
