Following is a brief write up about the term project. There is a new newsgroup (csd.cmsc417.term-project) for the project. All postings about the term project should go there.

In order to understand what is required for the term project, you will have to first read RFC 1459 (Internet Relay Chat Protocol (IRC)).


e-CHIMP: e-CHIMP is the CMSC 417 Hierarchical IP-based Messaging Protocol.


e-CHIMP users: A named e-CHIMP communicating end-point. The name of a user corresponds to IRC nicknames.

e-CHIMP group: A named set of e-CHIMP users (corresponds to IRC channel)

e-CHIMP clients: Local processes that e-CHIMP users use to correspond to other e-CHIMP users (equivalent to IRC clients).

e-CHIMP servers: e-CHIMP forms a two-level hierarchy. The base-level consists of e-CHIMP clients. e-CHIMP servers form the second-level in the hierarchy. These are "transit" nodes that do not host users but act as message forwarders for e-CHIMP clients. Servers roughly correspond to IRC servers.

e-CHIMP routed network: A set of e-CHIMP clients and servers. Nodes in a e-CHIMP routed network maintain route tables that indicate how to route messages to various e-CHIMP users using e-CHIMP servers. Unlike IRC, a e-CHIMP network does not have to be a tree; in fact, e-CHIMP networks should be able to "seamlessly" recover from connectivity failures and node faults.


e-CHIMP clients connect to e-CHIMP servers using TCP.

e-CHIMP servers connect to each other using UDP.

e-CHIMP servers do not provide any guarantee about connectivity or reliability. In this way, the e-CHIMP servers are much like IP routers. e-CHIMP servers must detect link and node failures. e-CHIMP servers must also implement an "eventually consistent" routing protocol for e-CHIMP client messages.

e-CHIMP clients implement an end-to-end messaging protocol that ensures integrity and reliability. The e-CHIMP end-to-end protocol does NOT have to implement congestion control but can implement flow control for extra credit.

e-CHIMP servers do not keep state about e-CHIMP users. Their routing tables only contain entries about e-CHIMP clients. e-CHIMP clients must implement a directory service protocol using which they can determine which client a particular user is currently connected to. Messages sent from e-CHIMP clients contain both a destination e-CHIMP client id and an user id; however, en-route e-CHIMP servers ignore the user id and route based on the e-CHIMP client-id. The user id is used at the destination client to demultiplex the e-CHIMP message to the proper user.

e-CHIMP users should be able to start an arbitrary number of "topics" corresponding to e-CHIMP groups. All groups should eventually be "available" at all e-CHIMP clients. (The directory service can be used to advertise groups and users). Deletion of groups and private groups need not be implemented. e-CHIMP users should be able to send individual messages to other users.