home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: DFÜ und Kommunikation / SOS-DFUE.ISO / programm / dos / utility / pcucp101 / relnotes.doc < prev    next >
Encoding:
Text File  |  1993-04-22  |  11.1 KB  |  224 lines

  1. Pcucp 1.01
  2. ----------------------------------------------------------------------
  3.  
  4. A bug in terminal emulation code of the plain dos version has
  5. been corrected. The bug sneaked in the code when I incorporated
  6. the last changes of the Windows-version to the plain dos version.
  7.  
  8. D-pcucp now reacts to the Alt - numeric keypad codes in the usual 
  9. fashion. 
  10.  
  11. If share.exe was loaded in the dos-end, the configuration files
  12. were effectively locked while pcucp was running, since the program
  13. failed to close the file(s) after reading them. This has now been 
  14. corrected. Because this bug was in a common source module, both 
  15. the pc- and the unix-end of the program have been slightly modified.
  16.  
  17. In the unix end, the Irix and Solaris versions have been slightly 
  18. modified. 
  19.  
  20. Pcucp 1.01 is compatible with pcucp 1.00. 
  21.  
  22.  
  23. Pcucp 1.00
  24. ----------------------------------------------------------------------
  25.  
  26. Originally I was planning to use some variation of the user 
  27. supported software scheme for pcucp. It seems, however, that
  28. there are at least two major problems with this : 1) Transfering
  29. relatively small amounts of money from foreign countries seems to
  30. cost a relatively great amount of money. 2) The local tax 
  31. authorities might decide that I must be making a gigant amount of
  32. money with this and come up with a corresponding tax. (Which would 
  33. ruin me.) So, the software is copyrighted but free, at least for
  34. now - I might reconsider this with future versions (if any).   
  35.  
  36. I recommend the program wdial (0.99a) for dialing in the Windows
  37. environment. For dialing in plain-dos environment I recommend
  38. dial (1.11). Both are written by me and the current versions
  39. can be used and copied freely.
  40.  
  41. Many thanks to the persons who tested the beta-versions of pcucp. 
  42. Also, I'd like to thank the personnel of University of Oulu for 
  43. generosly allowing me to test and develop pcucp on the various
  44. unix-systems available there. As a result of the assistance of 
  45. these two groups, I'm confident that version 1.00 is both robust 
  46. and compatible with most unix-systems in existence.
  47.  
  48. Comments, suggestions and bug reports (with proposed fixes) are
  49. welcome. Note, however, that I might not be able to answer 
  50. personally. (email jml@stekt.oulu.fi)
  51.  
  52.  
  53. A design overwiev - how it works 
  54. ----------------------------------------------------------------------
  55.  
  56. Logically, pcucp divides the serial connection to separate 
  57. channels, which are used for shells and file transfer. This
  58. is realized trough a packet protocol that splits the data
  59. stream to be transfered into chunks of suitable size - 'packets'. 
  60. In addition to the actual data, some control fields are included 
  61. to each packet. Most importantly, these enable data validation
  62. in the receiving end. In case the validation fails, e.g. due
  63. to a line error, the broken packet is resent from the remote
  64. end until it arrives intact. The packets also carry information
  65. about their destination channel. So, the packet protocol 
  66. effectively realizes multiple reliable logical channels on a
  67. single unreliable serial data stream.
  68.  
  69. As soon as a packet is received and validated, an anknowledge 
  70. (ACK) is sent to the remote end. After receiving the ACK the
  71. remote end knows that the current packet has been successfully
  72. transfered and so it can proceed to the next. If there is no 
  73. ACK for the packet within a time limit, then the current packet 
  74. is resent periodically until an ACK arrives. Note that this 
  75. strategy also allows the ACK to be lost, provided that the 
  76. receiving end is prepared to ignore duplicates of a packet. 
  77. (This is realized by including a cyclic sequence number into 
  78. the control fields of a packet.)
  79.  
  80. The procedure described above works as such, but it tends to 
  81. waste a fraction of the line capasity, since the transmitting
  82. end has to wait idle until the ACK arrives (or the time limit
  83. expires). This can be corrected by using a 'sliding window'
  84. scheme, that is, sending more packets while waiting for the
  85. ACK for the current one. The 'sliding window' scheme realized
  86. in pcucp uses a window size of two, that is, it sends (only)
  87. the following packet while waiting for the ACK for the current
  88. packet. 
  89.  
  90. The ACK wait time before resending a packet is somewhat longer
  91. than the expected time, since resending packets when not needed
  92. would cause a severe performance hit. This results in poor 
  93. performance on noisy lines. (This is, however, inherently 
  94. related to all packet protocols, since in case of an error an
  95. entire packet is lost. A bigger window size would help, but
  96. in the same time compromise the interactive nature of pcucp.)
  97.  
  98. The packet protocol has a special packet type with fixed data
  99. size. This offers a saving of 1-2 bytes in the packet header.
  100. This saving is considerable on low communications speeds.
  101. Because the size of the packet is fixed, the fixed packet size
  102. definition must agree on both ends or pcucp won't work. While
  103. PACKETSIZE in configuration file specifies the 'optimum' packet
  104. size it also specifies the fixed packet size.
  105.  
  106. Because of the fact that in most cases the serial link to the
  107. unix-host is not 8-bit-clean, that is, some characters more
  108. or less mysteriosly change, totally disappear or cause special
  109. effects, pcucp has the ability of using only a restricted range
  110. of the 256 (=byte) codes available. This is realized through an
  111. algorithm that codes and decodes between 8-bit bytes and the 
  112. restricted set. BITCODE keyword in configuration file specifies
  113. how the bytes are to be converted. Since this totally changes
  114. the interpretation of the line data, BITCODE definitions must
  115. agree in both ends for pcucp to function at all. 
  116.  
  117. A non-elegant feature of the unix-end is that the program polls its
  118. file descriptors sleeping between polls. The elegant way, I think,
  119. would be select(). But since I want to keep the most of the source
  120. modules common for both the unix- and the dos-end, this is a
  121. virtually impossible approach. The change is not even motivated by
  122. excessive CPU load : In fact, my experience suggests that the program
  123. is practically a zero load thing when idle. (Currently, the bsd-version
  124. of pcucp actually uses select(), but not in the orthodox way.)
  125.  
  126.  
  127. Known problems
  128. ----------------------------------------------------------------------
  129.  
  130. If the unix-host is under heavy load, pcucp might not get a change
  131. to run often enough to keep line usage 100 % and so performance is
  132. degraded. Giving pcucp a higher priority should help. This should
  133. be no actual problem, since pcucp uses the CPU in short bursts at
  134. (relatively) long intervals and so most of the CPU time would be 
  135. free for other processes. The hard part here is that you need to
  136. convince your unix-operator to do this for you :-)
  137.  
  138. Note that even in 386 Enchanced mode pcucp's performance in file
  139. transfer is severely degraded if a dos application is executing
  140. in the foreground. In standard (and real) mode pcucp is completely 
  141. stopped when a dos application is used. In 386 Enchanced mode, it 
  142. might help to set the Windows background priority to a higher value, 
  143. or maybe use a dos box with a low priority.
  144.  
  145. It seems that transfering files in both directions at once 
  146. causes a performance hit. This is due to the fact that ACK-
  147. packets race with the constantly flowing data packets and thus 
  148. an unnecessary delay is generated between sending data packets. 
  149. So far, I haven't been able to figure out an actual fix for 
  150. this (without compromising the interactive nature of the packet 
  151. protocol).
  152.  
  153. For some reason file transfer from the pc-end is somewhat slower
  154. than that from the unix-end. The only reason I can think of is
  155. that the unix-end's response time is somewhat longer than that of
  156. the pc-end. This is actually true for the posix/sysv-versions
  157. since the sleep time between polls is constant (100 ms) and 
  158. longer than that in the pc-end (55 ms). The bsd-version with
  159. the 'synchronized sleep' realized with select() should fix this,
  160. but it seems not to (?).
  161.  
  162. I have the impression that a vt100 terminal has autowrap on by
  163. default. It seems, however, that some programs (such as vi) do
  164. not work correctly with this. Hence the default is no autowrap.
  165. This can be changed by echoing the autowrap-on command string
  166. on the emulated terminal in e.g. the .cshrc file. On systems 
  167. with a sysv-style, standalone echo-command with octal escapes 
  168. this could be done with /bin/echo "\033[?7h".
  169.  
  170. In a typical case the connection to the unix-host is realized
  171. trough a device that connects to the pc trough a serial line 
  172. and to the unix-host trough a local network. In the following
  173. discussion such a device is known as a 'bridge'. The unfortunate 
  174. thing about bridges is that they are not likely to be 8-bit-clean
  175. and hence BITCODE must be used to deal with them, which decreases
  176. the effective line speed. Also, the bridge usually not only 
  177. distorts the data but also takes special actions on some character 
  178. codes such as C-s, which might cause any output from the bridge
  179. to the pc to stop until a C-q is received by the bridge. Also, there
  180. might be a 'bridge escape' code which causes 'dropping back' to the
  181. bridge prompt from the unix-session. These are (more or less) useful
  182. in the usual case, but not too nice for a pcucp user, since any
  183. special action like this causes the connection to be effectively
  184. severed. BITCODE helps to keep out of trouble most of time, but it
  185. can't help such special codes not to be generated by line errors.
  186. This is where the configuration setting SALVSTR comes in. This string
  187. is sent over the communications when the remote end has stopped 
  188. responding in order to command the bridge to resume a broken session.
  189. Of course, this might not be enough to salvage the connection in all
  190. cases (or maybe not with all bridges either), but it is a simple measure
  191. which should be useful in most (?) cases.
  192.  
  193. When SALVSTR was introduced I also had to make sure that any packets
  194. echoed by the bridge when a connection is broken would not be seen as
  195. valid packets coming from the remote end. This was done by modifying 
  196. the packet checksum algorithm in a way depending on the string returned
  197. by the gethostname() function. Since this function is emulated in the
  198. pc-end by returning 'PC', an unix-host named 'PC' will not work with
  199. pcucp.  
  200.  
  201.  
  202. Future plans
  203. ----------------------------------------------------------------------
  204.  
  205. I would like to write new and better versions of pcucp in the
  206. future, but then again, studying and making a living may not 
  207. leave enough time for this.
  208.  
  209. The following features should be in version 1.1 :
  210.  
  211.   - resizeable terminal windows
  212.   - cut & paste
  213.   - scrollback buffer
  214.   - on-line help 
  215.  
  216. When writing this, it seems probable that the plain-dos version
  217. of pcucp will not be supported in the future, or at least the 
  218. conversion will take place only after the Windows-version is 
  219. about complete. All features of the future Windows-version might
  220. not be in the dos-version. The focus is on the Windows-version,
  221. since Windows as an environment is inherently more suitable for
  222. a program like pcucp. Also, concentrating on the Windows-version
  223. increases the odds of version 1.1 to be released at all.
  224.