home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / comp / sys / isis / 344 < prev    next >
Encoding:
Text File  |  1992-12-24  |  11.4 KB  |  224 lines

  1. Newsgroups: comp.sys.isis
  2. Path: sparky!uunet!gatech!rpi!batcomputer!cornell!ken
  3. From: ken@cs.cornell.edu (Ken Birman)
  4. Subject: Re: Forwarded comments Re: Notes on IP Multicast option for ISIS
  5. Message-ID: <1992Dec24.165539.28302@cs.cornell.edu>
  6. Organization: Cornell Univ. CS Dept, Ithaca NY 14853
  7. References: <1992Dec24.162642.27415@cs.cornell.edu>
  8. Date: Thu, 24 Dec 1992 16:55:39 GMT
  9. Lines: 213
  10.  
  11. In article <1992Dec24.162642.27415@cs.cornell.edu> werner@freya.inesc.pt (Werner Vogels) writes:
  12. >
  13. >HP does conform the "standard" and DEC (ultrix) has promised to. SGI was the first to
  14. >have Multicast IP added to their protocol suite. In principle all BSD 4.4 (or the NET2)
  15. >based OS and OS servers all support the same multicast interface. Mach2.5 and the 
  16. >mach3.0 ux server both support VMTP and implicitely Multicast IP.
  17.  
  18. This is good news -- although I had the impression that IP multicast is not
  19. normally available yet.  Do people need to do anything to enable these
  20. facilities?
  21.  
  22. >You do not need the mrouted to have a full functioning mcastip on your
  23. >local area network. Mrouted can be used to route messages between connected
  24. >subnets or to build tunnels with other sites that run mcastip. I have done a
  25. >lot of experimenting with mrouted and consider it to be a pain to incorporate
  26. >it into a reliable multicast scheme with atomic membership updates. The whole
  27. >membership scheme at the router is not meant to support the same guarantees
  28. >as we would like to have. The updates to the membership propagate very slowly.
  29. >An example for this is the traffic from the IETF audiocast session that would
  30. >still arive at INESC even minutes after I closed the session. More of the
  31. >experiences with the mbone show that you can build a wide area mcastip net
  32. >but cannot rely on the membership information at the routers very much.
  33. >We plan to develop a better routing strategy for reliable multicast,
  34. >especially for the MAN environment (several links connected by a high speed,
  35. >high bandwith backbone).
  36. >
  37. >Also if you allow interconnected subnets you should decided with which scope
  38. >(ttl) you want to create groups. There are a number of problems connected
  39. >to this .....
  40.  
  41. This is very interesting.  If altrnatives to mrouted surface, I hope people
  42. will keep us informed!  As it happens, Isis depends only very slightly on
  43. routing and certainly doesn't count on the membership information in any
  44. significant way (except that you obviously won't get a speedup until the
  45. add-member information propagates enough so that packets are forwarded, if
  46. necessary, to a new member!)
  47.  
  48. As for the TTL, I currently use TTL_SITE, but you could reconfigure the
  49. code to change this.  Should it be an option?
  50.  
  51. >
  52. >|>      If these are not up, IP multicast use triggers
  53. >|>      a point-to-point mechanism slightly but not drastically slower than
  54. >|>      the usual Isis UDP scheme.
  55. >
  56. >I do not really known if I understand this, but if "these are not up"
  57. >shouldn't you just use the old scheme instead of a new point-to-point scheme.
  58.  
  59. Well, the new code has its own code path and packet format for the wire.
  60. To route through the old UDP scheme and then send packets sideways as if
  61. they had come in via IP multicast would impose a higher overhead, and 
  62. would mean that you would have ack traffic for both the multicast layer and
  63. the UDP layer.  The way I currently do it, you can be active exclusively
  64. in the IP mcast layer, with it doing all its own acks and so forth, and
  65. in a normal case that will be cheaper, I think.  And, the retransmission code
  66. can look just like a normal multicast packet coming in off the net.
  67.  
  68. The real problem is that if you run on a platform that doesn't support
  69. IP multicast, everything will have to be retransmitted to you since you
  70. will never receive "directly", and this obviously will slow things down.
  71. The only reason I want to support this case at all is to make the mechanism
  72. less intrusive in systems that happen to have an old machine lying around.
  73. I was worried that in large production settings, the mechanism should be
  74. as easy to use and support as possible, or else people won't be able to
  75. administer it.  So, this seems like a reasonable compromise.
  76.  
  77. You do get some complaints when you start the application if IP mcast
  78. is supposed to be used but can't be -- so the admin people would get
  79. feedback.  But, meanwhile, things will still work...
  80.  
  81. >|>    - You will need to have an authorization for "ipmcast" in your isis.rc
  82. >|>      file.
  83. >|> 
  84. >|>    - You will need to specify ISIS_IPMCAST as a flag to isis_remote_init()
  85. >|> 
  86. >|>    - The group(s) that will use IP multicast should specify PG_IPMCAST as 
  87. >|>      an option to pg_join() (clients find out automatically).
  88. >|> 
  89. >|>    - You will need to specify a range of port numbers dedicated to use by
  90. >|>      Isis for IP multicast.  You can decide how many and what base address
  91. >|>      Isis should use.  Isis will reserve them as soon as a program specifies
  92. >|>      ISIS_IPMCAST.  Ideally, one port per group using PG_IPMCAST, but we
  93. >|>      can manage if the number is smaller.  In the limit, you can specify
  94. >|>      that just one port be used, but in this case processes will get and
  95. >|>      discard some messages not intended for them.
  96. >
  97. >With port do you mean UDP port or mcastip ip address? 
  98.  
  99. Both.  The way that Steve Deering's code works, an ipmcast address is
  100. associated with one or more ports, which have normal UDP port numbers.
  101. The port number on the incoming mcast packet is used to decide who  gets
  102. a copy among those who added themselves to the IP multicast group.
  103. So, for an Isis group, you would ideally want to have a port per group
  104. as well as an IP multicast address per group.  If you have less, say one
  105. port for everyone, there is no choice but to re-use port numbers (hence
  106. we use SO_REUSADDR) and this means that processes will get ipmcasts sent to
  107. groups other than the one they belong in some cases -- specifically, when
  108. two groups with the same port number are used on the same machine...
  109.  
  110. Anyhow, this is all hidden from users.  It has performance implications
  111. but normally they won't be major ones...  The number of ports available
  112. is a compile time system parameter for Isis itself.
  113.  
  114. >|>    - Only messages sent in diffusion mode (to the full set of members and
  115. >|>      clients) will be multicast.  However, you can overlap groups and in this
  116. >|>      way can build up other patterns pretty easily.
  117. >
  118. >Personally I think you should have a second selection mechanism so you can
  119. >still use mcastip (and hw multicast) to be used in other then diffusion mode.
  120.  
  121. I think you may not be aware of what diffusion mode means in Isis, since
  122. this remark confuses me.  A diffusion multicast is just an option ("D")
  123. on a broadcast that says to send it to all members and clients of the
  124. destination group.  Normally, a message only goes to the members.
  125.  
  126. Since the members and clients will all receive the message if ipmcast
  127. is used, since they all add themselves to the ipmcast group, it seems
  128. reasonable to only use multicast when the destination is specified as
  129. a diffusion multicast (or when the group just doesn't have any clients).
  130.  
  131. >|> How does it work?
  132. >|>    - We fragment your message into 4k chunks and stick a small (44 byte)
  133. >|>      header on each.  
  134. >|> 
  135. >|>    - For each group joined using PG_IPMCAST as an option, we allocate an IP
  136. >|>      multicast address and register the members and clients.
  137. >
  138. >Limited to 64 groups on most modern controllers, and 20 groups per socket. Most
  139. >mcastip code make no difference between for example lack of buffer space and
  140. >lack of multicast addresses. You will need a management unit (btw like the
  141. >one we are >developing) that manages your address space more cleanly. If you
  142. >map group-id to mcastip address you will soon become exhausted because
  143. >mcastip will not have the controller go to all-mcast mode. You will have to
  144. >map more groups into one address.
  145.  
  146. Actually, thats what I do now: when I run out of addresses, I cycle back
  147. through old ones.  The 20 per socket limit will be an "implementation
  148. restriction".  After all, this is a simple, flexible tool, and it doesn't
  149. ve to be perfect or turn into research to be useful for commercial sites!
  150. Long run, I agree, we should get fancier...
  151.  
  152. >We have more applications running (conferencing, etc) that use mcastip, so we
  153. >can never be sure that the complete address space at the controller is to be
  154. >allocated to the group communication module.
  155.  
  156. When in my stuff, I have one group (/sys/ipmcast) that handles the allocation
  157. of ipmcast addresses.  But if other applications use it, I will have a problem,
  158. true...
  159. >
  160. >Also their are no modules that will exploit the mcast capabilities of fddi,
  161. >etc.
  162.  
  163. One thing at a time...
  164.  
  165. >
  166. >|>    - Members will multicast a packet initially, then retransmit point to point
  167. >|>      if some processes NACK or fail to ACK it.
  168. >
  169. >I assume one ack per 4k packet or do you ack every packet?
  170.  
  171. One ack per 50ms or so, actually, and staggered to avoid collisions.
  172.  
  173. >|>    - Once received, packets travel the same code path as other Isis packets,
  174. >|>      so all the usual Isis ordering properties and so forth hold.
  175. >|> 
  176. >|> Summary:
  177. >|>    - isis_remote_init(..... ISIS_IPMCAST); to start it up
  178. >|>    - pg_join(.... , PG_IPMCAST, ....); to enable for a group
  179. >|>    - Everything else works as usual, transparently.
  180. >|> 
  181. >|> From experiments (done, however, with a different version of the code) we
  182. >|> expect to see a benefit for groups with more than about 4 members.  However,
  183. >|> we have yet to experiment seriously with the new code on Solaris, for
  184. >|> technical reasons, so I won't have solid numbers for a little longer.
  185. >|> My guess -- just a guess -- is that performance will be fairly flat as
  186. >|> a function of group size until groups+clients gets pretty large, probably
  187. >|> 40 or 50 or more.  By then, acks coming back may begin to be a serious
  188. >|> load on the sender and cause performance to slowly taper off.
  189. >
  190. >Personally and also from experiments: if you only use mcastip on a local area
  191. >network you are better off making your own interface to the network and
  192. >multicast addresses, with more and more machines providing the BSD packet
  193. >filter you can reasonably standardize this as well. You will get a better
  194. >performance as soon as there is more then one receipient. The nit on SunOS is
  195. >*bad*: do not use it if you have very performance critical applications.
  196.  
  197. Perhaps I should add that as an option?  Obviously, for the near term,
  198. the standards argument says that Isis has to work for the vendor provided
  199. and supported technology.  It isn't my fault if the standard could be
  200. improved!
  201.  
  202. >
  203. >If you use mcastip on different subnets (no tunneling) watch out for
  204. >inconsistent behaviour of the mrouted that will cost you performance.
  205. >Have it go down and come up >again within seconds, it will have to restore
  206. >its membership tables which will mess-up your interlink communication
  207. >completely, you will declare members dead who are perfectably reachable.
  208. >If you router will also be used for other purpose, like in our case for
  209. >connection to the mbone the state kept at the router is *very* big and
  210. >takes some time to recover.
  211. >
  212. >The router we are to develop bases its interrouter communication on reliable
  213. >group comm methods making it easier to maintain shared state etc and restoring
  214. >the state will become much more efficient, etc.
  215.  
  216. Sounds like we will want to support the INESC router when you do make it
  217. available!  Let us know...
  218. -- 
  219. Kenneth P. Birman                              E-mail:  ken@cs.cornell.edu
  220. 4105 Upson Hall, Dept. of Computer Science     TEL:     607 255-9199 (office)
  221. Cornell University Ithaca, NY 14853 (USA)      FAX:     607 255-4428
  222.