home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / protocol / tcpip / ibmpc / 7380 < prev    next >
Encoding:
Internet Message Format  |  1993-01-12  |  3.7 KB

  1. Xref: sparky comp.protocols.tcp-ip.ibmpc:7380 comp.sys.novell:11377
  2. Newsgroups: comp.protocols.tcp-ip.ibmpc,comp.sys.novell
  3. Path: sparky!uunet!europa.asd.contel.com!howland.reston.ans.net!usc!cs.utexas.edu!torn!watserv2.uwaterloo.ca!watserv1!demorgan.uwaterloo.ca!erick
  4. From: erick@demorgan.uwaterloo.ca (Erick Engelke)
  5. Subject: Re: ODI information requested.
  6. Message-ID: <C0r2GH.AEM@watserv1.uwaterloo.ca>
  7. Sender: news@watserv1.uwaterloo.ca
  8. Organization: University of Waterloo
  9. References: <1iskr9INNqfs@usenet.INS.CWRU.Edu> <1993Jan11.155845.62631@cc.usu.edu> <1993Jan12.122554.16503@infodev.cam.ac.uk>
  10. Date: Tue, 12 Jan 1993 16:43:28 GMT
  11. Lines: 65
  12.  
  13. > ag129@cus.cam.ac.uk (Alasdair Grant) writes:
  14. > jrd@cc.usu.edu (Joe Doupnik) writes:
  15. >
  16. >>from multiple (same type) stacks. The difficulty is, however, receiving packets
  17. >>when there are contending receipients. A packet will be delivered just once,
  18. >>but to whom? Well, you can't tell from the outside so one stack gets the
  19. >>packet, whether it belongs there or not, and the others starve. Misdelivery
  20.  
  21. >There are two solutions I can think of:
  22. >
  23. >a) give each IP stack a different IP address, and let ODI demultiplex
  24. >   on this
  25.  
  26. I did this with packet drivers for a while - it was a kludge but worked
  27. ok.  Like PKTMUX, this is best done as a shim.  I wouldn't recommend it
  28. now that PKTMUX exists, but here is the basic strategy for academic 
  29. understanding:
  30.  
  31.    - on received packets, select destination from destination IP field
  32.      and upcall only to that one application
  33.    - on received broadcasts, send upcall to every application
  34.    - on xmits check destination for a local IP address and perform
  35.      local upcall if necessary
  36.    - on xmit broadcasts, upcall each application except originator 
  37.      and then place on the net 
  38.     
  39. Though it seems simple enough, this is not sufficient to work with
  40. every application.  For example, bootp is no longer an option.  And
  41. many of the commercial TCPs chain to the hardware interrupt, so it
  42. become necessary to simulate a hardware IRQ or tie them to the timer
  43. tick if you expect to be able to talk between two TCPs on the same PC.
  44.  
  45. Finally, this is expensive in IP addresses.  It works fine for one
  46. machine, but you wouldn't want this solution for all your PCs.
  47.  
  48. >b) get ODI to demultiplex on TCP/UDP port numbers, which would require it
  49. >   to manage (or have knowledge of) transport endpoint bindings.
  50. >
  51. >Clearly (b) is the best solution.  A second-best would be to put a shim
  52. >over ODI to do the demultiplexing function, but you still have to provide
  53. >a way for each stack to tell it about bindings.  Is there an API for this?
  54. >How does PKTMUX work?
  55.  
  56. Sheer magic!  Actually, PKTMUX essentially contains about 50% of a 
  57. complete TCP/UDP stack.  Other tcp stacks demultiplex tcp packets
  58. to a TCB (TCP Control Block - a generic name mentioned in the TCP RFC
  59. which gives us word to describe a structure which varies widely between
  60. different implementations, but which gives us some simple lingo all
  61. developers can understand.) 
  62.  
  63. The TCB is some form of memory stucture which contains connection 
  64. information, retransmit information, etc.  PKTMUX basicallY demultiplexes
  65. tcp and udp packets to a TCB, but its TCBs list which application to upcall.
  66.  
  67. And when applications transmit packets for new TCP or UDP connections, 
  68. PKTMUX grabs the packets before they go on the wire and learns which
  69. application sent them.  Graham had to do a good bit of thinking to 
  70. design this package and it is a bit of a marvel that it works as
  71. well as it does.
  72.  
  73. Erick
  74. -- 
  75. ----------------------------------------------------------------------------
  76. Erick Engelke                                 WATTCP Architect
  77. erick@development.uwaterloo.ca     TCP/IP was easy but i still can't work VI
  78.