
Jungle Monkey FAQ

David Helder

   Copyright  1999, 2000, 2001 by The Regents of the University of
   Michigan
     _________________________________________________________________

   1. General

        1.1. What's Jungle Monkey? 
        1.2. Where do I send questions, comments, bug reports? 
        1.3. What's Monkey Central? 
        1.4. What's a private channel? 
        1.5. Can people upload files to my channel? 
        1.6. Why is it taking so long to add my 6000 files? 
        1.7. What's a SHA? 
        1.8. Why's my domain name or IP address wrong? 
        1.9. What's a CRP server? 
        1.10. How do I limit the number of connections? 
        1.11. Will there be a Windows port? 
        1.12. Why is it called "Jungle Monkey"? 
        1.13. What's the name of the Wonder Twin's monkey? 

   2. Technology

        2.1. Is Jungle Monkey peer-to-peer? 
        2.2. How do Jungle Monkey channels work? 
        2.3. How are files transfered in Jungle Monkey? 
        2.4. What is end-host multicast (EM)? 
        2.5. Why don't you use IP Multicast? 
        2.6. Why not use IPv6 Multicast? 
        2.7. How does searching work? 
        2.8. How do I limit the amount of bandwidth that Jungle
                Monkey can use? 

   3. Jungle Monkey and other file transfer programs

        3.1. What's the difference between JM and FTP? 
        3.2. What's the difference between JM and Hotline? 
        3.3. What's the difference between JM and Napster? 
        3.4. What's the difference between JM and iMesh or CuteMX? 
        3.5. What's the difference between JM and Gnutella? 
        3.6. What's the difference between JM and Freenet? 
        3.7. What's the difference between JM and ___? 

   4. Developers

        4.1. Where is the protocol documented? 
        4.2. How can I help? 
        4.3. What do the numbers X, Y, and Z mean in "Jungle Monkey
                X.Y.Z"? 

1. General

   1.1. What's Jungle Monkey?

   Jungle Monkey (JM) is a distributed file sharing program. You join
   channels where people offer files for download. You can offer your own
   files and create your own channels as well. Once you download a file,
   others can connect to you to get that file. You can also search for
   files and chat.

   Jungle Monkey is part of a research project at the EECS
   Department. of the University of Michigan. We're looking at
   End-host Multicast and other multicast issues (see below for more
   information).

   1.2. Where do I send questions, comments, bug reports?

   You can send them to the Jungle Monkey mailing list. See the README
   for more information. You can also talk to the developers in the
   Jungle Monkey chat room on the Jungle Monkey channel.

   1.3. What's Monkey Central?

   Monkey Central is a channel hosted by junglemonkey.net. It's a sort of
   home channel that you can use to learn about other channels. You are
   welcome to add new channels to it.

   1.4. What's a private channel?

   A private channel is a channel that's not advertised on any other
   channel. Normally, when you create a channel, it is advertised on the
   channel you created it on. You can create a private channel by right
   clicking and selecting "Create private channel". If you want other
   people to be able to join it, you will need to give them the URL (then
   they can use "Join Channel" to join it).

   1.5. Can people upload files to my channel?

   No. When someone adds a file to your channel, the file stays on their
   computer unless you explicitly download it from them.

   1.6. Why is it taking so long to add my 6000 files?

   When you add a file (or directory or channel), Jungle Monkey
   calculates the SHA of the file and then announces the file on the
   channel. Calculating the SHA takes some time. If you add 6000 files or
   20 Gigs of files, it may take several minutes before they all appear.

   1.7. What's a SHA?

   SHA stands for Secure Hash Algorithm. SHA is a mathematical formula
   that converts your file to a small number. This number is sent to
   other users with the file announcement. When someone downloads your
   file, they recalculate the number from the file. If the number matches
   the number you sent, they know they got the right file. The formula
   was designed in such a way that it is extremely unlikely that two
   different files have the same number.

   1.8. Why's my domain name or IP address wrong?

   If JM cannot properly determine your domain name or IP address, you
   may need to set it manually under Settings->Preferences->Network. This
   often happens if you are behind a firewall or NAT.

   1.9. What's a CRP server?

   CRP is the Connection-Reflexion Protocol. A CRP client connects to a
   CRP server and the CRP server tries to connect back. JM uses CRP to
   check your network configuration. If the CRP server can connect back
   to you, then your network configuration is correct. CRP is something
   we designed - it's not standard. This functionality will probably be
   intgrated into future versions of MTP and BTP.

   1.10. How do I limit the number of connections?

   You can't do that yet. We've done some simulations that suggest the
   number is small. However, we do not yet have any empirical data to
   back this. See "How do I limit bandwidth?" below.

   1.11. Will there be a Windows port?

   Maybe. We have ported most of the network library (GNet) to Windows
   and replaced most of the non-portable in Jungle Monkey. We will make
   an announcement as soon as we have a working port. Contact us if you
   want to help.

   1.12. Why is it called "Jungle Monkey"?

   We wanted to name the program after an animal and Jungle Monkey was
   the most distributed (as in "distributed system") animal we could
   think of.

   1.13. What's the name of the Wonder Twin's monkey?

   Gleek. (And Zan and Jayna were the names of the Wonder Twins.) See
   http://fantasia.ncsa.uiuc.edu/Doug/superhtml/gleek.html

2. Technology

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

   2.1. Is Jungle Monkey peer-to-peer?

   Yes. Jungle Monkey is decentralized; there is no central server.

   2.2. How do Jungle Monkey channels work?

   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.

   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.

   2.3. How are files transfered in Jungle Monkey?

   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.

   2.4. What is end-host multicast (EM)?

   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.

   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.

   [telephone.png]

   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.

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

   2.5. Why don't you use IP Multicast?

   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.

   2.6. Why not use IPv6 Multicast?

   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.

   2.7. How does searching work?

   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.

   2.8. How do I limit the amount of bandwidth that Jungle Monkey can
   use?

   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.

   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.)

3. Jungle Monkey and other file transfer programs

   3.1. What's the difference between JM and FTP?

   FTP is the classic file transfer protocol/program. You connect to an
   FTP server with an FTP client and download or upload files. Archie is
   the classic FTP searching tool. Nowdays you can search for files using
   any search engine. The FTP protocol is well documented and has
   hundreds of implementations.

   Jungle Monkey is not client-server based. The JM protocols are not
   well documented and there is only one implementation.

   3.2. What's the difference between JM and Hotline?

   Hotline is basically FTP but all servers can register with a central
   server to create lists of available servers. Hotline also has news and
   chat. I believe the clients are free, but you have to pay for a
   server. Hotline is a proprietary program.

   Jungle Monkey is more distributed. Because Jungle Monkey uses
   multicast, it is potentially more scalable. Jungle Monkey is also open
   source and free.

   Hotline Homepage: http://www.hotlinesw.com

   3.3. What's the difference between JM and Napster?

   Napster is a program for sharing MP3's. A central Napster server has a
   list of each client's MP3s. You can search this database to find the
   closest Napster client with the MP3 you want. You receive the MP3
   directly from the client with the MP3 - it does not come from the
   Napster server.

   Jungle Monkey works with any file. When you download the file, you
   will download it from the closest host with the file, which is not
   necessarily the host which originially had the file. JM search is
   distributed, there is no central database.

   Jungle Monkey is open source, Napster is not (though there are open
   source clones).

   Napster Homepage: http://www.napster.com

   3.4. What's the difference between JM and iMesh or CuteMX?

   Both of the programs are basically like Napster, but will work with
   any sort of file.

   IMesh homepage: http://imesh.com/

   CuteMX: http://cutemx.com/

   3.5. What's the difference between JM and Gnutella?

   Gnutella is Nullsoft's file sharing program (Nullsoft is owned by
   AOL). It was never officially released, and it is unclear whether it
   will ever be officially released. However, some programmers have
   reverse-engineered an early beta version and written clones based on
   it.

   Gnutella clients form a mesh. Users join the mesh by first connecting
   to a well-known server and then the user may manually connect to other
   clients. When a client joins the mesh, it floods the mesh with
   information about it (which is basically an address and a globally
   unique ID). Each client who receives this message responds with
   information about itself. This way, all clients know the next hop to
   all other clients.

   Clients search for files by flooding the mesh with search messages.
   The message has a TTL to limit its spread. One unofficial spec says
   that other clients must track the search message to prevent loops.
   (Though this isn't necessary because clients have the routing
   information to do reverse path broadcasting.) If a client has a file
   the requester wants, it sends a message back to it. The file transfer
   is made directly from the client with the file using an HTTP-like
   protocol.

   A Nullsoft employee said in an IRC chat that Gnutella would probably
   not scale to more than 250 or so clients. The intent was that groups
   of people would join one small mesh that was known only to them (eg, a
   group of friends might have their own mesh). The advantage of this is
   that there is no central server which an ISP could ban connections to.

   Official Gnutella homepage (down): http://www.gnullsoft.com/
   Unofficial Gnutella hompage: http://gnutella.wego.com/

   3.6. What's the difference between JM and Freenet?

   Freenet is a distributed file publication system. In Freenet, each
   node (or "host", or "computer") has a cache of files and each file has
   a name. Nodes connect to each other to form a mesh (it is not
   specified how the host decides who its neighbors are in the mesh). The
   namespace in Freenet is flat and nodes can allocate names freely.

   Hosts can place files in their cache or any of their neighbors caches.
   If a host needs a file not in their cache, it asks its neighbor for
   the file. If the neighbor has the file, it gives the file to the
   requesting host. Otherwise, the neighbor asks one of its neighbors for
   the file. If that neighbor doesn't have it, it asks the next neighbor,
   and so on. In this manner, the mesh is searched depth-first for the
   file (though there is a TTL on the search so that the entire mesh
   isn't searched). It is not specified how a host decides which neighbor
   to ask for a file it needs.

   Note that to get a file it only needs to be in a cache _somewhere_ in
   the mesh. That is, the node that originally had the file may not even
   be in the mesh.

   In Jungle Monkey, each file has a URL allocated by a host. The URL has
   includes the host's name, so the namespace isn't flat. File are
   transfered using an E2E multicast tree, but to join the tree a host
   must connect to the host with the file first. The advantage of this is
   that each host effectively has its own namespace that cannot be
   polluted by other hosts. The disadvantage is that two hosts may offer
   the same file but it would have different multicast channels and thus
   different URLs.

   Freenet was conceived by Ian Clarke of the University of Edinburgh. It
   is described in his paper/tech report/thesis (?), "A Distributed
   Decentralised Information Storage and Retrieval System", available on
   the Freenet homepage. The paper also includes the results of some
   basic proof-of-concept experiments.

   Freenet homepage: http://freenet.sourceforge.net/

   3.7. What's the difference between JM and ___?

   Some other EM projects include:

     * Yoid ( http://www.aciri.org/yoid)
     * Narada (
       http://www.cs.cmu.edu/~hzhang/multicast/other/endsystem-index.
       html)
     * Overcast

   Some other overlay network projects include:

   Some other EM projects include:

     * MBone (
       http://www.cs.columbia.edu/~hgs/internet/mbone-faq.html)
     * X-Bone ( http://www.isi.edu/xbone)

   Write me <dhelder@umich.edu> if I've missed your project.

4. Developers

   4.1. Where is the protocol documented?

   The protocol won't be fully documented until version 1.0.0 and may
   change at any point until then, especially the end-host multicast
   code.

   4.2. How can I help?

   See the HACKING file for information on how to contribute.

   4.3. What do the numbers X, Y, and Z mean in "Jungle Monkey X.Y.Z"?

   They are version numbers. X is the major version, Y is the minor
   version, and Z is the microversion.

   Releases with an even minor version (ie, 1.0.3) are stable releases
   and intended for the general public. Releases with an odd minor
   version (ie, 0.3.2) are developer releases and should be used by
   developers and alpha-testers only.

   For stable releases, the microversion denotes the bug fix version.
   Stable releases in the same series should be compatable, but ones with
   larger microversions probably have fewer bugs.


  [This file was generated from FAQ.txt.sgml in the JM repository.]
