<!-- ##### Technology Section ##### -->

<qandadiv>
  <title>Technology</title>

  <para>
    (The explainations are written for the average user.  If you
    would like a more in-depth answer, please email us. )
  </para>


  <qandaentry>

    <question>
      <para>
	Is Jungle Monkey peer-to-peer?
      </para>
    </question>

    <answer>
      <para>
        Yes. Jungle Monkey is decentralized; there is no central
	server.  
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	How do Jungle Monkey channels work?
      </para>
    </question>

    <answer>
      <para>
	Jungle Monkey channels are built upon multicast.  Multicast
	lets you send one thing to many computers at once.  Computers
	join a "multicast group" and can then send to or receive from
	that group.  The alternative is to use unicast, which lets you
	send one thing to one computer.  However, if you needed to
	send something to multiple computers you would need to send it
	multiple times.
      </para>

      <para>
	A channel in Jungle Monkey is a multicast group.  People send
	announcements for their files to the group.  Announcements are
	sent periodly, so it may take a while before you see
	announcements for a channel you just joined.
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	How are files transfered in Jungle Monkey?
      </para>
    </question>

    <answer>
      <para>
	When you download a file, you first connect to rendezvous
	server.  The rendezvous server has a list of mirrors of that
	file.  JM then figures out which mirror is closest and
	downloads the file from that mirror.  Jungle Monkey will 
	eventually support simultaneous downloads from multiple
	sources.
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	What is end-host multicast (EM)?
      </para>
    </question>

    <answer>
      <para>
	The variant of multicast Jungle Monkey uses is end-host
	multicast (as opposed to IP Multicast or IPv6 Multicast - see
	below).  End-host multicast organizes a bunch of computers
	together in a tree so that they can share data efficiently.
      </para>
      
      <para>
	An end-host multicast tree is similar to telephone tree.  A
	telephone tree is a tree of people with phone numbers used to
	distribute information.  For example, I might be organizing a
	party and distribute a telephone tree to my friends (see
	figure below) so I can keep them up-to-date with party plans.
	The telephone tree may say if David calls Alice and Bob, Alice
	should call Carl and Dana and Bob should call Elijah and Fred,
	then Carl should call Gary and Hilda, and so on.  Each person
	is responsible for calling two people.  Ultimately, everyone
	who is in the telephone tree will receive the information and
	everyone had to call at most 2 people.
      </para>

      <para>
        <graphic fileref="images/telephone.png"></graphic>
      </para>

      <para>
	End-host multicast is not like a telephone tree in that the
	tree is self-organizing.  The means that when you join the
	group, your computer finds the closest computer and makes that
	computer your parent in the tree.  Also, other computers may
	make your computer their parent.
      </para>

      <para>
	There are different variants of end-host multicast.  The
	protocol Jungle Monkey uses is called the "Banana Tree
	Protocol".
      </para>

    </answer>
  </qandaentry>


  <qandaentry>

    <question>
      <para>
	Why don't you use IP Multicast?
      </para>
    </question>

    <answer>
      <para>
	IP Multicast is an extension of the Internet Protocol, the
	protocol that make the Internet work.  It supports multicast
	at a low-level protocol and is, in theory, more efficient than
	End-host Multicast.  However, IP Multicast is not widely
	available.  In fact, the original version of Jungle Monkey
	used IP Multicast, but we abondoned it because we couldn't
	find any users who had it.
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	Why not use IPv6 Multicast?
      </para>
    </question>

    <answer>
      <para>
	IPv6, the next generation of the Internet Protocol, supports
	multicast.  We will consider using it once IPv6 is more widely
	used, but don't hold your breathe.
      </para>
    </answer>
  </qandaentry>


  <qandaentry>

    <question>
      <para>
	How does searching work?
      </para>
    </question>

    <answer>
      <para>
        Searching is done in "search groups" and each search group has
	a multicast group.  To search, a query message is sent to the
	group.  If another member has a matching file (or channel,
	search group, or chat group), they will send a match message
	to the group.  Members may cache previous match messages and
	use them to answer queries.  We are currently researching
	new distributed keyword search architectures.
      </para>

    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	How do I limit the amount of bandwidth that Jungle Monkey can use?
      </para>
    </question>

    <answer>
      <para>
	The end host cannot currently limit the amount of bandwidth
	used or number of connections made.  Jungle Monkey uses TCP,
	so the congestion control mechanisms that most TCP
	implemenations use should be sufficient to avoid congesting
	the network.
      </para>

      <para>
	Also, if you are a network administrator, there is something
	else you can do to lower the bandwidth used by JM.  When file
	transfers are made, the ToS bits on the packets are set to
	IPTOS_LOWCOST.  Network administrators may be able to set
	queueing policies based on this so that file transfers receive
	a lower priority than other network traffic.  (If you know how
	to do this or have a reference on how to do this, please send
	it to me so that I can include this information.)
      </para>
    </answer>

  </qandaentry>

</qandadiv>
