Re: sd and multicast ports Author: Van Jacobson Date: 1995/06/21 Forum: ucb.digital-video Sd uses an algorithm called "informed, partitioned, random assignment" to allocate both addresses & ports. It is loosely based on some 1960s work Bell Labs did on distributed trunk allocation & some late 80s Australian & Canadian work on adaptive binning for histograms & stochastic coders. If you can get a copy of my SIGCOMM tutorial notes from last year, they contain a brief description of the algorithm. Because of something called the "birthday problem" in probability theory, distributed, dynamic allocation from a relatively small address space is not easy if you want a solution that scales up to Internet (or even MBone) user populations. Sd is very scalable -- it explicitly accounts for session scope (both topological & temporal -- explicit scope is what leads to the "partitioned" in the algorithm name) and, thus, can fill the address space many times over. Under almost any reasonable extrapolation of the current use, sd's algorithm scales 4 to 6 orders of magnitude better than a dynamic allocation algorithm the Columbia was pushing last year. Sd was designed to coexist with other dynamic allocation algorithms and be fairly robust in the face of different allocation strategies (all addresses are fed through a pseudo-random perturbation table so that structure in the pattern of external allocations will not be misinterpreted as structure that changes sd's dynamic partitioning). But, since it's so hard to come up with a scalable address allocation algorithm, you might be better off just using sd. We had always intended to split sd into 2 pieces: a daemon that did address allocation & caching (that you presumably ran only one copy of per site) and user interface agents that just provided an sd-like GUI to the daemon. Mark Handley at UCL has since taken over sd development but I believe he is thinking along similar lines. Given the daemon, you can allocate an address by simply sending it an RPC saying what the time and space scope is & what, if any, other information should be advertised about the session (it should be possible to allocate addresses without saying what they are going to be used for). - Van