RFC 1568

Simple Network Paging Protocol - Version 1(b)

๐Ÿ“… published January 1994, from ietf

Simple Network Paging Protocol - Version 1(b) ๐Ÿ’– (part 1 of 2)

Okay bestie, the header is giving very official doc energy, so here's the tea ๐Ÿซถ. This is RFC 1568, written by A. Gwinn from Southern Methodist University ๐ŸŽ“. It's in the Informational category, which basically means "here's some info, not a standard" ๐Ÿ’…. It came out in January 1994 ๐Ÿฆ‹, and it's from the Network Working Group. The header doesn't list anything it obsoletes or updates, so no drama there โœจ.

Status of this Memo

This memo is just giving info to the Internet community ๐ŸŒธ. It does not specify an Internet standard of any kind, so don't get it twisted ๐Ÿ™ˆ. Distribution is unlimited, so share away ๐ŸŽ€.

Abstract

This RFC suggests a simple way to deliver both alphanumeric and numeric pages (one-way) to radio paging terminals ๐Ÿ“Ÿ. Gateways supporting this protocol, as well as SMTP, have been in use for several months at one nationwide paging firm ๐Ÿ”ฅ. Another paging firm is in the process of adopting it ๐Ÿ™Œ.

Earlier versions were reviewed by IESG members and the IETF's "822 Extensions" Working Group. They preferred an alternate strategy, as discussed under "Relationship to Other IETF Work", below ๐Ÿค“.

1. Introduction โœจ

Beepers are as much a part of computer nerdom as X-terminals (perhaps, unfortunately, more) ๐Ÿ’€. The whole vibe of Simple Network Paging Protocol (SNPP) is giving a standard way to deliver pages to individual paging terminals ๐Ÿ“Ÿ. The most obvious perk is no more modems needed to produce alphanumeric pages, plus it's way easier to deliver pages to terminals in other cities or countries ๐ŸŒ. Automatic page delivery should also be somewhat more simplified ๐Ÿงš.

2. System Philosophy ๐Ÿง 

Radio paging is kinda taken for granted because it's everywhere ๐Ÿ“Ÿ. But the actual delivery, especially in wider-area paging, is somewhat complicated ๐Ÿ˜ญ. When a user starts a page by dialing a number on a telephone, or types an alphanumeric page into some input device, the page has to eventually reach some paging terminal, somewhere ๐Ÿ—บ๏ธ.

Most of the time, this delivery uses TAP (Telocator Alphanumeric input Protocol, also known as IXO) ๐Ÿ“ . TAP can be a somewhat convoluted, complicated protocol ๐Ÿ’€. It uses older-style ASCII control characters and a non-standard checksumming routine to help validate the data. One note: even though TAP allows a password for sending simple pages, those are rarely used (especially in commercial markets). So support for them hasn't been implemented in this version of the protocol ๐Ÿ™ˆ.

Even though TAP is widely used in the industry, there are plans on the table to move to a more flexible "standard" protocol. (The proposal is honestly more convoluted than most Internet RFCs ๐Ÿ˜ญ.) Still, the end user function is super simple: deliver a page from point-of-origin to someone's beeper ๐Ÿ’–. That's the simple, real-time job this protocol tries to address ๐Ÿฆ‹. Validation of the paging information is left completely up to the TAP/IXO paging terminal, which makes an SNPP gateway a direct "shim" between a paging terminal and the Internet ๐Ÿซถ.

3. Why not just use Email and SMTP? ๐Ÿ“ง

Email is pretty reliable, but it's not always timely ๐Ÿข. A good example is deferred messaging when a gateway is down. Say Mary Ghoti (fish@hugecompany.org) sends a message to Zaphod Beeblebrox's beeper (5551212@pager.pagingcompany.com). Hugecompany's gateway to the Internet is down, so Mary's message gets deferred ๐Ÿ˜ฌ. Mary isn't notified of the delay, because her message hasn't actually failed to reach its destination. Three hours later the link is restored, and (as soon as sendmail wakes up) the message goes out ๐Ÿ˜ด. Obviously, if Mary's page was about a meeting that was supposed to happen 2 hours ago, Mary and Zaphod have some minor administrative details to work out ๐Ÿ’€!

On the flip side, if Mary had used her SNPP client (or simply telnetted to the SNPP gateway), she would have immediately discovered the network problem ๐Ÿ™Œ. She could then invoke plan "B" and call Zaphod's pager on the telephone, ringing him that way ๐Ÿ“ž.

The obvious difference here isn't page delivery. It's the immediate notification of a problem that affects your message ๐Ÿšจ. Standard email and SMTP, while quite reliable in most cases, cannot be positively guaranteed between all nodes at all times. That makes them less desirable for emergency or urgent paging ๐Ÿ˜ค. The other consideration is how simple SNPP is for manual Telnet sessions, versus someone trying to manually hack a mail message into a gateway ๐Ÿง‘.

4. The Future of SNPP ๐Ÿ”ฎ

While the current form of SNPP is designed for use with TAP/IXO, it's meant to provide a porting base for the newer TME (TDP) protocol ๐Ÿš€. Future releases of SNPP will also allow multiple recipient messages, with individual "envelope" options and specifications as allowed by TME ๐Ÿ’…. For example, the protocol should let the user send an urgent message to Zaphod in Denver while carbon-copying Mary in Des Moines at a lower priority ๐Ÿ’Œ.

5. The Protocol ๐Ÿ’Œ

SNPP is a sequence of commands and replies, and it's based on the philosophy of many other Internet protocols currently in use ๐ŸŒ. SNPP has six input commands (only the first 4 characters of each are significant ๐Ÿ™ˆ). They solicit various server responses in three categories: (1) successful, (2) failed-but-continue, and (3) failed-with-connection-terminated. The first character of every server response code is a digit showing the category: '2xx', '5xx', and '4xx' respectively ๐Ÿ”ข. The text portion of the response can be altered to suit individual applications ๐ŸŽ€.

The session is actually quite simple (hence the name) ๐Ÿซ . The client initiates the connection with the listening server. When the connection opens, the server issues a greeting followed by "250 READY" (indicating the server is willing to accept SNPP commands) โœจ. The client passes pager ID information and a message, then issues a "SEND" command. The server feeds the information to the TAP paging terminal, gathers a response, and reports success or failure to the client ๐Ÿ“ฌ.

6.1 A Typical Successful Connection

           Client                         Server

   Open Connection            -->
                              <--  220 SNPP Gateway Ready
   PAGE 5551212               -->
                              <--  250 OK
   MESS Your network is hosed -->
                              <--  250 OK
   SEND                       -->
                              <--  250 Page Sent
   QUIT                       -->
                              <--  221 OK, Goodbye

6.2 Commands

6.2.1 PAGEr <Pager ID>

The PAGEr command sets the pager ID (PID) number for the transaction into the gateway ๐Ÿ“Ÿ. The PID used has to reside in the TAP terminal, and that's where it should be validated. Limited validation may optionally be done on the server (like all numeric, and ID length), or it can all be done by the TAP terminal at the time the page is sent ๐Ÿ™ˆ. Duplicating the PAGEr command before SENDing the message should produce an "503 ERROR, Already Entered" message, and allow the user to continue ๐Ÿ’….

In the future, a series of PAGEr commands may be specified to allow for multiple recipients of the same message ๐Ÿ‘ฏ. Right now, though, TAP/IXO only validates the PID at the time the message is accepted by the paging terminal. That makes "pre" validation of PID's currently difficult ๐Ÿ˜ค.

6.2.2 MESSage <Alpha or Numeric Message>

The MESSage command sets the numeric or alphanumeric message for the transaction into the gateway ๐Ÿ’ฌ. Limited validation of the message may be done on the SNPP server (such as length), but type-of-message validation should be done by the TAP/IXO paging terminal. Duplicating the MESSage command before SENDing the message should produce an "503 ERROR, Already Entered" message, and allow the user to continue โœจ.

6.2.3 RESEt

The RESEt command clears the PAGEr and MESSage fields, and lets the client start over ๐Ÿงน. This is provided mainly as a way to reset info accidentally entered during a manual session ๐Ÿ™ˆ. Upon a successful reset, the server should respond "250 RESET OK".

6.2.4 SEND

The SEND command processes the page to the TAP terminal ๐Ÿ“ค. Before processing, the PAGEr and MESSage fields should be checked for the existence of information. If one of these required fields is missing, the server should respond "503 Error, Incomplete Information" and allow the user to continue. If all the fields are filled in, the SNPP server should format and send the page to the TAP terminal, and await a response. Upon receiving a reply, the server should respond as follows:

    250 Page Sent         - successful delivery
    554 Failed, <reason>  - unsuccessful, and gives a reason

Or, in the case of an illegal or non-existent pager ID, or some other administrative reason for rejecting the page, the server should respond:

    550 Failed, Illegal Pager ID (or other explanation)

After processing a SEND command, the server should remain online so the client can enter another page ๐Ÿ”.

6.2.5 QUIT

The QUIT command terminates the current session ๐Ÿ‘‹. The server should respond "221 OK, Goodbye" and close the connection.

6.2.6 HELP

The HELP command (optional) displays a screen of information about commands that are valid on the SNPP server ๐Ÿ“œ. This is primarily to assist manual users of the gateway. Each line of the HELP screen (responses) is preceded by a code "214". At the end of the HELP sequence, a "250 OK" is issued.

6.3 Illegal Commands

Should the client issue an illegal command, the server should respond "421 ERROR, Goodbye" and close the connection immediately ๐Ÿšซ. Optionally, the server may respond "502 Command Error, try again" should it be desirable to leave the connection open ๐Ÿ™ˆ.

6.4 Timeouts

The SNPP server can, optionally, have an inactivity timeout implemented โฐ. When the allotted time expires, the server responds "421 Timeout, Goodbye" and closes the connection.

6.5 Rigidity of Command Structure

The commands from client to server should remain constant ๐Ÿ”’. However, since the first character of the response indicates success or failure, the text of the server responses could be altered should one desire ๐ŸŽ€. The following is a hunk of C code that's used currently in an SNPP gateway ๐Ÿ’ป. The only response that hasn't been discussed is "421 SERVER DOWN, Goodbye". It's used when the gateway is administratively down, or when there are communication problems with the TAP/IXO paging terminal ๐Ÿ’€.

   /* SNPP Client Commands */

   #define PAGER        "PAGE"
   #define MESSAGE      "MESS"
   #define SEND         "SEND"
   #define QUIT         "QUIT"
   #define RESET        "RESE"
   #define HELP         "HELP"

   /* Responses from SNPP server to client */

   #define SNPP_OK      "250 OK"
   #define SNPP_RESET   "250 Reset OK"
   #define SNPP_SENT    "250 Page Sent"
   #define SNPP_BADPIN  "550 Failed,"
   #define SNPP_NOTSENT "554 Failed,"
   #define SNPP_ENTERR  "503 Error, Already Entered"
   #define SNPP_ERRINC  "503 Error, Incomplete Info"
   #define SNPP_OKCLOS  "221 OK, Goodbye"
   #define SNPP_TIMEOUT "421 Timeout, Goodbye"
   #define SNPP_ERRCLOS "421 ERROR, Goodbye"
   #define SNPP_DOWN    "421 SERVER DOWN, Goodbye"

7. Revision History ๐ŸŽ€

Okay so the very first draft was giving POP2 vibes ๐Ÿ’…. The author originally used POP2 style result/response codes, but the Internet community was like, "what if we did numeric response codes instead, like SMTP does?" ๐Ÿงš So the + and - style theory got a glow-up, and this spec is the version the protocol has been since the first proposed draft โœจ. Main character energy!

When a bad pager ID message (IXO/TAP administrative failure) came back from the paging terminal, the server used to send a 554 series (general failure) response ๐Ÿ™ˆ. That got changed to a 550 failure code so people can actually tell the two cases apart. Iconic distinction ๐Ÿ’–.


8. Relationship to Other IETF Work ๐Ÿฆ‹

So an IETF Working Group and three IESG members reviewed the strategy of this spec and a bunch of the details ๐Ÿซถ. Their verdict: using the existing email infrastructure was the move ๐Ÿ’Œ. Why? Deploying a brand new protocol is ridiculously expensive ๐Ÿ˜ญ, and email is one of the most widely-distributed applications protocol infrastructures on the whole Internet, so why reinvent the wheel? Most reviewers thought no new protocol was needed at all, because SNPP's special "deliver immediately or fail" requirement could be handled by carefully configuring clients and servers ๐Ÿ”ง. The experimental network printing protocol [3] was pointed out as an example of an existing infrastructure approach to an existing problem ๐Ÿ–จ๏ธ. Other reviewers were like, "okay, a case could be made for new protocol details so paging clients and servers can identify each other and negotiate transaction details," but they thought it'd be more sensible to handle that as extensions to SMTP [1,2] instead of a whole new protocol structure ๐Ÿค“.

The author gets where all those people are coming from, but they still think a separate protocol is worth it ๐Ÿ’œ. The point is to isolate the details of TAP/IXO and its evolving successors from users, and honestly from mail-based approaches too. Those mail-based approaches might reach systems that act as SMTP/MIME [4] to SNPP gateways, and those systems and gateways are actually being designed and developed right now, at the same time as this work ๐Ÿ› ๏ธ. For more on the author's take on the classic electronic email approach, check the section "Why not just use Email and SMTP?" ๐Ÿ“ฌ.


9. References ๐Ÿ“š

[1] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, USC/Information Sciences Institute, August 1982. ๐ŸŒˆ

[2] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D. Crocker, "SMTP Service Extensions", United Nations University, Innosoft, Dover Beach Consulting, Inc., Network Management Associates, Inc., The Branch Office, February 1993. โœจ

[3] Rose, M., and C. Malamud, "An Experiment in Remote Printing", RFC 1486, Dover Beach Consulting, Inc., Internet Multicasting Service, July 1993. ๐Ÿ–จ๏ธ

[4] Borenstein, N., and N. Freed, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, Bellcore, Innosoft, September 1993. ๐Ÿ’…


10. Security Considerations ๐Ÿ”

Plot twist ๐Ÿ˜ฑ: this memo does not discuss security issues at all. Not one word! Bestie, that is a very big deal, so please take it seriously ๐Ÿ’€. Don't skip past this part ๐Ÿซถ.


11. Author's Address ๐ŸŒธ

The author is R. Allen Gwinn, Jr. ๐Ÿงš Here's how to reach them:

R. Allen Gwinn, Jr.
Associate Director, Computing Services
Business Information Center
Southern Methodist University
Dallas, TX  75275

Phone:  214/768-3186
EMail:  allen@mail.cox.smu.edu or allen@sulaco.lonestar.org
๐Ÿ“ฆ where this page comes from