I have been doing a lot of thinking about a new D-STAR Architecture (and hope to provide some more concrete material at some point), but this discussion brings up some basic ideas that have been percolating in my ruminations.

Icom started from a different model than community usage patterns suggest is the proper way to do things.

Here are some of the design principles that I think are important:

1 - Internet connected devices need an easy mechanism for discovery - use Secured Dynamic DNS. (Set TTLs based on likelihood of IP Address changes (static IPs have very long TTLs, dynamic TTLs very short) 2 - Have a low latency, redundant and reliable service to map radio/ repeater/simplex node/gateway/service Callsign Addresses to DNS names. Maybe something like a Cassandra (Apache) cluster. (Use caches on local boxes for the "working set of callsigns" that a local system needs, don't copy full databases around.) 3 - User authentication - completely eliminate registration for RF devices that use Callsigns, since Callsign Addresses are sent "in the clear" anyone can forge them (pirate the callsign) and pretend that it is a control mechanism is ludicrous. Use of false / pirated callsigns is illegal in most, if not all, countries. Legal prosecution for false callsigns is probably a better deterrent than a silly "registration" system. A fairly simple regular expression could filter "MY" callsigns to make sure they at least look like a legitimate callsign, here is a Java Example/Test code for callsign checking, including a mark for VK foundation licenses (who are not permitted to use D-STAR):

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class DstarCallsignCheck {

        public static void main(String[] args) {

BufferedReader stdin = new BufferedReader(new InputStreamReader(
                                System.in));
String foundation = "^VK[0-9]F[A-Z]{3}.*$"; // Australian Foundation Class


String DstarCallsign8c = "[A-Z0-9]{1}[A-Z0-9]{0,1} [0-9]{1}[A-Z ]{4,8}
[A-Z 0-9]{0,1}|CQCQCQ  |REF[0-9]{3}[0-9 ]{1}[A-Z 0-9]$";

                while (true) {
                        try {
                                System.out.print("Callsign: ");
String call = stdin.readLine().toUpperCase(); while (call.length() < 8) call += " "; // Space end padding. System.out.println("[" + call + "] " + call.length());
                                if (call.length() != 8)
System.err.println("Call must be exactly 8 characters");

                                        // too long of callsign
                                else {
System.out.println("D-STAR Call " + (call.matches(DstarCallsign8c) && ! call.substring
(0,2).matches("\\d{2}")));
System.out.println("VK Foundation Class Call " + call.matches(foundation));
                                }
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }

        }

}

4. Authorization - some system operators will want to control access to their radio receiver and transmitter based on user callsigns, provide filters in the "gateway" to enable them to have access and deny lists. These lists could include, by reference, databases such as are found in the G2 "terminal registration", national callsign databases, regional databases, and local databases/hashtables for local control. (Those of you who believe in "registration" could filter out anyone who was not in one of these databases.) 5. Callsign routing. It is basic to the protocol and should always be permitted. (It may be necessary to "barge in" on a linked repeater for emergency or other timely traffic) A gateway/repeater could be designed to relay (with buffering) the incoming callsign routed transmission and send an automatic reply to the sender informing them of the "linked" or other service running that they might be disrupting. 6. Linking. All linking should be through a robust and dynamic "reflector" system. Even two repeaters should use a reflector to allow a third repeater to join the conversation. 7. Regional linked systems should be treated as a single gateway by the rest of the network, sort of like a super repeater. 8. Pure Internet/Non-RF devices (like the DV-Dongle) should have a strong authentication/authorization service, but then be treated like peers on the network. (Some sort of list of callsigns could be provided by the service and used in #4 above to allow or deny them access to a given gateway/repeater.)

I have a lot more implementation ideas, and other enhancements, but these are the fundamentals. Well known interfaces would permit different authors to write the various components.



John D. Hays
Amateur Radio Station K7VE
PO Box 1223
Edmonds, WA 98020-1223 VOIP/SIP: [email protected]
Email: [email protected]

Reply via email to