<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
  <!ENTITY appname          "EtherApe">
  <!ENTITY app "<application>EtherApe</application>">
  <!ENTITY appversion   "0.9.20">
  <!ENTITY manrevision  "0.8">
  <!ENTITY date "March 2021">
]>
<!--
      (Do not remove this comment block.)
  Maintained by the GNOME Documentation Project
  http://live.gnome.org/DocumentationProject
  Template version: 3.0 beta
  Template last modified 2006-11-21

-->
<!-- =============Document Header ============================= -->
<article id="index" lang="en">
  <articleinfo>
    <title>&app; Manual</title>
    <abstract role="description">
      <para>&app; is a graphical network monitor
      for Unix modeled after etherman. Featuring link level, ip and tcp modes, it
      displays network activity graphically. Hosts and links change in size with
      traffic. Protocols are color coded. It supports ethernet, fddi, ppp, slip,
      wlan devices plus several encapsulated packet types. It can filter traffic
      to be shown, and can read traffic from a file as well as live from the
      network.</para>
    </abstract>         


    <copyright>
      <year>2001</year>
      <year>2002</year>
      <year>2003</year>
      <year>2004</year>
      <year>2005</year>
      <year>2006</year>
      <year>2007</year>
      <year>2008</year>
      <year>2009</year>
      <year>2010</year>
      <year>2011</year>
      <year>2012</year>
      <year>2013</year>
      <year>2014</year>
      <year>2015</year>
      <year>2017</year>
      <year>2018</year>
      <year>2019</year>
      <year>2020</year>
      <year>2021</year>
      <holder>Juan Toledo</holder>
      <holder>Riccardo Ghetta</holder>
    </copyright>

    <authorgroup> 
      <author> 
    		<firstname>Juan</firstname> 
    		<surname>Toledo</surname> 
      </author> 
      <author role="maintainer"> 
    		<firstname>Riccardo</firstname> 
    		<surname>Ghetta</surname> 
      </author> 
    </authorgroup>

    <revhistory>
      <revision>
        <revnumber>&appname; Manual V0.1</revnumber>
        <date>2001</date>
        <revdescription>
          <para role="author">Juan Toledo
          <email>toledo@users.sf.net</email></para>
        </revdescription>
      </revision>
  
      <revision>
        <revnumber>&appname; Manual V0.2</revnumber>
        <date>January 2006</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>

      <revision>
        <revnumber>&appname; Manual V0.3</revnumber>
        <date>January 2010</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>

      <revision>
        <revnumber>&appname; Manual V0.4</revnumber>
        <date>February 2011</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>

      <revision>
        <revnumber>&appname; Manual V0.5</revnumber>
        <date>February 2011</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>

      <revision>
        <revnumber>&appname; Manual V0.6</revnumber>
        <date>April 2012</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>
    
      <revision>
        <revnumber>&appname; Manual V0.7</revnumber>
        <date>March 2016</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>
    
      <revision>
        <revnumber>&appname; Manual V0.8</revnumber>
        <date>March 2021</date>
        <revdescription>
          <para role="author">Riccardo Ghetta
          <email>bchiara@users.sf.net</email></para>
        </revdescription>
      </revision>
    
    </revhistory>

    <releaseinfo>This manual describes &appname; release &appversion;.</releaseinfo>

  </articleinfo>

  <sect1 id="etherape-introduction">
    <title>Introduction</title>

    <para><application>&appname;</application> is a graphical network monitor
    for Unix modeled after etherman. Featuring ether, ip and tcp modes, it
    displays network activity graphically. Hosts and links change in size with
    traffic. Protocols are color coded. It supports ethernet, fddi, ppp, slip,
    wlan devices plus several encapsulated packet types. It can filter traffic
    to be shown, and can read traffic from a file as well as live from the
    network.</para>

    <para><application>&appname;</application> is also a tool for gathering
    network statistics, and the data can be presented in a number of different
    ways.</para>

    <para>To run <application>&appname;</application>, select <menuchoice>
        <guisubmenu>Applications</guisubmenu>

        <guimenuitem>&appname;</guimenuitem>
      </menuchoice> from the <guimenu> Main Menu</guimenu>, or type
    <command>etherape</command> on the command line.</para>

    <para>&app; supports several command line options to simplify monitoring. 
    Please refer to the &appname; unix manual page, <ulink url="man:etherape" type="man">
    &app;(1)</ulink>.</para>
  </sect1>

  <sect1 id="etherape-usage">
    <title>Using &appname;</title>

    <para>&app; can be used to have an overview
    of traffic conditions in your network. It is a great tool to easily
    pinpoint who is consuming the most bandwith, or to check which computers
    are actually talking to some others.</para>

    <sect2 id="quickstart">
      <title>Quick Start</title>

      <warning>
	<para>To monitor a live network you need to run &app; with root permissions. 
	If you are not the administrator of the machine you will ony be able to analyze 
	previously generated capture files.</para>
	<para>As with any application, running &app; as root can be a security risk if 
	some malicious traffic can trigger an unwanted behaviour.</para>
	<para>While at this time no such bugs are known, exercise a little care.</para>
      </warning>

      <para>Starting &app; opens the
      <interface>Main window</interface> (see <link
      linkend="mainwindow-fig">screenshot</link>).</para>

      <para>By default, &app; will try to open
      the default network interface for capture in IP mode, and will display a
      diagram of network traffic right away.</para>

      <para>Every computer currently taking part in a conversation in the
      network will be represented as a circle (a node) in the diagram, with
      its name displayed on top of it. The fact that two computers are
      communicating with each other is represented with a line between those
      two nodes (a link).</para>

      <para>You will notice that both nodes and links vary with time in color
      and size. Size is used to represent the amount of traffic: The bigger a
      node is, the more traffic it is dumping into the network. The wider a
      link is, the more data is flowing between those two nodes.</para>

      <para>Color, on the other hand, is used to represent the protocol being
      used the most by a link or a node. You will find a legend for what a
      particular color means in the left side of the <interface>main
      window</interface> or in the <link linkend="protodlg">All Protocols dialog</link>.</para>

      <para>Look closely and you will notice that in fact links are not lines
      between nodes. Rather, every direction of communication is represented
      by a triangle. Packets go from the shorter side to the opposite vertex.
      Since computers usally talk back, there will usually be two such
      triangles between two nodes, the base of each representing how much each
      node is contributing to the conversation.</para>

      <para>You don't need to know much more if you just want to have a simple
      look at your network. Nevertheless, there are many settings that you can
      use to configure what exactly will appear in the diagram, and you will
      have to understand how this settings affect the program to have a proper
      comprehension of the meaning of the display.</para>

      <para>Besides, &appname; offers you the possibility of displaying
      stastistics for many of the elements involved. Read on to learn
      how.</para>

      <figure id="mainwindow-fig">
        <title>&appname; Main Window</title>

        <screenshot>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/appmain.png" format="PNG" />
            </imageobject>

            <imageobject>
              <imagedata fileref="figures/appmain.eps" format="EPS" />
            </imageobject>

            <textobject>
              <phrase>&appname; Main Window screenshot</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </figure>
    </sect2>

    <sect2 id="modes">
      <title>Modes</title>

      <para>Modes control how &app; captures, decodes and 
            displays network packets.
      Node identification also depend on the current mode, thus changing mode requires restarting 
            the capture.</para>
      <para>

      <variablelist>
          <varlistentry>
            <term>Link Layer</term>
            <listitem>
              <para>Link Layer mode focuses on traffic at link layer (e.g. Ethernet) level.
              Nodes are identified by their link layer address, highlighting local paths.</para>
	      <para>In this mode traffic coming from an external network across a router is shown as originating at the router.
	      Conversely, packets headed outside are shown as consumed by the router.</para>
	      <para>To convert MAC addresses to machine names, &app; reads uses the /etc/ethers file.</para> 
	      <para>Default filter: none</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>IP</term>
            <listitem>
              <para>The default mode, focusing on traffic at IP level or above.
	      Nodes are identified by their IP address, if available.</para>
	      <para>Unless directly addressed, routers are ignored, showing the final packet destination.</para>
	      <para>The default filter expression is 'ip or ip6', discarding all non IP packets.
	      Remove the filter to see non-IP traffic (e.g. ARP queries)</para>
              <warning>
                <para>Due to pcap limitations, when filtering while
                capturing VLAN-tagged packets, your filter must start with
                'vlan' (e.g. 'vlan and (ip or ip6)' ) and all traffic
                must be tagged, otherwise the filter will not work.</para>
              </warning>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>TCP</term>
            <listitem>
              <para>In this mode a node represents an (host, port) pair, with node labels shown as 
	            "name:port".</para>
              <para>Since the display becomes quickly crowded, this mode is best suited for analyzing a small number of hosts, perhaps by restricting the capture scope with a filter.</para>
	      <para>The default filter expression for TCP mode is 'tcp', capturing only 
	            TCP packets. Removing the filter usually doesn't make much sense, but you
		    can change it to 'tcp or udp' to see both TCP and UDP traffic.
</para>
              <warning>
                <para>Due to pcap limitations, when filtering while
                capturing VLAN-tagged packets, your filter must start
                with 'vlan' (e.g. 'vlan and tcp') and all traffic must
                be tagged, otherwise the filter will not work.</para>
              </warning>
            </listitem>
          </varlistentry>

      </variablelist>
      </para>
    </sect2>
  </sect1>

    <sect1 id="toolbar">
      <title>Toolbar</title>

      <para>The <link linkend="figure-usage-toolbar">toolbar</link> provides
      access to several commonly used routines. <variablelist>
          <varlistentry>
            <term><guimenu>Start</guimenu></term>

            <listitem>
              <para>Starts capturing on the selected live interface.</para>
            </listitem>
          </varlistentry>

          <varlistentry id="toolbar-next">
            <term><guimenu>Next</guimenu></term>

            <listitem>
              <para>Active only when replaying a capture file, when pressed
              fast forwards to the next packet, skipping any delay.  Useful
              for dealing with long pauses in captured data.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term><guimenu>Pause</guimenu></term>

            <listitem>
              <para>Pauses capture, freezing both the diagram and any detail
              window.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term><guimenu>Stop</guimenu></term>

            <listitem>
              <para>Stops the capture, clearing diagram and all traffic
              statistics. Closes also all detail windows .</para>

              <warning>
                <para>Everytime a capture is stopped, all statistics gathered
                up to that time will be deleted from memory. Think about it
                when you have left &appname; running for several hours.</para>
              </warning>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term><guimenu>Pref.</guimenu></term>

            <listitem>
              <para>Opens the <link
              linkend="etherape-prefs">Preferences</link> dialog.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term><guimenu>Prot.</guimenu></term>

            <listitem>
              <para>Opens the <link linkend="protodlg">Protocols</link> detail
              window.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term><guimenu>Nodes</guimenu></term>

            <listitem>
              <para>Opens the <link linkend="allnodesdlg">All Nodes</link> detail
              window.</para>
            </listitem>
          </varlistentry>
        </variablelist></para>

      <figure id="figure-usage-toolbar">
        <title>&appname; Toolbar</title>

        <screenshot>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/eth_toolbar.png" format="PNG" />
            </imageobject>

            <imageobject>
              <imagedata fileref="figures/eth_toolbar.eps" format="EPS" />
            </imageobject>

            <textobject>
              <phrase>&appname; toolbar screenshot</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </figure>
    </sect1>

    <sect1 id="menubar">
      <title>Menus</title>

      <para>The menu bar, located at the top of the <interface>Main
      Window</interface>, contains the following menus:</para>

      <variablelist>
        <varlistentry>
          <term><guimenu>File</guimenu></term>

          <listitem>
            <para>This menu contains: 
	    <itemizedlist>
                <listitem>
                  <para><menuchoice>
                      <guimenuitem>Open</guimenuitem>
                    </menuchoice> opens an external capture file. If you want
                  to capture on a live interface, see the <link
                  linkend="capture"> <interface>Capture</interface> </link>
                  menu.</para>
		  <note>
		    <para>Capture files often contain lengthy sections without traffic. Here the command-line option 
		    --max-delay or the <link linkend="toolbar-next">Next button</link> may be useful to avoid staring for hours to an empty display.
Conversely, --min-delay can help analyze many short lived connections.</para>
		  </note>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>Export</guimenuitem>
                    </menuchoice> creates an xml with a snapshot of current nodes and their statistics, followed by a per protocol global statistics.  A sample output file can be found in <xref linkend="appendix-a"/>.</para>
		  <note>
		    <para>&app; can automatically export to user-chosen files
		      with two command line options, <option>--final-export</option> and <option>--signal-export</option>. The first writes to file at end of a replay, the second dumps when receiving signal USR1.</para>
		  </note>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>
                        Preferences
                        <shortcut>
                          <keycap>Ctrl-P</keycap>
                        </shortcut>
                      </guimenuitem>
                    </menuchoice> opens the <link
                  linkend="etherape-prefs">Preferences</link> dialog.</para>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>Quit</guimenuitem>
                    </menuchoice> quits the application.</para>
                </listitem>
              </itemizedlist></para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term id="capture"><guimenu>Capture</guimenu></term>

          <listitem>
            <para>This menu contains: <itemizedlist>
                <listitem>
                  <para>
		    <menuchoice>
                      <guimenuitem>Mode</guimenuitem>
                    </menuchoice> 
		    opens a submenu governing the operating <link linkend="modes">mode</link>.
		  </para>
		  <itemizedlist>
		    <listitem>
		      <para>
			<menuchoice>
			  <shortcut>
			    <keycap>Alt-L</keycap>
			  </shortcut>

			  <guimenuitem>Link Layer</guimenuitem>
			</menuchoice> 
			Selects Link Layer mode. 
		      </para>
		    </listitem>

		    <listitem>
		      <para>
			<menuchoice>
			  <shortcut>
			    <keycap>Alt-I</keycap>
			  </shortcut>

			  <guimenuitem>IP</guimenuitem>
			</menuchoice> 
			Selects IP mode. 
		      </para>
		    </listitem>

		    <listitem>
		      <para>
			<menuchoice>
			  <shortcut>
			    <keycap>Alt-T</keycap>
			  </shortcut>

			  <guimenuitem>TCP</guimenuitem>
			</menuchoice> 
			Selects TCP mode. 
		      </para>
		    </listitem>
		  </itemizedlist>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>Interfaces</guimenuitem>
                    </menuchoice> opens a submenu to select the capture
                  interface.</para>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>
                        Start
                        <shortcut>
                          <keycap>Ctrl-S</keycap>
                        </shortcut>
                      </guimenuitem>
                    </menuchoice> begins capturing on the selected live
                  interface.</para>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>Next</guimenuitem>
                    </menuchoice> when pressed fast forwards to the next packet, skipping any delay.   Useful for dealing with long pauses in captured data. Active only during replay.</para>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>
                        Pause
                        <shortcut>
                          <keycap>Ctrl-Q</keycap>
                        </shortcut>
                      </guimenuitem>
                    </menuchoice> temporarily halts the capture, freezing both
                  the diagram and any detail window.</para>
                </listitem>

                <listitem>
                  <para><menuchoice>
                      <guimenuitem>
                        Stop
                        <shortcut>
                          <keycap>Ctrl-O</keycap>
                        </shortcut>
                      </guimenuitem>
                    </menuchoice> terminates the capture, clearing diagram and
                  traffic statistics. Closes also all detail windows .
                  <warning>
                      <para>Everytime a capture is stopped, all statistics
                      gathered up to that time will be deleted from memory.
                      Think about it when you have left &appname; running for
                      several hours.</para>
                    </warning></para>
                </listitem>
              </itemizedlist></para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guimenu>View</guimenu></term>

          <listitem>
            <para>This menu contains: <itemizedlist>
                <listitem>
                  <para><guimenuitem>Protocols</guimenuitem> opens the <link
                  linkend="protodlg"><interface>Protocols
                  dialog</interface></link>, which allows you see global
                  traffic statistics per protocol.</para>
                </listitem>

                <listitem>
                  <para><guimenuitem>Nodes</guimenuitem> opens the <link
                  linkend="allnodesdlg"><interface>All Nodes
                  dialog</interface></link>, which allows you see all known nodes with 
                  summary statistics.</para>
                </listitem>

                <listitem>
                  <para><guimenuitem>
                      Full screen
                      <shortcut>
                        <keycap>F11</keycap>
                      </shortcut>
                    </guimenuitem>
                    Make the diagram full screen.</para>
                </listitem>

                <listitem>
                  <para><guimenuitem>Toolbar</guimenuitem> toggles the
                  toolbar.</para>
                </listitem>

                <listitem>
                  <para><guimenuitem>Legend</guimenuitem> toggles the protocol
                  legend.</para>
                </listitem>

                <listitem>
                  <para><guimenuitem>Statusbar</guimenuitem> toggles the
                  Status bar.</para>
                </listitem>

                <listitem>
                  <para><guimenuitem>
                      Refresh
                      <shortcut>
                        <keycap>Ctrl-L</keycap>
                      </shortcut>
                    </guimenuitem>
                    Forces a diagram repaint.</para>
                </listitem>
              </itemizedlist></para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guimenu>Help</guimenu></term>

          <listitem>
            <para>This menu contains: <itemizedlist>
                <listitem>
                  <para><guimenuitem>About</guimenuitem> Opens the
                  <interface>About</interface> dialog which shows basic
                  information about &app;, such
                  as release number, or the author's names.</para>
                </listitem>
              </itemizedlist></para>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect1>

  <sect1 id="nodedlg">
    <title>Node detail dialog</title>

    <para>Double-clicking on a node opens a detail dialog wich shows realtime
    traffic statistics for the chosen node.</para>

    <para>Averaged realtime traffic is shown in the "Istantaneous" row, while
    the "Accumulated" one displays long term statistics. The third row shows average packet size.</para>
    <para>A protocol table depicting data on all protocol traversing the
    chosen node is also displayed. See the <link
    linkend="protodlg">All Protocols dialog</link> entry for additional
    information.</para>

    <note>
      <para>Only active protocols matching the "Protocol Stack Level"
      preference settings will be displayed.</para>
    </note>

    <figure id="figure-node-dlg">
      <title>Node detail dialog</title>

      <screenshot>
        <mediaobject>
          <imageobject>
            <imagedata fileref="figures/node_info.png" format="PNG" />
          </imageobject>

          <imageobject>
            <imagedata fileref="figures/node_info.eps" format="EPS" />
          </imageobject>

          <textobject>
            <phrase>Node detail dialog screenshot</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
    </figure>
  </sect1>

  <sect1 id="linkdlg">
    <title>Link detail dialog</title>

    <para>Double-clicking on a link opens a detail dialog wich shows realtime
    traffic statistics for the chosen link.</para>

    <para>Averaged realtime traffic is shown in the "Istantaneous" row, while
    the "Accumulated" one displays long term statistics. The third row shows
    average packet sizes.</para>

    <para>A protocol table depicting data on all protocol traversing the
    chosen link is also displayed. See the <link
    linkend="protodlg">All Protocols dialog</link> entry for additional
    information.</para>

    <note>
      <para>Only active protocols matching the "Protocol Stack Level"
      preference settings will be displayed.</para>
    </note>

    <figure id="figure-link-dlg">
      <title>Link detail dialog</title>

      <screenshot>
        <mediaobject>
          <imageobject>
            <imagedata fileref="figures/link_info.png" format="PNG" />
          </imageobject>

          <imageobject>
            <imagedata fileref="figures/link_info.eps" format="EPS" />
          </imageobject>

          <textobject>
            <phrase>Link detail dialog screenshot</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
    </figure>
  </sect1>

  <sect1 id="protodlg">
    <title id="proto-ref">All Protocols dialog</title>

    <para>The Protocols dialog shows global traffic statistics for
    active (i.e. not expired) protocols. Expiration is controlled by the
    Global Protocol Timeouts preference section.</para>

    <para>Double clicking on a column name orders entries by that column data
    or reverses the sorting order. A small arrow after the chosen column name
    shows the sorting order (in the screenshot, entries are ordered by
    name).</para>

    <para>A column can also be dragged, changing its position in the table, or 
          disabled by deselecting it in the <guilabel>Columns</guilabel>
    menu.</para>

    <para>
      Available statistics are:
      <itemizedlist>
	<listitem><para>Protocol color</para></listitem>
	<listitem><para>Protocol name. For TCP/UDP traffic, the services file is searched for a matching entry.</para></listitem>
	<listitem><para>Protocol port (TCP/UDP traffic only).
	<note><para>&app; assigns the same port to all nodes in a packet using the following heuristic:
	<orderedlist>
	  <listitem><para>if only one port of the two matches is mapped to a
	  color, that entry is used. This way you can override automatic port assignement.</para></listitem>
	  <listitem><para>if both ports of packet are mapped, the minor one is choosen.</para></listitem>
	  <listitem><para>if only one port of the two matches an entry of the services file, that entry is used.</para></listitem>
	  <listitem><para>if both ports of packet match, the minor one is choosen.</para></listitem>
	  <listitem><para>if no ports match a services file entry, the minor one is chosen. The packet is labelled "unknown traffic" and processed as such (see "Group unknown ports" in <xref linkend="group-unknown"/>). </para></listitem>
	</orderedlist> 
	</para></note> 
	</para></listitem>
	<listitem><para>Inst Traffic shows the (moving average of) active traffic.</para></listitem>
	<listitem><para>Accum Traffic shows the accumulated traffic.</para></listitem>
	<listitem><para>Avg Size is the average packet size computed on the total traffic seen.</para></listitem>
	<listitem><para>Last Heard reports when the last packet was seen.</para></listitem>
	<listitem><para>Packets is the total number of packets.</para></listitem>
      </itemizedlist>
</para>

    <note>
      <para>Only those protocols matching the "Protocol Stack Level"
      preference settings will be displayed.</para>
    </note>

    <figure id="figure-proto-dlg">
      <title>Protocol detail dialog</title>

      <screenshot>
        <mediaobject>
          <imageobject>
            <imagedata fileref="figures/proto_info.png" format="PNG" />
          </imageobject>

          <imageobject>
            <imagedata fileref="figures/proto_info.eps" format="EPS" />
          </imageobject>

          <textobject>
            <phrase>All Protocols dialog screenshot</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
    </figure>
  </sect1>

  <sect1 id="allnodesdlg">
    <title id="allnodes-ref">All Nodes dialog</title>

    <para>The Nodes dialog shows global traffic statistics for all 
    known (i.e. not expired) nodes. Expiration is controlled by the
    Node Timeouts preference section.</para>

    <para>Double clicking on a column name orders entries by that column data
    or reverses the sorting order. A small arrow after the chosen column name
    shows the sorting order (in the screenshot, entries are ordered by
    name).</para>

    <para>A column can also be dragged, changing its position in the table.</para>

    <note>
      <para>This dialog lists all known nodes, even those not shown on the diagram because their Diagram timeout is expired. A node is fully expired and &app; forgets it only when all three timeouts (Diagram, Traffic Statistics, Protocol Statistics) are expired.</para>
    </note>

    <figure id="figure-allnodes-dlg">
      <title>All Nodes dialog</title>

      <screenshot>
        <mediaobject>
          <imageobject>
            <imagedata fileref="figures/all_nodes.png" format="PNG" />
          </imageobject>

          <imageobject>
            <imagedata fileref="figures/all_nodes.eps" format="EPS" />
          </imageobject>

          <textobject>
            <phrase>All Nodes dialog screenshot</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
    </figure>
  </sect1>

  <sect1 id="etherape-prefs">
    <title id="pref-ref">Preferences</title>

    <para>To change the application settings, select <menuchoice>
        <guimenu>File</guimenu>

        <guimenuitem>Preferences...</guimenuitem>
      </menuchoice>. The <guilabel>Preferences</guilabel> dialog contains the
    following tabbed sections:</para>

    <itemizedlist>
      <listitem>
        <para><link linkend="etherape-prefs-diagram">Diagram</link></para>
      </listitem>

      <listitem>
        <para><link linkend="etherape-prefs-colors">Colors</link></para>
      </listitem>

      <listitem>
        <para><link linkend="etherape-prefs-timings">Timings</link></para>
      </listitem>
    </itemizedlist>

    <para>Any change you make will be applied immediately. When satisfied, click on
    <guibutton>OK</guibutton> to close the
    <interface>Properties</interface> dialog. The <guibutton>Save</guibutton>
    saves current settings (to ~/.gnome2/&appname;). 
    </para>
    <para>To abort the changes and return to previous values, click the 
    <guibutton>Cancel</guibutton> button.</para>

    <sect2 id="etherape-prefs-diagram">
      <title>Diagram</title>

      <para>The diagram tab contains many settings related to the traffic
      display.</para>

      <variablelist>
        <varlistentry>
          <term><guilabel>Protocol Stack Level</guilabel></term>

          <listitem>
            <para>Use this drop-down list box to specify the level of the OSI
            stack to use when displaying protocols. Select one of the
            following options:</para>

            <itemizedlist>
              <listitem>
                <para><guilabel>Topmost recognized protocol</guilabel></para>

                <para>For every packet, chooses the highest level protocol
                detected.</para>
              </listitem>

              <listitem>
                <para><guilabel>Level 2 (Eg: ETHII)</guilabel></para>

                <para>Shows only OSI level 2 information. For example ETHII
                or FDDI</para>
              </listitem>

              <listitem>
                <para><guilabel>Level 3 (Eg: IP)</guilabel></para>

                <para>Shows only OSI level 3 protocols, like IP or IPX</para>
              </listitem>

              <listitem>
                <para><guilabel>Level 4 (Eg: TCP)</guilabel></para>

                <para>Shows only OSI level 4 protocols, tipically TCP, UDP and
                ICMP</para>
              </listitem>

              <listitem>
                <para><guilabel>Level 5 (Eg: HTTP)</guilabel></para>

                <para>Shows application level protocols, like HTTP, POP3,
                etc</para>
              </listitem>
            </itemizedlist>

            <para>Default: <guilabel>Topmost recognized
            protocol</guilabel>.</para>
                  <warning>
                      <para>Protocol level attribution can be confused by 
			encapsulation. For instance, when an Ethernet packet
			containing IP traffic is encapsulated by an LLC-SNAP
			header, IP data might be incorrectly flagged as ISO level 4 or 5.</para>
                      <para>The most safe settings is Topmost
                      recognized protocol.</para>
                    </warning>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Size Variable</guilabel></term>

          <listitem>
            <para>Use this drop-down list box to specify wich variable governs
            node and link sizes. Select one of the following options:</para>

            <itemizedlist>
              <listitem>
                <para><guilabel>Instant. traffic (In+Out)</guilabel></para>

                <para>Size depends on the instantaneous traffic on
                node.</para>
		<note>
		  <para>In this context, "istantaneous" means traffic averaged over the "Averaging Time Period".</para>
		</note>

              </listitem>

              <listitem>
                <para><guilabel>Instant. traffic (Inbound)</guilabel></para>

                <para>Size depends on instantenous inbound
                traffic.</para>
              </listitem>

              <listitem>
                <para><guilabel>Instant. traffic (Outbound)</guilabel></para>

                <para>Size depends on instantaneous outbound
                traffic.</para>
              </listitem>

              <listitem>
                <para><guilabel>Accum. traffic (In+Out)</guilabel></para>

                <para>Size depends on the total traffic accumulated on
                node.</para>
              </listitem>

              <listitem>
                <para><guilabel>Accum. traffic (Inbound)</guilabel></para>

                <para>Size depends on accumulated inbound traffic.</para>
              </listitem>

              <listitem>
                <para><guilabel>Accum. traffic (Outbound)</guilabel></para>

                <para>Size depends on accumulated outbound
                traffic.</para>
              </listitem>
            </itemizedlist>

            <para>Default: <guilabel>Instant. traffic
            (Outbound)</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Size Mode</guilabel></term>

          <listitem>
            <para>Use this drop-down list box to specify how to weight the
            value of the <guilabel>Node Size Variable</guilabel>. Select one
            of the following options:</para>

            <itemizedlist>
              <listitem>
                <para><guilabel>Linear</guilabel></para>

                <para>Uses directly the input value.</para>
              </listitem>

              <listitem>
                <para><guilabel>Logarithmic</guilabel></para>

                <para>Uses the decimal logarithm of input variable.</para>
              </listitem>

              <listitem>
                <para><guilabel>Square Root</guilabel></para>

                <para>Uses the square root of input variable.</para>
              </listitem>
            </itemizedlist>

            <para>Default: <guilabel>Linear</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Node Radius Multiplier</guilabel></term>

          <listitem>
            <para>This slider specifies the scaling multiplier to apply to
            node sizes.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Inner Ring Scale</guilabel></term>

          <listitem>
            <para>This slider specifies the relative diameter of the inner ring with 'central nodes' 
                   with the outer ring.  Defaults to 0.5, i.e. central ring will diameter will be half 
                   of outer ring's</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Central Node(s)</guilabel></term>

          <listitem>
            <para>This control usually is blank, but can be filled with a comma-separated list of node
            addresses (IP, CIDR expressions, globs) or names.</para>
            <para>The identified nodes will be placed in a inner ring, with the other nodes around.</para>
            <para>This setting can be used, as an example, to distinguish local from internet traffic.</para>
            <itemizedlist>
              <para>Examples of allowed expressions:</para>
              <listitem>
                <para>plain address: 172.16.2.0</para>
              </listitem>
              <listitem>
                <para>full name: myhost.example.com</para>
              </listitem>
              <listitem>
                <para>CIDR: 172.16.2.0/24 or fe80::/16</para>
              </listitem>
              <listitem>
                <para>GLOB: *.example.com</para>
              </listitem>

            </itemizedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Capture filter</guilabel></term>

          <listitem>
            <para>This drop-down combo box specifies the capture filter to use
            using the standard pcap syntax.</para>

            <para>Default: <guilabel>ip or ip6</guilabel></para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Node Label Font</guilabel></term>

          <listitem>
            <para>Selects the font used for node labels.</para>
            <para>Default: <guilabel>Sans 8 Pts.</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Node Label Color</guilabel></term>

          <listitem>
            <para>Selects the color used for node labels.</para>
            <para>Default: <guilabel>yellow</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Hide node names</guilabel></term>

          <listitem>
            <para>If checked, doesn't show the node names.</para>

            <para>Default: <guilabel>unchecked</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry id="group-unknown">
          <term><guilabel>Group unknown ports</guilabel></term>

          <listitem>
            <para>If checked, all traffic belonging to ports not specified in
            the services file is accumulated under "UDP-unknown" and
            "TCP-unknown".  In unchecked, those ports are shown as "UDP-nnnn" or "TCP-nnnn", where nnnn is the port number.
	<note><para>&app; assigns the same port to all nodes in a packet using the following heuristic:
	<orderedlist>
	  <listitem><para>if only one port of the two matches an entry of the services file, that entry is used.</para></listitem>
	  <listitem><para>if both ports of packet match, the minor one is choosen.</para></listitem>
	  <listitem><para>if no ports match an entry, the minor one is chosen. The packet is labelled "unknown traffic" and processed as such.</para></listitem>
	</orderedlist> 
</para></note> 
	    </para>

            <para>Default: <guilabel>checked</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Name resolution</guilabel></term>

          <listitem>
            <para>If checked, enables name resolution. If unchecked, show only
            numeric addresses (like the -b command line option).</para>

            <para>Default: <guilabel>checked</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Use Background Image</guilabel></term>

          <listitem>
            <para>If checked, the images file specified by <guilabel>Background Image</guilabel> 
            will be loaded and shown as canvas background.</para>

            <para>Default: <guilabel>unchecked</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Background Image</guilabel></term>

          <listitem>
            <para>An image file to load and display as canvas background.</para>

            <para>Default: <guilabel>empty</guilabel>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Display pcap stats</guilabel></term>

          <listitem>
            <para>Controls the display of capture statistics. Chosing <guilabel>(Off)</guilabel> 
            disables it.</para>

            <para>Default: <guilabel>(Off)</guilabel>.</para>
          </listitem>
        </varlistentry>

      </variablelist>

      <figure id="figure-pref-diagram">
        <title>Diagram preferences tab</title>

        <screenshot>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/pref_diagram_dlg.png" format="PNG" />
            </imageobject>

            <imageobject>
              <imagedata fileref="figures/pref_diagram_dlg.eps" format="EPS" />
            </imageobject>

            <textobject>
              <phrase>Diagram preferences tab screenshot</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </figure>
    </sect2>

    <sect2 id="etherape-prefs-colors">
      <title>Colors</title>

      <para>The colors tab assigns colors to protocols.</para>

      <variablelist>
        <varlistentry>
          <term><guilabel>Color-Protocol matching table</guilabel></term>

          <listitem>
            <para>This list box lists available colors and optionally maps a
            specified color to one or more protocols.</para>

            <para>The <guilabel>Color</guilabel> column shows the color</para>

            <para>A color could appear in more rows, to allow protocol
            grouping by color (e.g. show FTP and FTP-PASSIVE as cyan).</para>

            <warning>
              <para>&appname; will use only the colors specified in this list.
              If the list is empty, all diagrams will be gray.</para>
            </warning>

            <para>The mapping of colors to protocols works as follows:</para>

            <itemizedlist>
              <listitem>
                <para>A protocol wich name appears in a
                <guilabel>Protocol</guilabel> column, will be drawn in the
                corresponding row color. As an example, in the dialog <link
                linkend="figure-pref-colors">screenshot</link>, all DOMAIN
                traffic is drawn in blue.</para>
              </listitem>

              <listitem>
                <para>A protocol not appearing in the list will have a color
                assigned casually from the items without an
                assigned protocol.  If all entries have an assigned protocol 
		unmapped traffic will be shown as gray.</para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Add color</guilabel></term>

          <listitem>
            <para>Adds a new row to the list. A dialog will open to select the
            actual color value.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Remove color</guilabel></term>

          <listitem>
            <para>Removes the selected row from the list.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Change color</guilabel></term>

          <listitem>
            <para>A dialog will open to choose a new color for the selected row.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Edit protocols</guilabel></term>

          <listitem>
            <para>Opens a <link linkend="protocol-edit-dlg">dialog</link>
            where the current row protocols can be edited. A row can contain multiple protocols, separated by a comma.</para>

            <figure id="protocol-edit-dlg">
              <title>Protocol edit dialog</title>

              <screenshot>
                <mediaobject>
                  <imageobject>
                    <imagedata fileref="figures/protocol_edit_dlg.png"
                               format="PNG" />
                  </imageobject>

                  <imageobject>
                    <imagedata fileref="figures/protocol_edit_dlg.eps"
                               format="EPS" />
                  </imageobject>
                </mediaobject>
              </screenshot>
            </figure>
          </listitem>
        </varlistentry>

      </variablelist>

      <figure id="figure-pref-colors">
        <title>Colors preferences tab</title>

        <screenshot>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/pref_colors_dlg.png" format="PNG" />
            </imageobject>

            <imageobject>
              <imagedata fileref="figures/pref_colors_dlg.eps" format="EPS" />
            </imageobject>

            <textobject>
              <phrase>Colors preferences tab screenshot</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </figure>
    </sect2>

    <sect2 id="etherape-prefs-timings">
      <title>Timings</title>

      <para>The timings tab contains all time-related settings of
      &appname;.</para>

      <variablelist>
        <varlistentry>
          <term><guilabel>Diagram Refresh Period (ms)</guilabel></term>

          <listitem>
            <para>Minimum time (in milliseconds) to wait before refreshing the
            diagram. Smaller values increase the frequency of updates, making
            the graph smoother, but with increased CPU usage.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Averaging Time (ms)</guilabel></term>

          <listitem>
            <para>Traffic average period in milliseconds. Smaller values
            follow more closely the instantaneous traffic, while higher
            settings smooth the diagram. Averages need packet data, so an
            higher averaging time means also higher memory consumption.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Diagram Timeouts (s)</guilabel></term>

          <listitem>
            <para>This section aggregates all timeouts related to nodes and links visibility.</para>

            <variablelist>
              <varlistentry>
                <term><guilabel>Nodes</guilabel></term>

                <listitem>
                  <para>After this time without traffic, a node is removed
                  from diagram. Node data are still held in memory until the
                  Node Statistics Timeout expires, so if new
                  traffic comes accumulated statistics are still valid. Zero
                  disables the timer (i.e. a node will be always shown).</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term><guilabel>Links</guilabel></term>

                <listitem>
                  <para>After this time without traffic, a link is removed
                  from diagram. Link data are still held in memory until the
                  relevant statistics timeout expires, so if new
                  traffic comes accumulated statistics are still valid.</para>
                </listitem>
              </varlistentry>
            </variablelist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Statistics Timeouts (s)</guilabel></term>
          <listitem>
              <para>These timeouts govern statistics expiration. When one
              of these timeout expires, an item is removed and its
              statistics gone.</para>

            <variablelist>
              <varlistentry>
                <term><guilabel>Nodes</guilabel></term>
                <listitem>
                    <para>This timeout governs statistics expiration for nodes.</para>
                    <para>After this time without traffic, a node is
                    removed from memory, clearing all statistics. A zero value
                    disables the timeout.</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term><guilabel>Links</guilabel></term>
                <listitem>
                    <para>This timeout governs statistics expiration for links.</para>
                    <para>After this time without traffic, a link is
                    removed from memory, clearing all statistics. A zero value
                    disables the timeout.</para>
                </listitem>
              </varlistentry>
            </variablelist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><guilabel>Global Protocol Timeouts (s)</guilabel></term>
          <listitem>
              <para>These timeouts govern the protocol window expiration. When one
              of these timeout expires, an item is removed and its
              statistics gone.</para>

            <variablelist>
              <varlistentry>
                <term><guilabel>Statistics</guilabel></term>
                <listitem>
                    <para>This timeout governs statistics expiration for global protocols.</para>
                    <para>After this time without traffic, a protocol is
                    removed from memory, clearing all statistics. A zero value
                    disables the timeout.</para>
                </listitem>
              </varlistentry>
            </variablelist>
          </listitem>
        </varlistentry>

      </variablelist>

      <figure id="figure-pref-timings">
        <title>Timings preferences tab</title>

        <screenshot>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/pref_timings_dlg.png" format="PNG" />
            </imageobject>

            <imageobject>
              <imagedata fileref="figures/pref_timings_dlg.eps" format="EPS" />
            </imageobject>

            <textobject>
              <phrase>Timings preferences tab screenshot</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </figure>
    </sect2>
  </sect1>

  <sect1 id="etherape-cmdline">
    <title>Command line options</title>

    <para>While most of &app; functionality can be controlled via the GUI, some
    unique modes are accessible only using the command line.</para>

    <variablelist> 
      <varlistentry> 
        <term><option>-?</option></term>
        <term><option>--help</option></term>
        <listitem> 
          <para>Brief command line help.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-d</option></term>
        <term><option>--diagram-only</option></term>
        <listitem> 
          <para>Display nodes without labels.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-f <replaceable>capture filter</replaceable></option></term>
        <term><option>--filter=<replaceable>capture filter</replaceable></option></term>
        <listitem> 
          <para>Sets the capture filter to use (use PCAP-style syntax).</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-i <replaceable>interface name</replaceable></option></term>
        <term><option>--interface=<replaceable>interface name</replaceable></option></term>
        <listitem> 
          <para>Sets the capture interface.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-l <replaceable>number of nodes</replaceable></option></term>
        <term><option>--node-limit=<replaceable>number of nodes</replaceable></option></term>
        <listitem> 
          <para>Limits the number of nodes displayed.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-m <replaceable>link|ip|tcp</replaceable></option></term>
        <term><option>--mode=<replaceable>link|ip|tcp</replaceable></option></term>
        <listitem> 
          <para>mode of operation.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-n</option></term>
        <term><option>--numeric</option></term>
        <listitem> 
          <para>Disable name resolution, shows only numeric addresses.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-P <replaceable>file with list of nodes and their columns</replaceable></option></term>
        <term><option>--position=<replaceable>file with list of nodes and their columns</replaceable></option></term>
        <listitem> 
          <para>Manually position nodes using columns. The input file takes
          the format of:
<literallayout class="monospaced">
  node.mydomain.com        1
  router1.mydomain.com     2
  router2.mydomain.com     2
  172.16.2.[0-9]*          1
  .*.mydomain.com          1
  ff02:.*                  2
  fe80:.*                  1
</literallayout>
          </para>
          <para>The first column is a regex of either the FQDN or the IP address.</para>
          <para>The second column is a number indicating the "column" that the
          node will be positioned in in the display with column 1 being on the
          far left. Up to 1000 columns are permitted.</para>
          <para>Instead of being arranged in a circle the nodes are displayed
          in columns. This is quite useful for arranging nodes so that you can
          see nodes on the "inside" of your network on the left and the public
          internet nodes (anything not specified in the config file) on the
          right.</para>
          <para>The input file above will cause 3 columns to display. Nodes
          with FQDN containing mydomain.com, those in the 172.16.2.0/24
          subnet, and link local IPv6 addresses will be in the left column. 2
          "routers", and IPv6 multicast will be in the center column and
          everything else will be in the right column. Column locations are
          determined by the first match while searching from the top of the
          input. Overlapping regex's can be used with the understanding that
          the first match will determine the location. The broadest regex's
          should be near the bottom of the position specification.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-q</option></term>
        <term><option>--quiet</option></term>
        <listitem> 
          <para>Disable informational messages.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-r <replaceable>file to replay</replaceable></option></term>
        <term><option>--replay-file=<replaceable>file to replay</replaceable></option></term>
        <listitem> 
          <para>Replay the given capture file.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>-s</option></term>
        <term><option>--stationary</option></term>
        <listitem> 
          <para>Don't move nodes around. <emphasis>Deprecated.</emphasis></para> 
        </listitem> 
      </varlistentry> 


      <varlistentry> 
        <term><option>--final-export=<replaceable>file to export to</replaceable></option></term>
        <listitem> 
          <para>Export statistics to the named file at the end of replay.</para> 
          <warning>
	    <para>The named file will be overwritten without asking.</para>
          </warning>
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>--signal-export=<replaceable>file to export to</replaceable></option></term>
        <listitem> 
          <para>Export statistics to the named file when receiving USR1.</para> 
          <warning>
	    <para>The named file will be overwritten without asking.</para>
          </warning>
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>--min-delay=<replaceable>delay</replaceable></option></term>
        <listitem> 
          <para>When replaying a file, minimum delay in ms between a packet and the next.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>--max-delay=<replaceable>delay</replaceable></option></term>
        <listitem> 
          <para>When replaying a file, maximum delay in ms between a packet and the next.</para> 
        </listitem> 
      </varlistentry> 

      <varlistentry> 
        <term><option>--glade-file=<replaceable>glade file</replaceable></option></term>
        <listitem> 
          <para>Uses the named libglade file for loading widgets.</para> 
        </listitem> 
      </varlistentry> 

    </variablelist> 
  </sect1>


  <sect1 id="bugs">
    <title>Known Bugs and Limitations</title>

    <para>Some old libpcap versions have a bug for which a filter "ip" doesn't
    capture icmp traffic.</para>

    <para>Due to pcap limitations, VLAN-tagged packets are visible
    only if the filter expression starts with 'vlan' and in this case
    only VLAN-tagged traffic will be shown.</para>

    <para>OSI level attribution may be confused by
    encapsulation. For instance, when an Ethernet packet containing IP
    traffic is encapsulated by an LLC-SNAP header, IP data might be
    incorrectly flagged as ISO level 4 or 5.</para>

    <para>Most NFS traffic will show up as UDP_FRAGMENT or just RPC</para>

    <para>Older distributions, (e.g. CentOS 5, or RHEL 5) do not support PPI
    encapsulation.</para>

  </sect1>

  <sect1 id="appendix-a">
    <title>XML export file format</title>

    <para>This section presents &app; XML export file format followed by a detailed analysis.</para>
    <warning><para>At this time &app; exports only node information and global protocol statistics. Future releases might export also link data.</para></warning>
<para>This example shows a file containing only a single, simple, node. A real file will contain many nodes, possibly with more involved &lt;protocol&gt; subtags.  The general structure remains the same, however.</para>

    <programlisting linenumbering="numbered">
&lt;?xml version="1.0"?&gt;
&lt;!-- traffic data in bytes. last_heard in seconds from dump time --&gt;
&lt;etherape&gt;
  &lt;header&gt;
    &lt;capture_device&gt;eth0&lt;/capture_device&gt;
    &lt;timestamp&gt;2011-02-26 10:33:27 +0100&lt;/timestamp&gt;
  &lt;/header&gt;
  &lt;nodes&gt;
    &lt;node&gt;
      &lt;name&gt;
        &lt;id&gt;
          &lt;IP&gt;10.0.0.98&lt;/IP&gt;
        &lt;/id&gt;
        &lt;resolved_name&gt;floss.rulez.example.net&lt;/resolved_name&gt;
        &lt;numeric_name&gt;10.0.0.98&lt;/numeric_name&gt;
      &lt;/name&gt;
      &lt;traffic_stats&gt;
        &lt;active_packets&gt;12&lt;/active_packets&gt;
        &lt;in&gt;
          &lt;stats&gt;
            &lt;avg&gt;1080&lt;/avg&gt;
            &lt;total&gt;1027&lt;/total&gt;
            &lt;avg_size&gt;102&lt;/avg_size&gt;
            &lt;packets&gt;10&lt;/packets&gt;
            &lt;last_heard&gt;0.357600&lt;/last_heard&gt;
          &lt;/stats&gt;
        &lt;/in&gt;
        &lt;out&gt;
          &lt;stats&gt;
            &lt;avg&gt;34416&lt;/avg&gt;
            &lt;total&gt;14456&lt;/total&gt;
            &lt;avg_size&gt;1205&lt;/avg_size&gt;
            &lt;packets&gt;12&lt;/packets&gt;
            &lt;last_heard&gt;0.000000&lt;/last_heard&gt;
          &lt;/stats&gt;
        &lt;/out&gt;
        &lt;tot&gt;
          &lt;stats&gt;
            &lt;avg&gt;35496&lt;/avg&gt;
            &lt;total&gt;15483&lt;/total&gt;
            &lt;avg_size&gt;704&lt;/avg_size&gt;
            &lt;packets&gt;22&lt;/packets&gt;
            &lt;last_heard&gt;0.000000&lt;/last_heard&gt;
          &lt;/stats&gt;
        &lt;/tot&gt;
        &lt;protocols&gt;
          &lt;protocol&gt;
            &lt;level&gt;1&lt;/level&gt;
            &lt;key&gt;ETH_II&lt;/key&gt;
            &lt;stats&gt;
              &lt;avg&gt;55948&lt;/avg&gt;
              &lt;total&gt;14049&lt;/total&gt;
              &lt;avg_size&gt;669&lt;/avg_size&gt;
              &lt;packets&gt;21&lt;/packets&gt;
              &lt;last_heard&gt;0.174299&lt;/last_heard&gt;
            &lt;/stats&gt;
            &lt;name&gt;
              &lt;id&gt;
                &lt;link-id&gt;fe:ff:20:00:01:00&lt;/link-id&gt;
              &lt;/id&gt;
              &lt;numeric_name&gt;fe:ff:20:00:01:00&lt;/numeric_name&gt;
              &lt;accumulated&gt;14049&lt;/accumulated&gt;
            &lt;/name&gt;
          &lt;/protocol&gt;
          &lt;protocol&gt;
            &lt;level&gt;2&lt;/level&gt;
            &lt;key&gt;IP&lt;/key&gt;
            &lt;stats&gt;
              &lt;avg&gt;55948&lt;/avg&gt;
              &lt;total&gt;14049&lt;/total&gt;
              &lt;avg_size&gt;669&lt;/avg_size&gt;
              &lt;packets&gt;21&lt;/packets&gt;
              &lt;last_heard&gt;0.174299&lt;/last_heard&gt;
            &lt;/stats&gt;
            &lt;name&gt;
              &lt;id&gt;
                &lt;IP&gt;10.0.0.98&lt;/IP&gt;
              &lt;/id&gt;
              &lt;resolved_name&gt;floss.rulez.example.net&lt;/resolved_name&gt;
              &lt;numeric_name&gt;10.0.0.98&lt;/numeric_name&gt;
              &lt;accumulated&gt;14049&lt;/accumulated&gt;
            &lt;/name&gt;
          &lt;/protocol&gt;
          &lt;protocol&gt;
            &lt;level&gt;3&lt;/level&gt;
            &lt;key&gt;TCP&lt;/key&gt;
            &lt;stats&gt;
              &lt;avg&gt;55948&lt;/avg&gt;
              &lt;total&gt;14049&lt;/total&gt;
              &lt;avg_size&gt;669&lt;/avg_size&gt;
              &lt;packets&gt;21&lt;/packets&gt;
              &lt;last_heard&gt;0.174299&lt;/last_heard&gt;
            &lt;/stats&gt;
          &lt;/protocol&gt;
          &lt;protocol&gt;
            &lt;level&gt;4&lt;/level&gt;
            &lt;key&gt;WWW&lt;/key&gt;
            &lt;stats&gt;
              &lt;avg&gt;55948&lt;/avg&gt;
              &lt;total&gt;14049&lt;/total&gt;
              &lt;avg_size&gt;669&lt;/avg_size&gt;
              &lt;packets&gt;21&lt;/packets&gt;
              &lt;last_heard&gt;0.174299&lt;/last_heard&gt;
            &lt;/stats&gt;
          &lt;/protocol&gt;
        &lt;/protocols&gt;
      &lt;/traffic_stats&gt;
    &lt;/node&gt;
  &lt;/nodes&gt;
  &lt;global_protocols&gt;
       ...  (global protocol statistics - using exactly the same format of node statistics)
  &lt;/global_protocols&gt;
&lt;/etherape&gt;
</programlisting>


<para>The export file begins with an header (lines 5-9) containing the file
  replayed (tag &lt;capture_file&gt;, not shown) or the capture device (tag
  &lt;capture_device&gt;, line 5), followed by the export timestamp.
</para>
<para>Node information are, perhaps unsurprisingly, enclosed by &lt;node&gt; tags (lines 9-115).  A node is composed by an identifying header, &lt;name&gt; (lines 10-16) followed by traffic statistics, enclosed by &lt;traffic_stats&gt; (lines 17-107).
</para>
<para>Lines 10-16 contain the primary node identifier, i.e. the name/address displayed by &app;. In this example is the IPv4 address 10.0.0.4, along its resolved name.</para>
<para>While only one &lt;name&gt; can be displayed, a node usually has multiple identities: an Ethernet MAC address, an IP one, perhaps a NETBIOS name. Every identity has a matching &lt;name&gt; element; see lines 57-63 and 74-82.</para>
<para>A &lt;name&gt; is identified by its &lt;id&gt; i.e. its address, which
  can be of type IP (an IPv4 dotted decimal address), IPv6 or 'link-id', a
  link-level, colon separated, list of octets (e.g. the Ethernet MAC address). You see an example of the latter in lines 58-60.</para>
<para>&lt;numeric_name&gt; and &lt;resolved_name&gt; are the high level equivalent of &lt;id&gt;; &lt;accumulated&gt; is the total bytes of traffic related with the name. &app; uses this statistic to choose between multiple names.
</para>
<para>Traffic statistics (lines 17-107) give a summary of node traffic: first,
  the number of active packets (line 18), i.e. the packets received during the 'Node traffic statistics' interval (see <xref linkend="etherape-prefs-timings"/>).
&lt;in&gt; record incoming traffic, &lt;out&gt; outgoing and &lt;tot&gt; the total bytes seen.  The &lt;protocols&gt; element reports traffic broken down by protocol.</para>
<para>&lt;stats&gt; elements are:
<itemizedlist>
<listitem><para>&lt;avg&gt; is the moving average of active packets (see "Averaging Time", <xref linkend="etherape-prefs-timings"/>), in bytes. Shown as 'Instantaneous' traffic in <xref linkend="nodedlg"/> </para></listitem>
<listitem><para>&lt;total&gt; is the accumulated traffic seen.</para></listitem>
<listitem><para>&lt;avg_size&gt; is the average packet size.</para></listitem>
<listitem><para>&lt;packets&gt; is the number of packets received.</para></listitem>
<listitem><para>&lt;last_heard&gt; is the distance in seconds between time of exporting and the last packet seen.  I.e. 2.000100 means 2 seconds and 100 microseconds ago.</para></listitem>
</itemizedlist>
</para>
<para>&lt;protocol&gt; elements carry per protocol breakdown of node statistics. A packet might affect multiple protocols: an HTTP request over Ethernet is recorded by protocols "WWW", "TCP", "IP" and "ETH_II", while an Ethernet broadcast is seen only as "ETH_II".</para>
<para>Here &lt;level&gt; roughly equates to the OSI level, but multiple
  encapsulation can confuse the engine and introduce additional levels. A
  protocol level 2 is always lower than one of level 3.</para>
<para>&lt;key&gt; is a mnemonic identifier of the protocol; for TCP/UDP ports is taken from the services file, if available.</para>
<para>There can be multiple entries with the same level (e.g. HTTP and
  IMAP). Only the combination of level and key is unique. </para>
  </sect1>

  <sect1 id="authors">
    <title>Authors</title>

    <para>&app; was originally written by Juan Toledo (
    <email>toledo@users.sourceforge.net</email>). Later releases by Riccardo
    Ghetta (<email>bchiara@users.sourceforge.net</email>).</para>

    <para>To find more information about &app;,
    please visit <ulink type="http" url="http://etherape.sourceforge.io/">
    the &app; web page</ulink>. Instructions for submitting bug reports can be
    found <ulink type="http"
    url="http://etherape.sourceforge.io/bug-reporting.html">
    on-line</ulink>.</para>
  </sect1>

  <sect1 id="license">
    <title>License</title>

    <para>This program is free software; you can redistribute it and/or modify
    it under the terms of the <ulink type="help" url="gnome-help:gpl">
    <citetitle>GNU General Public License</citetitle></ulink> as published by
    the Free Software Foundation; either version 2 of the License, or (at your
    option) any later version.</para>

    <para>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 <citetitle>GNU General Public
    License</citetitle> for more details.</para>

    <para>A copy of the <citetitle>GNU General Public License</citetitle> is
    included as an appendix to the <citetitle>GNOME Users Guide</citetitle> .
    You may also obtain a copy of the <citetitle>GNU General Public
    License</citetitle> from the Free Software Foundation by visiting <ulink
    type="http" url="http://www.fsf.org">their Web site</ulink> or by writing
    to <address>Free Software Foundation, Inc. <street>59 Temple 
      Place</street> - Suite 330 <city>Boston</city>, <state>MA</state> 
      <postcode>02111-1307</postcode> <country>USA</country></address></para>
  </sect1>
</article>
