Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 510920398c45cb0c40ed24d0397c31eb > files > 14

inetvis-0.9.3.1-5.fc15.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>InetVis 0.9.3 Manual</title>

    <style type="text/css">
    /*<![CDATA[*/
    BODY { min-width: 250px; max-width: 650px; margin: 25px; color: #000000; font-family: serif; }
    H1 { font-family: sans-serif; line-height: 125%; margin: 40px; margin-right: 40px; text-align: center; color: #16455A; padding-top: 0.6cm; }
    H2 { font-family: sans-serif; margin-left: 20px; margin-right: 20px; color: #16455A; padding-top: 0.5cm; }
    H3 { font-family: sans-serif; text-decoration: underline; color: #16455A; padding-top: 0.4cm; }
    H4 { font-family: sans-serif; color: #16455A; padding-top: 0.3cm; }
    SMALL { font-size: 66%; }
    P { font-family: serif; line-height: 125%; text-align: justify; }
    P.center { font-family: serif; line-height: 125%; text-align: center; }
    P.right { font-family: serif; line-height: 125%; text-align: right; }
    PRE.formula { font-weight: bold; background-color: #EFEFEF; color: #000000; min-width: 300px; max-width: 650px; margin-left: 25px; margin-right: 25px; color: #000000; font-family: serif; line-height: 125%; }
    PRE.code { background-color: #FFFFFF; color: #000000; min-width: 300px; max-width: 650px; margin-left: 25px; margin-right: 25px; color: #000000; font-family: "Courier New"; }
    PRE.norm { min-width: 300px; max-width: 650px; color: #000000; font-family: serif; line-height: 125%; }
    UL { list-style-type: square; text-align: justify; line-height: 125%; }
    TABLE { border: solid thin; border-collapse: collapse; vertical-align: top; }
    TABLE.noborder { border: none; }
    TH { border: solid thin; padding-top: 3px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; vertical-align: top; }
    TD { border: solid thin; padding-top: 3px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; vertical-align: top; }
    TD.noborder { border: none }
    HR { margin-left: -15px ; margin-right: -15px }
    HR.short { width: 40%; min-width: 100px; margin-left: -5px; margin-right: -5px; text-align: left; }
    A { }
    /*]]>*/
    </style>
  </head>

  <body>
    <h1><img src="images/icon.gif" alt="InetVis icon" border="0" />InetVis 0.9.3 Manual</h1>

    <p class="center">documentation and help</p>
    <br />

    <hr />
    <!--========================================================================-->

    <p class="right"><small><em>Last revision:</em> 2007-11-08</small></p>

    <h2>Contents</h2>

    <p>1. <a href="#1.">Description</a><br />
    &nbsp;&nbsp;&nbsp;1.1. <a href="#1.1.">Concept</a><br />
    &nbsp;&nbsp;&nbsp;1.2. <a href="#1.2.">Input</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.2.1. <a href="#1.2.1.">Supported Protocols</a><br />
    &nbsp;&nbsp;&nbsp;1.3. <a href="#1.3.">Plotting Scheme</a><br />
    &nbsp;&nbsp;&nbsp;1.4. <a href="#1.4.">Features</a><br />
    <br />
     2. <a href="#2.">Usage</a><br />
    &nbsp;&nbsp;&nbsp;2.1. <a href="#2.1.">Command Line</a><br />
    &nbsp;&nbsp;&nbsp;2.2. <a href="#2.2.">User Interface and Controls</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.1. <a href="#2.2.1.">Control Panel</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.2. <a href="#2.2.2.">InetVis Display</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.2.1. <a href="#2.2.2.1.">Navigation via Mouse Controls</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.2.2. <a href="#2.2.2.2.">Navigation via Keyboard Controls</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.2.3. <a href="#2.2.2.3.">Other Keyboard Controls</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.3. <a href="#2.2.3.">Plotter Settings Dialogue</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2.4. <a href="#2.2.4.">Reference Frame Settings Dialogue</a><br />
    &nbsp;&nbsp;&nbsp;2.3. <a href="#2.3.">Usage Notes</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.1. <a href="#2.3.1.">Tool tips as Helpful Hints</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.2. <a href="#2.3.2.">Applying Settings</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.3. <a href="#2.3.3.">Setting the Home Network Range Before Playback</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.4. <a href="#2.3.4.">Setting Address Ranges with CIDR Notation</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.5. <a href="#2.3.5.">Recording</a><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.5.1. <a href="#2.3.5.1.">Record to Capture File</a><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.5.2. <a href="#2.3.5.2.">Taking an Image Snapshot</a><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.5.3. <a href="#2.3.5.3.">Dumping Rendered Frames to Image Files</a><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.5.4. <a href="#2.3.5.4.">Location of Recorded Files</a><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3.6. <a href="#2.3.6.">Administrator Privileges</a><br />
    <br />
     3. <a href="#3.">Requirements and Performance</a><br />
     &nbsp;&nbsp;&nbsp;3.1. <a href="#3.1.">Operating Platform</a><br />
     &nbsp;&nbsp;&nbsp;3.2. <a href="#3.2.">Requirements to Run Pre-packaged Binary</a><br />
     &nbsp;&nbsp;&nbsp;3.3. <a href="#3.3.">Minimum System Specification</a><br />
     &nbsp;&nbsp;&nbsp;3.4. <a href="#3.4.">Typical Performance</a><br />
    <br />
     4. <a href="#4.">Known Issues</a><br />
    <br />
     5. <a href="#5.">Building and Developing InetVis</a><br />
     &nbsp;&nbsp;&nbsp;5.1. <a href="#5.1.">Requirements</a><br />
     &nbsp;&nbsp;&nbsp;5.2. <a href="#5.2.">Recommend Development Tools</a><br />
    <br />
     6. <a href="#6.">Acknowledgement</a><br />
    <br />
     7. <a href="#7.">Disclaimer</a><br />
    <br />
     8. <a href="#8.">Contact</a></p>
    9. <a href="#9.">License</a><br />
     <br />
     <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="1." name="1.">1. Description</a></h2>

    <p><u>InetVis - <strong>I</strong>nter<strong>net</strong> <strong>Vis</strong>ualization</u></p>

    <p>version: 0.9.3<br />
     <small>release date: 2007/11/07</small></p>

    <p>InetVis is a 3-D scatter-plot visualization for network traffic. It&#39;s more or less like a media player, but for network traffic. At the moment its just an academic toy for reviewing packet capture files, but may be useful in other endeavours. For example, InetVis has been used to verify and critique the accuracy of scan detection algorithms in the Snort IDS and Bro IDS.</p>

    <h3><a id="1.1." name="1.1.">1.1. Concept</a></h3>

    <p>The original source of inspiration for InetVis is the &quot;The Spinning Cube of Potential Doom&quot; (by Stephen Lau). Whilst many other network visualizations employ lines as a metaphor for connection, the 3-D scatter-plot of points proves to scale well with larger volumes of data. The visualization makes network scanning and port scanning readily evident as horizontal and vertical lines respectively. InetVis offers numerous extensions that enhance the original basic concept (see <a href="#1.4.">1.4. Features</a>). For a description of &quot;The Spinning Cube of Potential Doom&quot; see:</p>

    <ul>
      <li><a href="http://www.nersc.gov/security/TheSpinningCube.html" target="_blank">www.nersc.gov/security/TheSpinningCube.html.</a></li>
    </ul>

    <h3><a id="1.2." name="1.2.">1.2. Input</a></h3>

    <p>InetVis visualizes packet captures of network traffic using Libpcap to either</p>

    <ul>
      <li>capture live traffic from the default interface, or</li>

      <li>replay traffic from a pcap file.</li>
    </ul>

    <p>Tcpdump, Wireshark and Snort are examples of applications can use the Libpcap file format.</p>

    <ul>
      <li><a href="http://www.tcpdump.org" target="_blank">www.tcpdump.org</a></li>

      <li><a href="http://www.ethereal.com" target="_blank">www.ethereal.com</a></li>

      <li><a href="http://www.snort.org" target="_blank">www.snort.org</a></li>
    </ul>

    <h4><a id="1.2.1." name="1.2.1.">1.2.1. Supported Protocols</a></h4>

    <ul>
      <li>Ethernet IPv4 based traffic with TCP, UDP and ICMP protocols.</li>
    </ul>

    <h3><a id="1.3." name="1.3.">1.3. Plotting scheme</a></h3>

    <ul>
      <li>Destination address (home network) plotted along blue x-axis (horizontal).</li>

      <li>Source address (external Internet range) plotted along red z-axis (depth).</li>

      <li>Ports (TCP and UDP) plotted along green y-axis (vertical).</li>

      <li>ICMP traffic plotted below TCP/UDP cube grey/white ICMP plane.</li>
    </ul>
    <img src="images/inetvis_plotting_scheme.jpg" alt="" border="0" />

    <h3><a id="1.4." name="1.4.">1.4. Features</a></h3>

    <ul>
      <li>Adjustable replay position to seek through the traffic capture files.</li>

      <li>Variable playback speed (time scaling), from as slow as 0.001x (1 ms/s), or as fast as 86400x (1 day/s).</li>

      <li>Variable time frame/window to view events for the past 100 ms up to 5 years.</li>

      <li>Transparent decay of events - points fade as they age (with respect to the time window).</li>

      <li>New events are highlighted by pulsing once (a momentarily bulge of the point).</li>

      <li>Filtering capability via BPF filter expressions (as used in Libpcap and Tcpdump).</li>

      <li>Various colour schemes for colouring points and adjustable point size.</li>

      <li>Setting the data ranges and scaling down into sub-domain IP addresses (destination and source) as well as port ranges to view a subset of the traffic data.</li>

      <li>Adjustable logarithmic plot for stretching out lower port range where, in general, most TCP/UDP traffic occurs.</li>

      <li>Various reference frame controls, i.e. toggling visibility of axes, markers, transparent grid lines, labels, and background colour.</li>

      <li>Orthographic and perspective projection modes.</li>

      <li>Immersive navigation - scaling (zooming), translating (moving) and rotating.</li>

      <li>Record single snapshot image, or dump all image frames (useful for manually encoding video clips).</li>

      <li>Record output back to pcap binary file format, for further detailed analysis with other applications (e.g. Tcpdump, Ethereal and Snort).</li>
    </ul>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="2." name="2.">2. Usage</a></h2>

    <h3><a id="2.1." name="2.1.">2.1. Command Line</a></h3>
<pre class="code">
./inetvis
</pre>

    <h3><a id="2.2." name="2.2.">2.2. User Interface and Controls</a></h3>

    <p>The display pane and control panel are in separate windows, with a plotter settings dialogue and reference frame settings dialogue accessed via the &#39;view&#39; menu of the control panel</p>
    <img src="images/inetvis_screenshot_labeled.jpg" alt="" border="0" />

    <h4><a id="2.2.1." name="2.2.1.">2.2.1. Control Panel</a></h4>
    <img src="images/inetvis_control_panel.jpg" alt="" border="0" />

    <ul>
      <li>main menu to open files, set mode (monitor local host or replay file), or to access other dialogues (view).</li>

      <li>Replay position controls.</li>

      <li>Playback and replay speed controls.</li>

      <li>Recording controls.</li>

      <li>Time window controls (Historic View).</li>

      <li>Filter.</li>

      <li>Task-bar reports the number of packets currently in the buffer.</li>
    </ul>
    <a id="2.2.2." name="2.2.2."></a>

    <h4><a>2.2.2. InetVis Display</a></h4>

    <p>The visualization display pane.</p>

    <h4><a id="2.2.2.1." name="2.2.2.1.">2.2.2.1. Navigation via Mouse Controls.</a></h4>

    <ul>
      <li>Holding <strong>left button</strong> and moving rotates.</li>

      <li>Holding <strong>right button</strong> and moving translates along x and y (horizontally and vertically respectively).</li>

      <li>Rotating <strong>scroll wheel</strong> translates along z (depth).</li>

      <li>Holding <strong>middle button</strong> and moving zooms.</li>
    </ul>

    <h4><a id="2.2.2.2." name="2.2.2.2.">2.2.2.2. Navigation via Keyboard Controls.</a></h4>

    <ul>
      <li><strong>&#39;Arrow Keys&#39;</strong> to rotate.</li>

      <li><strong>&#39;Ctrl&#39; + &#39;Arrow Keys&#39;</strong> to translate (x and y).</li>

      <li><strong>&#39;Alt&#39; + &#39;UP Arrow Key&#39; or &#39;Down Arrow Key&#39;</strong> to translate (z).</li>

      <li><strong>&#39;+&#39; and &#39;-&#39;</strong> to scale (zoom).</li>

      <li><strong>&#39;Home&#39;</strong> or &#39;Ctrl+f&#39; to reset view to front on (up z axis).</li>

      <li><strong>&#39;End&#39;</strong> to view from back (down z axis).</li>

      <li><strong>&#39;Ctrl+l&#39;</strong> to view from left side (up x axis).</li>

      <li><strong>&#39;Ctrl+r&#39;</strong> to view from right (down x axis).</li>

      <li><strong>&#39;Ctrl+t&#39;</strong> to view from top (down y axis).</li>

      <li><strong>&#39;Ctrl+b&#39;</strong> to view from below (up y axis).</li>
    </ul>

    <h4><a id="2.2.2.3." name="2.2.2.3.">2.2.2.3. Other Keyboard Controls</a></h4>

    <ul>
      <li><strong>&#39;f&#39;</strong> to toggle full screen.</li>

      <li><strong>&#39;Esc&#39;</strong> to escape full screen.</li>

      <li><strong>&#39;p&#39;</strong> to bring up Plotter Settings Dialogue.</li>

      <li><strong>&#39;r&#39;</strong> to bring up Reference Frame Settings Dialogue.</li>

      <li><strong>&#39;c&#39;</strong> to bring up Control Panel Dialogue.</li>

      <li><strong>&#39;Ctrl+H&#39;</strong> to hide home address range (addresses replaced with obscuring labels).</li>
    </ul>

    <h4><a id="2.2.3." name="2.2.3.">2.2.3. Plotter Settings Dialogue</a></h4>
    <img src="images/inetvis_plotter_settings.jpg" alt="" border="0" />

    <ul>
      <li>Set the destination home network range (or drill down into it).</li>

      <li>Set the source Internet range (drill down into a domain).</li>

      <li>Set the port range (drill down into a port range).</li>

      <li>Set linear or logarithmic plotting for ports.</li>

      <li>Set colour mapping, toggle transparent decay, and set background colour (black or white).</li>

      <li>Set point size, point bulging (highlight new events), and toggle point smoothing (rounded points).</li>
    </ul>

    <h4><a id="2.2.4." name="2.2.4.">2.2.4. Reference Frame Settings Dialogue</a></h4>
    <img src="images/inetvis_reference_frame_settings.jpg" alt="" border="0" />

    <ul>
      <li>Set projection mode (Orthographic or perspective).</li>

      <li>Toggle visibility of reference frame axes and markers.</li>

      <li>Toggle visibility and transparency of grid lines.</li>

      <li>Set number of divisions along x, y, and z for markers and grid lines.</li>

      <li>Toggle text labels (time, axes ranges, frame rate).</li>
    </ul>

    <h3><a id="2.3." name="2.3.">2.3. Usage Notes</a></h3>

    <h4><a id="2.3.1." name="2.3.1.">2.3.1. Tool tips as Helpful Hints</a></h4>

    <p>Majority of the controls, buttons and fields in the GUI provide tool tips to help explain their function and usage. Tool tips can be seen by hovering the mouse cursor over the GUI component in question.</p>

    <h4><a id="2.3.2." name="2.3.2.">2.3.2. Applying Settings</a></h4>

    <p>Many of the settings are grouped together and require the user to click the apply button (button with a tick icon) once they are ready to apply the new settings.</p>

    <h4><a id="2.3.3." name="2.3.3.">2.3.3. Setting the Home Network Range Before Playback</a></h4>

    <p>After opening a file, set the home network address (in Plotter Settings dialogue) to scale the data along the blue axis - otherwise all traffic is rendered in a narrow single band with respect to the x-axis. A &#39;guess&#39; button can help infer this home network range by checking the destination addresses contained within the file. In the case of monitoring the local network interface (live packet capture), the application will automatically retrieve the home network address from Libpcap.</p>

    <h4><a id="2.3.4." name="2.3.4.">2.3.4. Setting Address Ranges with CIDR Notation</a></h4>

    <p>Setting the address ranges entails using &#39;dots-slash&#39; (CIDR) notation to specify network sub-domains. For example 192.168.0.0/24 is the network with address 192.168.0.0, subnet mask 255.255.255.0, giving the network range 192.168.0.0 to 192.168.0.255. The number after the slash represents the number of bits in the subnet mask. Thus the octet classed network masks are:</p>

    <ul>
      <li>Class A = 255.0.0.0 = /8</li>

      <li>Class B = 255.255.0.0 = /16</li>

      <li>Class C = 255.255.255.0 = /24</li>
    </ul>

    <p>Values other than /8, /16 and /24 are trickier as they involve bits in between the four octets of a 32 bit IP address. The Plotter Settings dialogue has a field below the dots-slash edit boxes that show the range and subnet mask to help as guide. For bits added on to a full octet (i.e. /8+x or /16+x or /24+x), the following octet in the mask will have the value:</p>

    <table>
      <tbody>
        <tr>
          <td>/+1</td>

          <td>/+2</td>

          <td>/+3</td>

          <td>/+4</td>

          <td>/+5</td>

          <td>/+6</td>

          <td>/+7</td>
        </tr>

        <tr>
          <td>.128</td>

          <td>.192</td>

          <td>.224</td>

          <td>.240</td>

          <td>.248</td>

          <td>.252</td>

          <td>.254</td>
        </tr>
      </tbody>
    </table>

    <p>For example, 146.231.120/20 has subnet mask 255.255.248.0 and represents 8 class C networks in the range 146.231.120.0 to 146.231.127.255.</p>

    <h4><a id="2.3.5." name="2.3.5.">2.3.5. Recording</a></h4>

    <p>All three record methods, recording to capture file, taking a single image snapshot, or dumping rendered frames to image files, can be used simultaneously and used in conjunction with playback.</p>

    <h4><a id="2.3.5.1." name="2.3.5.1.">2.3.5.1. Record to Capture File</a></h4>
    InetVis can record back out to a Libpcap packet capture file which can later be reviewed with any other tool capable of reading the file format (e.g. Ethereal). A record session begins when the record button (with the round red record symbol) is toggled on, and stops once the button its toggled off. Everything seen in the current display (and time window), as well as any consequent playback, will be recorded while the red record button is toggled on.

    <h4><a id="2.3.5.2." name="2.3.5.2.">2.3.5.2. Taking an Image Snapshot</a></h4>
    Pressing the record button with a picture symbol allows the user to take a snapshot of the current image in the visualization pane of the InetVis Display window.

    <h4><a id="2.3.5.3." name="2.3.5.3.">2.3.5.3. Dumping Rendered Frames to Image Files</a></h4>

    <p>InetVis can record rendered frames to image files. Frame record sessions work much the same way as capture file record sessions. Whilst the record button with the film symbol is on, the application dumps each frame to an image file, and stops when the button is toggled off. For each frame, a raw copy of the image buffer is copied into an uncompressed image file (.ppm format). Consequently, recording image frames uses up a large amount of disk space at a rapid rate and can degrade the applications performance - setting the window to a smaller resolution will help reduce the performance hit.</p>

    <p>During frame recording, the timing is fixed to produce frames suitable for encoding video clips at 25 frames per second (fps). Even if, whilst recording, it appears that playback is degraded to less than 25 fps, the timing between each frames is calculated with respect to the data in the file and according to the replay speed. Therefore, when the frame capture files are encoded to video a clip at 25 frames per second, the video clip has the correct timing and replay speed while despite the recording process appearing slower. As a consequence, playback of some video clips may appear faster that the original recording.</p>

    <h4><a id="2.3.5.4." name="2.3.5.4.">2.3.5.4. Location of Recorded Files</a></h4>

    <p>Recording back to capture file, taking a snapshot image, or dumping frames, creates a directory hierarchy relative to the InetVis running directory.</p>

    <ul>
      <li>recorded/frames</li>

      <li>recorded/pcaps</li>

      <li>recorded/snapshots</li>
    </ul>

    <p>Within these directories, sub-directory structures follow and should be self explanatory. Some file and directory names include numeric timestamps of the form yyyymmdd-hhMMsszzz (where MM is minutes and zzz milliseconds) - the timestamps refer to timestamps in the capture file (or live capture).</p>

    <h4><a id="2.3.6." name="2.3.6.">2.3.6. Administrator Privileges</a></h4>

    <p>Administer privileges are required to open a live capture interface of the systems network interface.</p>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="3." name="3.">3. Requirements and Performance</a></h2>

    <h3><a id="3.1." name="3.1.">3.1. Operating Platform</a></h3>

    <ul>
      <li>Currently Linux based (but possible to port to Windows or Mac OS X).</li>

      <li>Known to run and compile on Ubuntu and Fedora Core Linux distributions.</li>
    </ul>

    <h3><a id="3.2." name="3.2.">3.2. Requirements to run pre-compiled binary</a></h3>

    <p>The binary is compiled for Linux based systems and optimised for the Intel i686 processor. It requires OpenGL, the Libpcap packet capture library and Trolltech Qt GUI API (as well as other system libraries such as libc6).</p>

    <ul>
      <li>libqt3-mt</li>

      <li>lipcap</li>

      <li>libc6</li>

      <li>libstdc++6</li>
    </ul>

    <h3><a id="3.3." name="3.3.">3.3. Minimum System Specification</a></h3>

    <p>At least a Pentium III class processor with 256MB RAM and a 3-D graphics accelerator supporting OpenGL is recommended.</p>

    <h3><a id="3.4." name="3.4.">3.4. Typical Performance</a></h3>

    <p>Tested with Intel Core2 (6300) 1.86 GHz CPU, 2GB RAM, GeForce 7600GS (256MB) graphics card.</p>

    <ul>
      <li>The application takes a best effort approach to rendering 25 frames a second. Once rendering at less than 25 frames per second, playback becomes slower than the chosen replay rate.</li>

      <li>During playback, handles 100MB capture file with about 500,000 packets at 25 frames per second.</li>

      <li>During playback, handles 200MB capture file with about 2,000,000 packets at about 5 FPS.</li>

      <li>When paused, handles 600MB capture file with about 6,000,000 packets at 8 FPS using an OpenGL display list&nbsp;optimisation.</li>

      <li>When recording frames, expect a significant performance hit due to heavy file I/O.</li>

    </ul>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="4." name="4.">4. Known Issues</a></h2>

    <ol>
      <li>Live monitoring not tested extensively and expected to be buggy.</li>

      <li>Switching numerous times between replay file mode and monitor local mode causes the application to crash with a seg fault.</li>

      <li>When system reaches full processor usage, replay rate is reduced to a best effort (plays slower than the chosen replay rate).</li>

      <li>Aggregating traffic would be a major improvement for dealing with production class network traffic.</li>

      <li>Currently, the application only caters for traffic captured from an Ethernet data link.</li>

      <li>Axes labels overlap in certain orientations.</li>

      <li>Error reporting needs refinement (multiple reports, at multiple levels, per error event may occur).</li>

      <li>Proper file indexing, instead of re-reading the file from the start would improve manipulations (such as setting the filter, setting the domain/port ranges, changing the colour scheme, and so forth).</li>

      <li>Would be nice to have a &#39;play list&#39; of capture files.</li>

      <li>Needs GUI controls to choose network interface for live monitoring, rather than always selecting the systems default interface.</li>

      <li>Lacks a mechanism to select a point an call up detailed textual information, such as the IP addresses, ports, and other such details.</li>

      <li>IP packets with options are processed, but the options are ignored. Fragmented IP packets are not yet handled and simply dropped by an implicit BPF filter &quot;ip[6:2] &amp; 0x3fff&quot;. Refer to RFC 791 for details about the fragment flags and offset field.</li>
    </ol>

    <p>...this is why the software is Alpha :)</p>

    <p>NB! Help improve the software - please report bugs (including tYpos and spelin errors in this doc), user experience, and feature wishes (see <a href="#8.">8. Contact</a>).</p>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="5." name="5.">5. Building and Developing InetVis</a></h2>

    <p>Written with c++, OpenGL, the Qt API, and Libpcap.</p>

    <h3><a id="5.1." name="5.1.">5.1. Requirements</a></h3>

    <ul>
      <li>
        essential build utilities like:

        <ul>
          <li>g++</li>

          <li>libc-dev</li>

          <li>libstdc++-dev</li>

          <li>make</li>
        </ul>
      </li>

      <li>libpcap-dev (old versions may cause compile errors)</li>

      <li>libgl1-mesa-dev</li>

      <li>libqt3-mt-dev</li>

      <li>qt3-dev-tools</li>
    </ul>

    <h3><a id="5.2." name="5.2.">5.2. Recommend Development Tools</a></h3>

    <p>The way I did it.</p>

    <ul>
      <li>qtdesigner</li>

      <li>qtassistant</li>

      <li>kate</li>
    </ul>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="6." name="6.">6. Acknowledgement</a></h2>

    <p>Based on the &quot;The Spinning Cube of Potential Doom&quot;, by Stephen Lau</p>

    <ul>
      <li><a href="http://www.nersc.gov/security/TheSpinningCube.html" target="_blank">www.nersc.gov/security/TheSpinningCube.html</a>.</li>
    </ul>

    <p>InetVis was initially developed as a student project at <a href="http://www.ru.ac.za/">Rhodes University</a>. Special thanks to Barry Irwin (project supervisor), and Shaun Bangay (Graphics honours course lecture of 2005). Their instruction and input has made this project possible.</p>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="7." name="7.">7. Disclaimer</a></h2>

    <p><strong>USE AT YOUR OWN RISK!</strong> InetVis is an academic project and not fit for commercial use. Whilst every effort has been made to confirm that the software accurately represents network traffic as intended, the developer(s) make no guarantee that it is error free. The source code is fairly contrived and convoluted as features where hastily hacked in as needed. Review of the code will be non-(non-non-trivial).</p>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="8." name="8.">8. Contact</a></h2>

    <p>Jean-Pierre van Riel<br />
     email: jp _dot_ vanriel _at_ gmail _dot_ com<br />
     website: <a href="http://research.ict.ru.ac.za/G02V2468/" target="_blank">http://research.ict.ru.ac.za/G02V2468/</a></p>
    <br />

    <hr />
    <!--========================================================================-->

    <h2><a id="9." name="9.">9. GPL License</a></h2>

    <p>InetVis - Internet Visualisation for network traffic analysis.<br />
     Copyright (C) 2006 - 2007, Jean-Pierre van Riel</p>

    <p>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</p>

    <p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p>

    <p>You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>

    <h3>Software Dependencies and Licensing</h3>

    <p>InetVis makes use of Libpcap/WinPcap, Qt and OpenGL. The open source version of Qt by Trolltech is licensed under the GPL, version 2 (as shown above). According to SGI, use of the OpenGL API requires no license. Libpcap is distributed under the BSD license. WinPcap, the windows derivative of libpcap is licensed by CASE Technologies. As required, the respective licenses are shown below.</p>

    <h4>Libpcap License</h4>

    <p>License: BSD</p>

    <p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>

    <ol>
      <li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li>

      <li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</li>

      <li>The names of the authors may not be used to endorse or promote products derived from this software without specific prior written permission.</li>
    </ol>

    <p>THIS SOFTWARE IS PROVIDED ``AS IS&#39;&#39; AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</p>
    <hr />
    <!--========================================================================-->
  </body>
</html>