Q Construct
[ Construct ] [ Algorithm ]
The "q-construct" is being implemented on APRS-IS to add the following
capabilities to the Internet APRS transport mechanism.
- APRS-IS Entry Identification
- Support for a Future Authorization Algorithm
- Support for Loop Detection
- Support for Automatic Loop Protection
- Compatibility with Existing IGate and Client Software
- Only Server Support Needed for Implementation
The currently defined q constructs are:
Server Generated:
- qAC - Packet was received from the client directly via a
verified connection (FROMCALL=login). The callSSID following the qAC is
the login of the client.
- qAX - Packet was received from the client directly via a unverified
connection (FROMCALL=login). The callSSID following the qAX is the login of the client.
This construct is in addition to the TCPIP*/TCPXX* construct currently in
place.
- qAU - Packet was received from the client directly via a UDP
connection. The callSSID following the qAU is the login of the server.
- qAS - Packet was received from another server or generated by this
server. The latter case would be for a beacon generated by the server.
Due to the virtual nature of APRS-IS, use of beacon packets by servers is
strongly discouraged. The callSSID following the qAS is the login or IP
address of the
first identifiable server (see algorithm).
- qAr - Packet was received indirectly (via an intermediate server)
from an IGate using the ,I construct. The callSSID following the qAr it the callSSID of the IGate.
- qAR - Packet was received directly (via a verified connection) from
an IGate using the ,I construct. The callSSID following the qAR it the callSSID of the IGate.
Client Generated:
- qAR - Packet is placed on APRS-IS by an IGate from RF. The
callSSID following the qAR it the callSSID of the IGate.
- qAZ - Packet is generated by the server/client/IGate and should not
be propagated. The callSSID following the qAZ is the callSSID of the
server/client/IGate.
- qAI - Trace packet. This packet tells each server to add
login identification to the packet. This packet starts with the callSSID
of the originating station following the qAI. See algorithm for more
details.
Client generated q constructs will be verified if a new authorization
algorithm is created.
Servers MUST have unique logins from any other server/IGate/client that
insert data onto APRS-IS. This is to prevent packets from being
erroneously detected as looping. For instance, if my server's login is
AE5PL and my weather client is AE5PL, my server will see ,qAC,AE5PL and consider
this packet a looped packet. As logins can be any combination of 9
alphanumeric characters, this should not pose a problem.
IGates which append IGATECALL,I to the end of packets and which are directly
connected to a server which supports the q construct will have the IGATECALL,I
converted to qAR,IGATECALL or qAr,IGATECALL to support the extended capabilities of the q
construct.
Servers will have the ability to selectively enable tracing on all packets
through server configuration. This must be used judiciously and only when
a loop condition is suspected due to the increased bandwidth demands that
tracing creates.
q constructs will only appear on APRS-IS and are not to be used elsewhere due
to bandwidth considerations.
For example, this is what happens to a packet without a q construct which
enters the system via a verified connection:
Original packet:
AE5PL>APRS,TCPIP*:payload
Packet leaving the serve if trace is off:
AE5PL>APRS,TCPIP*,qAC,AE5PL:payload
or, if trace is on:
AE5PL>APRS,TCPIP*,qAC,AE5PL,AE5PLjvs:payload