<div dir="ltr">Hello all,<div><br></div><div>I finished putting the protocols document together. Please, check it out and let me know of any corrections needed. Most of this was pulled from the Tech List and or extrapolation of formats found currently in logs. Time to start getting the wiki updated...</div><div><br></div><div>73, </div><div>Chris, WI3W</div><div><br></div><div>----------------------------------</div><div><br></div><div>.---------------------.<br>! DXCluster Protocols !<br>'---------------------'<br><br><br>"The PC Packet Cluster Protocol"<br>--------------------------------<br><br>Written by Dirk Koopman, G1TLH (<a href="http://dxcluster.org/tech/pcprot.html">http://dxcluster.org/tech/pcprot.html</a>)<br><br>Introduction<br>------------<br>The PC Packet Cluster protocol is used to communicate between two DX Cluster<br>nodes. It is an ASCII protocol that is designed to work in a directed graph<br>with no loops or duplicate routes. Unfortunately, in this modern world, that is<br>exactly what we want to do! If you would like to participate in the discussion<br>for a replacement protocol please join the Cluster-tech mailing list. * This<br>replacement protocol has been since created, PC9x. *<br><br>Basic Format<br>------------<br>Each protocol message started with the letters PC, each protocol message is <br>sent in packet by itself and is terminated with a carriage return character.<br>The letters PC are followed by two digits starting at 10. All the fields in the<br>message are separated with the ^ character. The last field may be terminated by<br>a ^ or a ^~ sequence. I don't know why. All fields are in ASCII.<br><br>The Message Formats<br>-------------------<br>I have tried to show what is actually being used, as opposed to what is<br>documented. What is shown here is therefore my impression of how it looks and<br>what the fields do - YMMV.<br><br><br>Talk mode<br><br>PC10^from-user^to-user^msg^bell-flag^ ^from-node^~<br>PC10^from-user^route-via-node^msg^bell-flag^to-user^origin-node^~<br><br>DX info<br><br>PC11^DXfreq^DXcall^date^time^comment-txt^user-rprt^origin-node^hops^~<br><br>Announcement<br><br>PC12^from-user^route-to-node^msg^sysop-flg^origin-node^wx-flg^hops^~<br><br>Stn into CONF<br><br>PC13^user^hops^<br><br>Stn out of CONF<br><br>PC14^user^hops^<br><br>Conference Mode<br><br>PC15^from-user^msg^hops^~<br><br>PC user add<br><br>PC16^node^user talk-mode here^user talk-mode here^...^hops^<br><br>PC user delete<br><br>PC17^user^node^hops^<br><br>PC initialization: RequestInit<br><br>PC18^cluster info^ver^<br><br>PC initialization: NodeAdd<br><br>PC19^here^node^talk^ver^...^hops^<br><br>PC initialization: InitDone<br><br>PC20^<br><br>PC initialization: NodeDelete<br><br>PC21^node^reason^hops^<br><br>PC initialization: PCDone<br><br>PC22^<br><br>WWV info<br><br>PC23^date^hour^SFI^A^K^forecast^logger^origin-node^hops^~<br><br>Here status info<br><br>PC24^user^here^hops^<br><br>DX/WWV merge req<br><br>PC25^route-to-node^route-from-node^DX-cnt^WWV-cnt^<br><br>Merge DX info<br><br>PC26^DXfreq^DXcall^date^time^comment-txt^spotter^origin-node^ ^~<br><br>Merge WWV info<br><br>PC27^date^hour^SFI^A^K^forecast^logger^origin-node^ ^~<br><br>PC Mail: SendSubject<br><br>PC28^route-to-node^route-from-node^to-user^from-user^date^time^private-flg^subject^bbs^no-lines^rr-flg^via-node^origin-node^~<br><br>PC Mail: SendText<br><br>PC29^route-to-node^route-from-node^stream-no^text^~<br><br>PC Mail: AckSubject<br><br>PC30^route-to-node^route-from-node^stream-no^<br><br>PC Mail: AckText<br><br>PC31^route-to-node^route-from-node^stream-no^<br><br>PC Mail: CompleteText<br><br>PC32^route-to-node^route-from-node^stream-no^<br><br>PC Mail: AckCompleteText<br><br>PC33^route-to-node^route-from-node^stream-no^<br><br>Remote commands: Command<br><br>PC34^route-to-node^route-from-node^cmd^~<br><br>Remote commands: Response<br><br>PC35^route-to-node^route-from-node^cmd-resp^~<br><br>Remote commands: Show Command<br><br>PC36^route-to-node^route-from-node^cmd^~<br><br>Remote commands: Needs db update<br><br>PC37^route-to-node^route-from-node^user^stream-no^cmd^~<br><br>PC initialization: Connected nodes<br><br>PC38^node,node,...^~<br><br>NodeDelete w/Discon<br><br>PC39^node^reason^<br><br>PC file forward<br><br>PC40^route-to-node^route-from-node^filename^bulletin^linecnt^<br><br>User info<br><br>PC41^user^type^info^hops^~<br><br>Forwarding abort<br><br>PC42^route-to-node^route-from-node^stream-no^<br><br>Remote DB request<br><br>PC44^route-to-node^route-from-node^stream-no^qualifier^key^user^<br><br>Remote DB response<br><br>PC45^route-to-node^route-from-node^stream-no^info^~<br><br>Remote DB complete<br><br>PC46^route-to-node^route-from-node^stream-no^<br><br>Remote DB update<br><br>PC47^route-to-node^route-from-node^user^qualifier^key^stream-no^<br><br>Remote userDB req<br><br>PC48^route-to-node^route-from-node^stream-no^qualifier^key^user^<br><br>Bulletin delete <br><br>PC49^from-user^subject^hops^<br><br>Local User count<br><br>PC50^node^user-count^hops^<br><br>Ping<br><br>PC51^route-to-node^route-from-node^ping-flag^<br><br>WCY Info<br><br>PC73^date^hour^SFI^A^K^ExpK^R^SA^GMF^Aurora^logger^origin-node^hops^<br><br><br>.------------------------------------------------------.<br>! Information pulled from discussions on the Tech List !<br>'------------------------------------------------------'<br><br>PC61 - DX Info<br>--------------<br><br>P61 is a replacement for PC11 originating with Lee Sawkins, VE7CC. PC61 differs<br>by allowing several significant digits after the frequency decimal. All other<br>fields are the same, except for an added originating user IP address. The user<br>IP can be IPv4 or IPv6.<br><br>PC61^DXfreq^DXcall^date^time^comment-txt^user-rprt^origin-node^user-ip^hops^~<br><br><br>PC9x - General Info<br>------------------<br><br>PC9x^<node call>^<seconds since last midnight>^<br><br><seconds since last midnight> is the number of seconds since the<br>beginning of "today" UTC. It *MUST* be unique and increase with each<br>sentence. It can therefore be a decimal number. The idea being that if<br>the next sentence is sent in the same second as the last one, then you<br>append (for instance) '.01' on the end. If there is an other one: .02<br>etc. But you add any number of decimal points (eg '.1' or '.001') you<br>like. Look at gen_pc9x_t in DXProtHandle.pm for an example.<br><br>At midnight, they all go back to 0.<br><br><br>PC92 - Routing<br>--------------<br><br>Description<br><br>1. The biggest change is that nodes only (ever) send their configuration <br>(using a PC92) and the configuration of any *directly connected* <br>"traditionally routing" nodes (TNODES) (ie still using PC16,17,19,21). <br>The config stored of any TNODES is limited only to the local users on <br>those nodes. Anything else is kept as hints, but is not transmitted <br>onward, neither to other PC9x nodes nor other TNODES. The only <br>configuration that other TNODES will see are the composite of all the <br>PC92 nodes's configs + any other locally connected TNODES.<br><br>2. PC92 Nodes periodically output their configuration. Failure to receive a<br>config after 3 update periods will cause that node's config to be erased (and<br>the changes to be propagated to any connected TNODEs). Think OSPF.<br><br>3. All PC9x sentences contain a timestamp and the originating node call. <br>This allows any of these sentences to be deduplicated and deliberate <br>loops (for routing and new other functions) will allow things to <br>continue to work as only "new" PC9x sentences will be processed.<br><br>4. All PC9x sentences are passed onto neighbouring PC9x unaltered apart <br>from a decremented hop count.<br><br><br>Breakdown<br><br>Ex. PC92^GB7TLH^78031^C^5GB7TLH:5457^1G1TLH-2:XX.XX.XX.XX^5GB7DJK^H99^<br><br>PC92 - Protocol declaration<br><br>GB7TLH - Originating Node<br><br>78031 - Timestamp - seconds since midnight<br><br>'C' current configuration record<br>'A' records add nodes or users<br>'D' records delete nodes or users.<br>'K' keep alive records<br><br>5GB7TLH:5457 ---.<br> |<br><br>5 is a bit map which is made up like this:-<br><br>Bit 1 - here/not here<br>Bit 2 - external, traditional PC protocol node<br>Bit 4 - Node<br><br>1 - User/here<br>4 - Node/not here - here flag is unset<br>5 - Node/here<br>7 - Traditional PC node/here<br><br>GB7TLH is obviously a callsign<br><br>:5457 is the version number, other fields may be tacked on<br><br>The first slot after the 'C', 'A' or 'D', is always reserved for the node<br>call. This slot may be empty (as in ...^A^^1G1TLH^... as opposed to<br>..^A^5GB7TLH^1G1TLH^..) if the node is the same as the node call after PC92.<br>Any software must be able to cope with this empty slot.<br><br>The remaining payload...<br><br>Bitmap/Call/:IPaddress<br><br>Ex. 1G1TLH-2:XX.XX.XX.XX <br><br>*Note: the IP address may not always be present at this time.<br><br>H99 - hopcount<br><br>You should note that DXSpider converts PC16/17/19/21 from *directly*<br>connected PC only nodes into PC92 that look like:-<br><br>PC92^GB7TLH^78042^C^7GB7DJK-1:5453^1G1TLH-1^H99^<br><br>This means that GB7TLH has PC node GB7DJK-1 with user G1TLH-1 attached<br>to it.<br><br>The principle being used here is similar to protocols like OSPF. A node<br>*only* sends records that either come from it or PC nodes that it is<br>"responsible" for. Nodes do *not* splurge out their local view of the<br>network to cause even more confusion...<br><br><br>'K' Record Examples - Keep Alive<br><br>GB7DJK PC92^GB7TLH^82234^K^5GB7TLH:5457:568^3^1^H99^<br> |<br> build number -------------------'<br><br>WR3D PC92^GB7TLH^82744^K^7GB7DJK-1:5453^1^1^H99^<br><br>The first for the main PC9X handling node and the second for an attached <br>Legacy PC protocol node. The two fields at the end are <no of nodes> and <br><no of users> respectively. You should note the similarity of this and the<br>traditional PC50.<br><br><br>PC93 - Talk/Announce/WX<br>-----------------------<br><br>PC93^<node call>^<timestamp>^<to>^<from>^<via>^<text>[^<onode>][^<IPaddr>]^H99<br><br>NOTES:<br><br> * any ^ characters in <text> MUST be converted to %5E<br> * <to> can be a callsign (a talk), if I can route to it, I<br> treat it as a talk.<br> WX (for weather).<br> SYSOP (sysop announcements).<br> <string> which is not recognised as a callsign by<br> pattern recognition and is taken as a<br> CHAT group (eg: LOGGER, #9000).<br> * (announce/full).<br> * <from> is the from users callsign<br> * <via> constrains whether it goes via a particular node<br> set to * for now.<br> * <onode> is optional and is used when passing PC93s o.b.o<br> non-PC9x handling nodes. Not currently used.<br><br>This is an announce:<br><br>PC93^IZ7AUH-6^79200^*^IZ7AUH-6^*^IZ7AUH-6 DX CLUSTER -> <a href="http://dx.iz7auh.net">dx.iz7auh.net</a><br>port 8000^^XX.XX.XX.XX^H97^<br><br>This a talk:<br><br>PC93^GB7TLH^81701^WR3D-2^G1TLH-2^*^wot?^H98^<br><br>This is a Chat message:<br><br>PC93^GB7TLH^81745^#9000^G1TLH-2^*^#48 anybody on?^H96^<br><br>Note that for backwards compatibility all chat <text> sections have a<br>serial number #1->#999 + a space added to it. The first chat message<br>sent after restart should be a random no in that range. This is designed<br>to defeat any de-duping on announces.<br><br><br><br>-------------------------------------------------------------<br>Information gathered and aggregated by Chris Schlegel, WI3W.</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sat, Mar 1, 2025 at 7:02 AM Grant via Dxspider-support <<a href="mailto:dxspider-support@tobit.co.uk">dxspider-support@tobit.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg-163866163385407043"><div lang="EN-AU" style="overflow-wrap: break-word;"><div class="m_-163866163385407043WordSection1"><p class="MsoNormal">Folks.,<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Can anyone please point me to where the Cluster protocol specifications are?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">The only one I am turning up searching is dated 2002 and doesn’t even know about PC61 or PC92 messages.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Regards,<u></u><u></u></p><p class="MsoNormal">Grant VK5GR<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div>_______________________________________________<br>
Dxspider-support mailing list<br>
<a href="mailto:Dxspider-support@tobit.co.uk" target="_blank">Dxspider-support@tobit.co.uk</a><br>
<a href="https://mailman.tobit.co.uk/mailman/listinfo/dxspider-support" rel="noreferrer" target="_blank">https://mailman.tobit.co.uk/mailman/listinfo/dxspider-support</a><br>
</div></blockquote></div>