- "Hi, I'd like to hear a TCP joke." -
"Hello, would you like to hear a TCP joke?" - "Yes, I'd like to hear a TCP joke." - "OK, I'll tell you a TCP joke." - "Ok, I will hear a TCP joke." - "Are you ready to hear a TCP joke?" - "Yes, I am ready to hear a TCP joke." - "Ok, I am about to send the TCP joke. It will last 10 seconds, it has two characters, it does not have a setting, it ends with a punchline." - "Ok, I am ready to get your TCP joke that will last 10 seconds, has two characters, does not have an explicit setting, and ends with a punchline." - "I'm sorry, your connection has timed out. Hello, would you like to hear a TCP joke?" -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/CM/CC/E/IT/TW d-@ s+:+ !a C++$@ UBLVSCX*++++(on)$>$ P++>$ L+++$ E+@ W++>$ N+++ o+@ K+++ w@ O+@ M-@ V@>$ PS+@ PE@ Y+ PGP++ t+ 5+ X++ R@* tv++ b+>$ DI++ D+ G++ e h r+++ y+++ ------END GEEK CODE BLOCK------ On Sun, Jun 7, 2020 at 10:53 AM Philip Gladstone < pjsg-w...@nospam.gladstonefamily.net> wrote: > Wow -- that generated a lot of discussion. In no particular order: > > * Yes, the test server should be working on UDP and TCP. > * Yes, you can send the UDP packets when they are full. The 5 minute > constraint is a hold over from the days when there were only a couple of > spots in that time and I wanted a balance between timeliness and being > hammered by packets. In some sense, I'd prefer more evenly spaced packets > rather than a block every 5 minutes. > * I don't think that the cost of a single idle TCP connection will be > noticeable for a modern PC. Back when I started this, systems were a lot > slower (and with a lot less memory) than they have today. The server > bottleneck at the moment is the fact that the packet decoder is single > threaded and written in perl. The database can also cause problems.... > * I suspect that the cost on my end for handling lots of connections is > probably pretty similar to handling UDP -- with the exception that there is > some setup and teardown cost. > * My server is not currently short of CPU.... Over the last 24 hours, it > has been under 50% used. > * There is additional complexity in being a TCP sender as Bill notes -- > what do you do when you can't establish the connection, what to do when the > connection goes away unexpectedly etc. What if you can't send a packet (as > the connection has got stuck). My inclination would be to keep it simple > and do something like the following: > > . At startup make the TCP connection (non-blocking) > . When you want to send a packet, send it (non-blocking). If it fails (for > whatever reason), then close and reconnect (non-blocking) [Could also send > the packet as a UDP message] > > With a bit of luck, if you only want to send a packet every minute or so, > then the TCP connection will have established itself during that interval. > More complex schemes would have to involve packet queues and the like..... > > Philip > > > > > > > On Sun, Jun 7, 2020 at 8:33 AM Black Michael via wsjt-devel < > wsjt-devel@lists.sourceforge.net> wrote: > >> Since you're already batching the reports in 5 minute intervals I >> wouldn't keep the connection open. >> Just make it, report, and close it. And if it gets an error just drop >> 'em and maybe stuff a message in the decode window (rather than a dialog >> box) that says "PSK Reporter error" maybe with the error message. So at >> least those individuals that seem to care will know their spots are dropped. >> >> This reminded me of an old argument I had with a banking client when they >> tried to claim TCP was a guaranteed protocol. I actually had to contact >> Bob Kahn to convince them otherwise as they couldn't' seem to understand >> the OSI 7-layer model....all of which made me very leery of banking.... >> >> Mike W9MDB >> >> >> >> On Sunday, June 7, 2020, 04:11:10 AM CDT, Bill Somerville < >> g4...@classdesign.com> wrote: >> >> >> On 07/06/2020 02:23, Philip Gladstone wrote: >> >> There are a (small) number of WSJT-X users who have difficulty reporting >> their spots to pskreporter. Some of these are in "difficult" areas of >> network connectivity (e.g. Marine Mobile) and I suspect that the UDP >> transport is losing most of their packets. The general loss rate seems to >> be around 1%-2% which is somewhat higher than I would expect, but it is not >> unbelievable either. >> >> It is also difficult to diagnose these sort of problems as the packets >> appear to leave the PC running WSJT-X and not arrive at my server! >> >> PSKReporter was never supposed to be 100% reliable, but there seem to be >> a lot of people who think otherwise.... >> >> In an effort to improve the situation, I have now stood up a TCP listener >> that might help. The protocol is identical -- the only difference is that >> you send the same messages as before over a TCP connection to >> report.pskreporter.info port 4739 rather than over a UDP connection. >> There is no extra framing required as the messages already contain a length >> code. >> >> The listening server should be able to support enough connections. It >> will close a connection if an invalid message is received. >> >> Is this change something that could be implemented? Also, currently, you >> send a bunch of packets at the same time (on the five minute expiry). You >> could send them as soon as they get "full" rather than waiting. >> >> Thanks >> >> Philip >> >> Hi Philiip, >> >> sorry to hear you are being given grief for your good design decision to >> use UDP for the PSKReporter incoming data feed. The extra burden at both >> client end and server end is considerable to housekeep a connected >> transport protocol. Nevertheless if users feel that every single spot is >> critical and none must be missed during normal operation; then we of course >> will be happy to make the required changes to give WSJT-X users the option >> to use a connected protocol rather than unconnected "fire and forget" UDP >> protocol. Is the test server also TCP/IP capable? >> >> On your comment about when to send spots, are you saying that sending >> once a full block is gathered is recommended for UDP rather than waiting 5 >> minutes, or are you recommending that should be done just for TCP/IP? >> >> For those that may claim TCP/IP is and easy switch with many appropriate >> attributes, note that to TCP/IP the server end must keep a data structure >> alive for every separate connection, and there will potentially be >> thousands of them concurrently, whereas with UDP all users can be handled >> by a single service just recording the source details in the database as >> UDP datagrams are received, then moving on to the next. IMHO maintenance of >> such semi-permanent connections per data source is a large price to pay for >> more reliable delivery of data that has greatest value in bulk, and where >> ultimate reliability adds little apart from those at the end of unreliable >> network connections. Those same users of unreliable network connections >> will require the implementation of the most complex clients since any >> guarantee of delivery necessarily implies complex handling of timed out >> connection failures. I.e. what should WSJT-X do with spot information it >> cannot deliver because a TCP/IP connection has broken down? How long should >> it store spot data in the hope of a resumed TCP/IP connection? How long >> before such spot data becomes stale, and not worth delivering? None of >> these decisions are necessary with a UDP implementation where delivery >> guarantees are only dependent on a working uncongested path between clients >> and the server. >> >> 73 >> Bill >> G4WJS. >> _______________________________________________ >> wsjt-devel mailing list >> wsjt-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wsjt-devel >> _______________________________________________ >> wsjt-devel mailing list >> wsjt-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wsjt-devel >> > _______________________________________________ > wsjt-devel mailing list > wsjt-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wsjt-devel >
_______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel