Notes for Team 4
(From September 25 meeting with Prof. Keshav)
Remarks
- Your main goal is to translate one thing to another. An IP address to a phone number. A
phone number to an email address.
- You also need to provide a way to install new entries into the database.
- The simplest would be to use a file, but you could also use DNS, or something that works
like DNS.
- You must worry about storage, replication, and consistency. DNS takes into account
replication and cacheing, although it does not store phone numbers. However, it handles
resource records and doesn't really care what you put into these resource records.
- DNS works with hierarchical names. You should consider doing this too. We will be using
SIP, where a name is in the form of an email address: x@a.b.c.d, for example. You will
have to figure out what is in a name. In the simplest case, start with one name matching
one telephone number.
- When that works, you can match one name with several phone numbers, and dynamically
changing IP addresses, as you would get from DHCP. To handle this, you would have a
prioritized list, and a filter that governs how the list is prioritized (day/night, etc.)
- Team provides location management, sits on stop of storage and provides resource records
to signalling.
- To learn more about DNS, refer to the O'Reilly book called "DNS and BIND". You
can download the bind source from the net.
- Start with a simple client-server setup. If that works, you can move on to server-server
implementations which can support distributed databases, as well as redundancy.
- You should handle extensions on telephone numbers.
- Remember that building a scalable, fast network directory service is a challenging
project.
Questions
- How can we make bind (written in C) link with Java? Use Java's
"native" interface.
- What should we use for the server code? Either write it in C or
use Java.
- Are we responsible for the client? Give them a library of
directory maintenance functions, like "add". Thus clients won't care if this is
a socket or not; they just call a stub that you provide that does whatever you decide.
- What does distributed database imply? replicated servers,
consistency, failover, handling multiple gateways. But you don't need to do this for now.
- Do all communications go through the directory? Yes, even those
that go from one PC to another, entirely in the internet. These communications still need
address translation.
- What should we do about authentication? Do we let just anyone add their stuff
to our directory? Initially don't worry about this. The simplest method would
be to provide a password in plain text, where you and the client both know the password
that is to be used. A stronger method is challenge/response.