AX.25 LAYER 2 PROTOCOL SPECIFICATION

This   protocol   conforms  with  the  ISO  Recommendations  3309,  4335 
(including DAD 1&2) and 6256 high-level data  link  control  (HDLC)  and 
uses some terminology found in these documents.

This  protocol also conforms with ANSI X3.66, describing ADCCP, balanced 
mode.

This protocol is written  to  work  equally  well  in  either  half-  or 
full-duplex amateur radio enviroments.

This  protocol  has  been  written  to  work  equally  well  for  either 
point-to-point connections, or connections made thru  a  larger  device, 
such as a metropolitan network controller (MNC).

This  protocol  does  allow  the  establishment of more than one layer 2 
(link layer) connection per device, if the device is so capable.

This protocol also follows in principle the CCITT  X.25  recommendation, 
with  the exception of an extended address field and the addition of the 
Unnumbered Information (UI) frame.

Most layer 2 protocols assume that one large device (generally  called a 
DCE,  or  data  circuit-terminating  equipment)  is connected to several 
smaller devices (usually called a DTE, or data  terminating  equipment). 
AX.25  assumes  that  both  ends  of  the  link  are  balanced,  thereby 
eliminating the two different classes of device.



Frame_Structure

Level 2 packet-radio transmissions are  sent  in  small  blocks,  called 
frames. These frames are made up of smaller parts, called fields. Fig. 1 
shows how the three types of frames are made up. Fig. 1 shows the frames 
in   the   same   bit   order  that  most  packet  articles  show  them. 
Unfortunately,  this  method  has  led  to  some  confusion,  since  the 
least-significant  bit (LSB) is to the left rather than to the right, as 
most people would ordinarily assume.  I am pointing  this  out  early in 
this  paper  to  prevent mass confusion as I progress.  Later on, I will 
switch to a hopefully more understandable way of showing the  frame  ans 
its components.



Field_Definitions

The  frame  is  made  up of several parts, called fields.  Each of these 
fields is made up of an integral number of octets (or bytes), and serves 
a specific function.



Flag_Field

Since  amateur  packet radio is a bit-oriented protocol, the only way to 
tell when one frame is over and another  is  starting  for  sure  is  to 
delimit each frame with a certain bit sequence both at the beginning and 
the end.  This is the job of the flag field.  A flag consists  of a zero 
followed by six ones followed by another zero, or 01111110 (7E hex). Due 
to the bit stuffing mentioned above, the  only  time  this  sequence  is 
allowed is at the beginning and end of a legitimate frame.



Address_Field

The address field is used to identify both where the frame came from and 
what the destination of it is.  In the CCITT  recommendation  X.25, this 
field is only one octet long. This permits at most 256 users per level 2 
channel, and since some bits of this field were used for other purposes, 
the real number of users were about thirty per level 2 channel. Both the 
HDLC and ADCCP recommendations allowed the address field to be extended, 
so  we  decided to extend the address field per their recommendations in 
the amateur version of  X.25  to  include  the  callsigns  of  both  the 
destination and source amateur radio stations. The method used to extend 
the address field will be described shortly.



Control_Field

The control field is used to identify the  type  of  frame  and  control 
several attributes of the level 2 connection. It is one octet in length, 
and its encoding will be discussed in a following section.



PID-Field

The Protocol Identifier (PID) field is used only in information  frames, 
and  identifies  what  kind of layer 3 protocol, if any, is in use.  Its 
encoding is as follows:

     M      L
     S      S
     B      B
     xx00xxxx  Reserved at the moment.
     xx01yyyy  AX.25 layer 3 implemented.
     xx10yyyy  AX.25 layer 3 implemented.
     11110000  No layer 3 implemented.
     11111111  Escape character.  Next byte contains more PID information.

            Where:

            1.   An x indicates a "don't care" bit.
            2.   A y indicates all combinations used.



Information_Field

The information field is used to convey the actual user  data  from  one 
end of the link to the other. I fields are allowed in only three tyes of 
frames, the I frame, the UI frame, and the FRMR frame.  The I  field can 
be up to 256 octets long, and should be an even multiple of octets long. 
Any information in the I field should be passed along the  link  totally 
transparently,  except  for  any zero-bit insertion necessary to prevent 
flags from accidentally appearing in the I field.



Frame_Check_Sequence

The frame-check sequence is a sixteen-bit number calculated by both  the 
sender  and receiver of a frame.  It is used to make sure that the frame 
was not corrupted by the medium used to get the frame from the sender to 
the  receiver.    It  is  calculated  in accordance with ISO 3309 (HDLC) 
recommendations.



Bit_Stuffing

In order to assure  that  the  flag  sequence  mentioned  above  doesn't 
accidentially  appear  anywhere  else  in a frame, as the frame is being 
sent it should be monitored, and if more than five contiguous  ones  are 
detected,  a  zero bit should be added between the fifth and sixth ones, 
eliminating the possibility of a flag appearing in the frame other  than 
where  it  belongs.    The  receiver of five ones, a zero, and more ones 
should automatically eliminate the inserted zero before passing the data 
on.



Bit_Order_of_Transmission

With  the exception of the FCS field, all other fields in an AX.25 frame 
should be sent starting with the least-significant bit.    In accordance 
with HDLC practices, the FCS should be sent most-significant bit first.



Frame_Abort

If a frame must be prematurely aborted, at least fifteen contiguous ones 
should be sent with no bit stuffing added.



Invalid_Frames

Any frame consisting of less than 136 bits, or not  bounded  by  opening 
and  closing  flags, or not octet aligned (an integral number of octets) 
should be considered an invalid frame by the link layer.



Address_Field_Encoding

The address field  of  all  frames  should  be  encoded  with  both  the 
destination  and  source  amateur  callsigns of the frame.  If a level 2 
amateur "repeater" is to be used, its callsign should  also  be  in  the 
address  field.   AX.25 follows the HDLC recommended method of extending 
the address field in order to fit all this information into the  address 
field.

Basically,  the  way the HDLC address field is extended beyond one octet 
is to reserve the least-significant bit of each octet for what is called 
an  "extender  bit".  This bit is set to zero if the next octet contains 
more address field information, and is set to one if this  is  the  last 
octet.   To make room for this extender bit, the amateur radio call sign 
information is shifted  one  bit  to  the  left.    The  actual encoding 
techniques for both non-repeater and repeater operation follows.



Non-Repeater_Address-Field_Encoding

If a level 2 repeater is not being used, the address field is encoded as 
shown in Fig. 2. The destination address is the call sign of the amateur 
radio  station  that the frame is addressed to, while the source address 
contains the amateur call sign who sent the frame.  These call signs are 
the  call signs of the two ends of a level 2 AX.25 link only, not of any 
other station, such as  the  destination  of  a  packet  going  thru  an 
intermediary  link.    Those  addresses should be in a higher layer, not 
layer 2.

A1 thru A14 are the  fourteen  octets  that  make  up  the  two  address 
sub-fields  of  the address field.  The destination sub-address is seven 
octets long (A1 thru A7), and  is  sent  first.    This  will  allow the 
receivers  of  the frame time to check the destination address sub-field 
and see if the frame is for them while the rest of the  frame  is  being 
received.    The source address sub-field is then sent in octets A8 thru 
A14. Both of these sub-fields are encoded in the same manner, except for 
the last octet having the HDLC address extender bit set.  Since they are 
basically the same, only the destination sub-address will be outlined.

There is an extra octet at the end of each address sub-field that allows 
room for a Secondary-Station Identifier (SSID) and three additional bits 
for future expansion. The SSID field allows an Amateur Radio operator to 
have more than one packet radio station.  This is useful when an amateur 
wants to put up a repeater  in  addition  to  his  regular  station  for 
example.

Appendix A shows a typical AX.25 frame in the non-repeater mode.



Destination Sub-Field Encoding

Fig.    3  shows  how  an amateur call sign is placed in the destination 
address sub-field, occupying octets A1 thru A7.

     | Octet | ASCII |Bin.Data|Hex Data|
     -----------------------------------
     |  A1   |   W   |10101110|   AE   |
     |  A2   |   B   |10000100|   84   |
     |  A3   |   4   |01101000|   68   |
     |  A4   |   J   |10010100|   94   |
     |  A5   |   F   |10001100|   8C   |
     |  A6   |   I   |10010010|   92   |
     |  A7   | SSID  |0RRSSID0|        |
     -----------------------------------
     Bit Position-->  76543210

    Fig. 3.  Destination Field Encoding

        Where:

        1. The top octet (A1)  is  the  first  octet  sent 
        (sort  of  like  popping  it  off  the  top of the 
        stack), with bit 0 of each octet being  the  first 
        bit sent, and bit 7 being the last bit sent.

        2.  The  first  (low  order  or bit 0) bit of each 
        octet is the HDLC extender bit, which  is  set  to 
        zero  on  all  but  the  last octet in the address 
        field, where it is set to one.

        3. The bits marked "R" are reserved bits. They may 
        be  used  in  an  agreed upon manner in individual 
        networks.  If they aren't implemented, they should 
        be set to one.

        4.  The  characters  of  the  callsign  should  be 
        standard seven-bit ASCII (upper case only)  before 
        being  shifted  left to make room for the extender 
        bit.  If the callsign is less than  six characters 
        long, it should be padded at the trailing end with 
        ASCII spaces between the end of the  callsign  and 
        the SSID octet.

        5.  The  SSID  portion  of the last octet has been 
        intentionally left vague at  this  point,  and  is 
        left  up to the individual station to assign.  The 
        only recommended restriction  is  to  reserve  the 
        all-one  condition  (1111) for an all-call SSID in 
        case one wants to reach  an  amateur  but  doesn't 
        know what SSID that amateur operates under.



Level_2_Repeater_Address-Field_Encoding

If a frame is to go thru a level 2 amateur packet repeater, there is  an 
additional address sub-field added to the end of the address field. This 
additional sub-field contains the call sign of the repeater to be  used. 
This  will  allow  more  than one repeater to share the same rf channel, 
which has been a problem with the older protocols. If this field exists, 
the last octet of the source sub-field has its extender bit set to zero, 
indicating that more address-field data follows.   The  repeater address 
sub-field  is  encoded  in the same manner as the destination and source 
address subfields, except for one bit in the last octet, called the  "H" 
bit.  The H bit is used to indicate whether a frame has been repeated or 
not. This is necessary to prevent someone from potentially receiving two 
identical frames, the one going to the repeater, and the one coming back 
from the repeater.  Fig.  4 shows how the repeater  address sub-field is 
encoded.    Appendix B is an example of a complete frame on its way back 
from a repeater.

     -----------------------------------
     | Octet | ASCII |Bin.Data|Hex Data|
     |---------------------------------|
     |  A15  |   W   |10101110|   AE   |
     |  A16  |   B   |10000100|   84   |
     |  A17  |   4   |01101000|   68   |
     |  A18  |   J   |10010100|   94   |
     |  A19  |   F   |10001100|   8C   |
     |  A20  |   I   |10010010|   92   |
     |  A21  | SSID  |HRRSSID1|        |
     -----------------------------------
     Bit Order -->    76543210

    Fig 4.  Repeater Address Encoding

        Where:

        1. The top octet is the first octet sent, with bit 
        0 being sent first, bit 7 sent last of each octet.

        2. As with  the  source  and  destination  address 
        sub-fields  discussed above bit 0 of each octet is 
        the HDLC address extender bit,  which  is  set  to 
        zero on all but the last address octet (A21) where 
        it is set to one.

        3. The "R" bits are  reserved  just  like  in  the 
        source and destination sub-fields.

        4. The "H" bit is the has-been-repeated bit. It is 
        set to zero on a non-repeated frame,  and  set  to 
        one  by  the  repeater  when  the  frame  has been 
        repeated.

It should be noted that some of the advantages of this addressing scheme 
are mentioned in Appendix C.



Control_Field_Formats

The  control  field is responsible for identifying what type of frame is 
being sent, and is also used to convey commands and responses  from  one 
end of the link to the other to maintain proper control over the link.

The  control  fields used in AX.25 use the CCITT X.25 control fields for 
balanced operation, with an additional control field taken from ADCCP to 
allow connectionless and round-table operation.

There are three general types of AX.25 frames.  They are the Information 
frame (I frame), the Supervisory frame (S  frame),  and  the  Unnumbered 
frame  (U  frame).   Fig.  5 shows the basic format of the control field 
associated with these types of frames.

     ----------------------------------------
     |Control Field |    Control Field Bits |
     |    Type      | 7 6 5 | 4 | 3 2  1  0 |
     ----------------------------------------
     |    I Frame   | N(R)  |P/F| N(S)  | 0 |
     ----------------------------------------
     |    S Frame   | N(R)  |P/F| S S| 0| 1 |
     ----------------------------------------
     |    U Frame   | M M M |P/F| M M| 1| 1 |
     ----------------------------------------
         Fig. 5.  Control Field Formats

        Where:

        1. Bit 0 is the first bit sent, bit 7 is the  last 
        bit sent of the control field.

        2.  N(S) is the send sequence number (bit 2 is the 
        LSB).

        3. N(R) is the receive sequence number (bit  6  is 
        the LSB).

        4. The "S" bits are the supervisory function bits, 
        and their encoding is discussed below.

        5. The "M" bits are the unnumbered frame  modifier 
        bits and their encoding is discussed below.

        6. The P/F bit is the Poll/Final bit. Its function 
        is described in more detail shortly.




Control_Field_Definitions
                                            

     Information Frame Control Field

All I frames have bit 0 of the control field set to zero.   N(S)  is the 
sender's  send sequence number (the send sequence number of this frame). 
N(R) is the sender's receive sequence number (the sequence number of the 
next expected received frame. These numbers are described in the section 
regarding flow control.


     Supervisory Frame Control Field

Supervisory frames are denoted by having bit 0 of the control field  set 
to  one,  and  bit 1 of the control field set to zero.  S frames provide 
supervisory  link  control   such   as   acknowledging   or   requesting 
retransmission  of  I  frames,  and  link level window control.  Since S 
frames don't have an information field, the sender's send  variable  and 
the receiver's receive variable are not incremented for S frames.


    Unnumbered Frame Control Field

Unnumbered  frames  are distinguished by having both bits 0 and 1 set to 
one.  U frames are responsible for  maintaining  control  over  the link 
beyond what is accomplished with S frames. They are also responsible for 
the establishment and tearing down of the link.  U frames also allow for 
the transmission and reception of information outside of the normal flow 
control. Some U frames may contain information fields.



Control_Field_Parameters


     Sequence_Numbers_and_Variables

Every AX.25 I frame shall be assigned a sequential number from 0  to  7. 
This  will allow up to seven outstanding I frames per level 2 connection 
at a time.


     Send_State_Variable_V(S)

The send state variable is an internal variable that is never sent.   It 
contains  the  next  sequential  number  to  be  assigned  to  the  next 
transmitted I frame.  This variable is updated upon the  transmission of 
each I frame.


     Send_Sequence_Number_N(S)

The  send sequence number is found in the control field of all I frames. 
It contains the sequence number of the I frame being sent. Just prior to 
the transmission of the I frame, N(S) is updated to equal the send state 
state variable.


     Receive_State_Variable_V(R)

The receive state variable is an internal  variable  that  contains  the 
sequence number of the next expected received I frame.  This variable is 
updated upon the reception of an error-free I frame whose send  sequence 
number equals the present received state variable value.


     Received_Sequence_Number_N(R)

The received sequence number is in both I and S frames. Prior to sending 
an I or S frame, this variable is updated to equal that of the  received 
state variable, thus implictly acknowledging the proper reception of all 
I frames up to and including N(R)-1.


     Poll/Final_(P/F)_Bit

The P/F bit may be used in all types of frames.  It is used in a command 
(poll) mode to request an immediate reply to a frame.  The reply to this 
poll is indicated by setting the response (final) bit in the appropriate 
frame. Only one outstanding poll condition per direction is allowed at a 
time.



Control_Field_Encoding


     Information_Frame_Control_Field

The information frame control field is encoded as shown in Fig. 6. These 
frames  are  sequentially  numbered to maintain control of their passage 
over the link level connection.

                Control Field Bits
            -------------------------
            | 7 6 5 | 4 | 3 2 1 | 0 |
            -------------------------
            | N(R)  |P/F|  N(S) | 0 |
            -------------------------
         Fig. 6.  I Frame Control Field
                                                           


     Supervisory_Frame_Control_Field

The supervisory frame control fields are encoded as shown in Fig.  7. In 
AX.25, S frames are used only as responses to other frames.

 ------------------------------------------------
 |  Control Field Bits  | 7 6 5 | 4 | 3 2 | 1 0 |
 |----------------------------------------------|
 |   Receive Ready  RR  | N(R)  |P/F| 0 0 | 0 1 |
 |Receive Not Ready RNR | N(R)  |P/F| 0 1 | 0 1 |
 |  Reject          REJ | N(R)  |P/F| 1 0 | 0 1 |
 ------------------------------------------------
        Fig. 7.  S frame control Fields



     Receive_Ready_(RR)_Response

Receive Ready is used to do the following:

        1. To indicate that the sender of the  RR  is  now 
        able to recieve more I frames.

        2.  To  acknowledge  properly received I frames up 
        to, and including N(R)-1.

        3.  To  clear  a  previously  set  busy  condition 
        created by an RNR command having been sent.

It  should be noted that the status of the other side of the link can be 
requested by setting the poll bit.
                                                   
        

     Receive_Not_Ready_(RNR)_Response

Receive not ready is used to indicate to the sender  of  I  frames  that 
receiver is temporarily busy and cannot accept any more I frames. Frames 
up to N(R)-1 are acknowledged.  Any I frames  numbered  N(R)  and higher 
that might have been caught in between and not acknowledged when the RNR 
command was sent are NOT acknowledged.

The RNR condition can be cleared by the sending of a  UA,  RR,  REJ,  or 
SABM frame.  The P/F bit can be used within the RNR frame to interrogate 
the status of the other side of the link.
                                         


     Reject_(REJ)_Response

The reject frame is used to request retransmission of I frames  starting 
with N(R). Any frames that were sent with a sequence number of N(R)-1 or 
less are acknowledged.  Additional  I  frames  may  be  appended  to the 
retransmission of the N(R) frame if there are any.

Only  one reject frame condition is allowed in each direction at a time. 
The reject condition is cleared by the proper reception of I  frames  up 
to the I frame that caused the reject condition to be initiated.

As  with the other supervisory responses, the P/F bit may be used in the 
REJ frame.
          

     Unnumbered_Type_Frames

Unnumbered frame control fields are either commands or responses.   This 
standard follows X.25 as much as possible.  The only deviation from X.25 
is in the addition of the Unnumbered Information (UI) frame from  ADCCP. 
X.25  is designed to work with in full-duplex systems with only one main 
device (DCE) and potentially many users (DTEs).

Amateur Radio packet systems differ greatly on both of  these  respects. 
Not  only  is  Amateur  Radio packet networking done in a half-duplex rf 
environment, but many DCE/DTE links many be sharing  the  same  channel. 
Many  amateurs  have  rejected  the  use  of  X.25  as a result of these 
problems.  X.25 can easily be enhanced so that it will  perform properly 
over amateur radio.

Fig. 8 shows the layout of U frames implemented within this standard.

 ------------------------------------------------
 |   Control Field |Type|  Control Field Bits   |
 |                  |   | 7 6 5   4   3 2   1 0 |
 |----------------------------------------------|
 |Set Asynchronous  |Cmd| 0 0 1 | P | 1 1 | 1 1 |
 |Balanced Mode-SABM|   |       |   |     |     |
 |----------------------------------------------|
 | Disconnect-DISC  |Cmd| 0 1 0 | P | 0 0 | 1 1 |
 |----------------------------------------------|
 | Disconnected Mode|Res| 0 0 0 |P/F| 1 1 | 1 1 |
 |       DM         |   |       |   |     |     |
 |----------------------------------------------|
 |   Unnumbered     |Res| 0 1 1 | F | 0 0 | 1 1 |
 |  Acknowledge-UA  |   |       |   |     |     |
 |----------------------------------------------|
 | Frame Reject-FRMR|Res| 1 0 0 | F | 0 1 | 1 1 |
 |----------------------------------------------|
 |   Unnumbered     |Eit| 0 0 0 |P/F| 0 0 | 1 1 |
 |  Information-UI  |her|       |   |     |     |
 ------------------------------------------------
        Fig. 8.  U Frame Control Fields

     Set_Asynchronous_Balanced_Mode_(SABM)_Command                   

The  SABM  command  is  used  to  place  2  stations in the asynchronous 
balanced mode. This is a balanced mode of operation known as LAP B where 
DCEs and DTEs are treated as equals.

Information  fields  aren't allowed in SABM commands.  Any outstanding I 
frames left when the SABM command is issued will remain unacknowledged.
                                                                       

     Disconnect_(DISC)_Command

The DISC command is  used  to  terminate  a  link  session  between  two 
stations. No information field is permitted in a DISC command frame. Any 
outstanding I frames will remain outstanding.
                                             

     Disconnected_Mode_(DM)_Response

The disconnected mode response is sent whenever the DTE or DCE  receives 
a  frame  other than a SABM while in a disconnected mode.  It is sent to 
request a set mode command, or to indicate it cannot accept a connection 
at the moment. The DM response cannot have an information field.

A  DCE or DTE in the disconnected mode will respond to any command other 
than a SABM with a DM response with the P/F bit set to 1.
                                                         

     Unnumbered_Acknowledge_(UA)_Response

The  UA  response  frame  is  sent  to  acknowledge  the  reception  and 
acceptance  of  a  U  frame command.  A received command is not actually 
processed until the UA response frame is sent.  An information  field is 
not permitted in a UA frame.
                            

     Frame_Reject_(FRMR)_Response

The  FRMR  response  frame  is  sent  to report that for some reason the 
receiver of a command or information frame cannot  successfully  process 
that  frame  and  that the error condition is not correctable by sending 
the offending frame again.  Typically this condition will appear  when a 
frame  without  an FCS error has been received with one of the following 
conditions:

        1.  The reception of an invalid or not implemented        
        command or response frame.

        2. The reception of an I frame  whose  information 
        field exceeds the agreed upon length.

        3. The reception of an improper N(R). This usually 
        happens when the N(R) frame has already been  sent 
        and  acknowldeged, or when N(R) is out of sequence 
        with what was expected.

        4. The reception of a frame  with  an  information 
        field  where  one is not allowed, or the reception 
        of an U or S frame whose length is incorrect.

When a CMDR or FRMR frame is sent, an information field is added to  the 
frame that helps to explain where the problem occurred. This information 
field is three octets long and its contents is shown if Fig. 9 below.

--------------------------------------------------
|             Information Field Bits             |
| 2 2 2 2 1 1 1 1 1 1 1 1 1 1                    |
| 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0|
|------------------------------------------------|
| 0 0 0 0|Z|Y|X|W| V(R)|C| V(S)|0| Rejected Frame|
|        | | | | |     | |     | | Control Field |
--------------------------------------------------
     Fig. 9.  FRMR Frame Information Field

        Where:

        1. The rejected frame control  field  carries  the 
        control  field of the frame that caused the reject 
        condition.  It is in bits 1-8  of  the information 
        field.

        2.  V(S) is the current send state variable of the 
        device reporting the rejection (bit 10 is the  low 
        bit).

        3.  V(R)  is the current receive state variable of 
        the device reporting rejection (bit 14 is the  low 
        bit).

        4.  If  W  is set to 1, the control field received 
        was invalid or not implemented.

        5. If X is set to 1, the  frame  that  caused  the 
        reject condition was considered invalid because it 
        was a U or S frame that had an  information  field 
        that  is  not  allowed.  Bit W must be set to 1 in 
        addition to the X bit.

        6. If Y is set to 1, the  information  field  of a 
        received  frame  exceeded  the maximum capacity of 
        the device reporting the condition.

        7. If Z is set to 1, the  control  field  received 
        and  returned  in bits 1 to 8 contained an invalid 
        N(R).

        8. Bits 8, and 20 to 23 are set to 0.   Bit  12 is 
        set to 0 if the rejected frame was a command, or 1 
        if if it was a response.
                                                                     
        Unnumbered_Information_(UI)_Frame

The  unnumbered  information frame is used to pass information along the 
link outside the normal information controls.   This  allows information 
fields  to  go back and forth on the link bypassing flow control.  Since 
these frames are NOT acknowledgeable, if one gets wiped out, there is no 
way to recover it.
                                                                      
The UI frame is not defined in X.25.  It has been  taken  from  ADCCP to 
allow uncontrolled information to flow thru the link without interfering 
with a next higher layer.


Link_Error_Recovery

There are several link-level errors that are recoverable without tearing 
down  the  connection.   These error situations may occur as a result of 
malfunctions within the DTE or DCE, or if transmission errors occur.
                                                                    

     Invalid_Frame_or_FCS_Error

If an invalid frame is received, or a frame  is  received  with  an  FCS 
error, that frame will be discarded with no action taken.
                                                         

     Device_Busy_Condition

When a DTE or DCE becomes temporarily busy, such as when receive buffers 
are full, it will send a receive not ready (RNR) frame.  This  tells the 
other  side  of the link that the device cannot handle any more I frames 
at the moment. This condition is usually cleared by the sending of a UA, 
RR, REJ, or SABM command frame.
                               

     Send_Sequence_Number_Error

If  the send sequence number , N(S), of an otherwise error-free received 
I frame does not match the receive state variable, V(R), a send sequence 
error  has  occured,  and  the information field will be discarded.  The 
receiver will not acknowledge this frame, or any other  I  frames  until 
N(S) matches V(R).
                  
The  control  field of the erroneous I frame(s) will be accepted so that 
link supervisory functions can still be performed, such as checking  the 
P/F bit. Because of this updating, the retransmitted I frame may have an 
updated P bit and N(R).
                       

     Reject_(REJ)_Error_Recovery

REJ is used to request  a  retransmission  of  I  frames  following  the 
detection of a sequence error.  Only one outstanding reject condition is 
allowed at a time.  This condition is cleared when the requested I frame 
has been received.

A  device receiving the REJ command will clear the error by sending over 
the I frame indicated in N(R) of of the REJ command frame.
                                                          
     Time-out_Error_Recovery

When a transmission abnormality wipes out a single I frame, or the  last 
I  frame  of a group, there is no way of telling this immediately, since 
the receiver does not necessarily know something was sent until  another 
frame  is sent resulting in an out-of-sequence error.  To cope with this 
situation better some form of time-out delay will be incorporated by the 
sender after it sends out a frame. This time-out timer is started at the 
time a frame is sent, and stopped by the reception of an acknowledgement 
for the sent frame.  If the timer times out before an acknowledgement is 
received, any unacknowledged frames are retransmitted.  The delay  is an 
agreed-upon  amount  that  will  vary  with  the  type  of rf medium and 
signaling speed used.
                     

     Rejection_Error

A rejection error condition occurs when an error-free received frame has 
one of the following problems:

        1. An invalid command or response control field.

        2. An invalid frame format.

        3. An Invalid N(R).

        4. An information field that exceeds  the  maximum 
        the device can accept.

Once  a  rejection error occurs, no more I frames are accepted (with the 
exception of the P/F bit still usable) until the error is resolved.  The 
error  condition  is reported to the other side of the link by sending a 
FRMR response frame.
                    
                                                 

Primary/Secondary_versus_Balanced_Operation

There are two basic classes of link-level connections.  The first, known 
as  Link Access Procedure (or LAP) is often called an unbalanced service 
where the DCE is considered the primary (or master) devices and the DTEs 
are considered secondary (or slave) devices. The second class of service 
is known as LAPB, Link Access Procedure Balanced.  In this  service both 
devices  are  treated  as equals as far as connection requests and other 
types of commands.  There is still only  one  DCE  and  potentially many 
DTEs, but both ends can command the link equally.


     Primary/Secondary_(LAP)_Operation

LAP  is  the older style of link control, where most of the intelligence 
was assumed to be in a large mainframe (the DCE) and the end users  were 
just using smart terminals (the DTEs). Since network software can have a 
lot of overhead, it made sense at the time to put most of  the  overhead 
in the big computer, and just enough smarts to make the link work in the 
terminals.
          
     Balanced_(LAPB)_Operation

LAPB is a slightly modified version of LAP. It has been changed to allow 
the  two  sides  of a link to operate in a more balanced manner.  In the 
official version of X.25 there is still only one DCE to potentially many 
DTEs, but the two can operate more as equals than master and slave.

LAPB  is  what this document describes for use over Amateur Radio packet 
networks. Even when there is a network controller overseeing the network 
operation, the balanced link procedure will enhance operation.
                                                              


Connection_Operation

In  amateur  radio  network  operations, it would be very helpful if one 
level 2 protocol would work with the various  rf  systems  in  use.   An 
example  of  this  is  the  difference  in  operation  between  a simple 
two-station  link,  and  multiple  stations  operating  thru  a  network 
controller.    Obviously, when a network controller exists, it should be 
considered the DCE, while the other stations connecting to it  would  be 
the  DTEs.   A simple two-station connection is another matter.  To this 
type of connection the station requesting a connection should always  be 
considered  the  DTE,  while the device that is receiving the connection 
request should operate as the DCE. This simple rule should eliminate any 
ambiguity that might otherwise occur under these conditions.

NOTE:  There  are a couple minor changes from the official X.25 standard 
in the protocol recommended  here.    These  changes  are  done  only as 
absolutely  necessary  to work over the shared rf media.  Since X.25 was 
written to work so that one DCE talked with  many  DTEs  over  a  closed 
network,  it cannot properly cope with a channel where there may be many 
DCEs linked to many DTEs.  Some amateurs have thrown X.25 out because of 
this  problem.    It  seems  to  take just a couple minor changes in the 
initial link set-up procedure to make X.25 work  properly  over  amateur 
radio.    Where these changes are made, both the original X.25 procedure 
and the recommended amateur procedure will be noted.
                                                    


LAPB_Procedures

The  following  describes  the  procedures  used  to  set-up,  use,  and 
disconnect a balanced link between a DTE and DCE.  These procedures have 
been taken from X.25 and conform very closely to that  standard,  except 
where it was necessary to change due to the radio environment.
                                                              

     Address_Field_Operation

All  transmitted  frames  shall  have address fields conforming to above 
mentioned rules.  All frames should have both the destination device and 
the  source  device addresses in the address field, with the destination 
address coming first.  This will allow many links to share  the  same rf 
channel. The destination address is always the address of the station(s) 
to receive the frame, while the source address contains the  address  of 
the  device that sent the frame.  The destination address can be a group 
name or club call however, if point to multi-point operation is allowed. 
This will be discussed further under link operations.
                                                     

     LAPB_Connection_Establishment

When a device (either a DCE or DTE) wishes to connect to another device, 
it will send a SABM command frame to that device and  start  a  time-out 
timer  (T1).   If the other device is there and able to connect, it will 
answer with a UA response frame and at the same time reset both of  it's 
internal  state  variables  (V(S)  and  V(R)).   The reception of the UA 
response frame at the other end will cause  the  device  requesting  the 
Nconnection  to  abort the T1 timer and set its internal state variables 
to 0 also.

If the other device doesn't respond before  T1  times  out,  the  device 
requesting  the  connection  will  re-send  the SABM frame, and start T1 
running again. This trying to establish a connection will continue until 
the  requesting device has tried unsuccessfully a number of times.  That 
number (N1) is variable depending on the frequency of operation, type of 
transmission (eg.  terrestial vs.  satellite), and the signaling speed n 
use. N1 will be discussed in another section.
                                             

     Information_Transfer

Once a connection has been established as outlined above,  both  devices 
are able to accept I, S, and U frames.
                                      

     Sending_of_I_Frames

Whenever  a station has an I frame to transmit, it will send the I frame 
with N(S) of  Nth  control  field  equal  to  it's  current  send  state 
variable  V(S).    Once  the I frame is sent, the send state variable is 
incremented by one.

The station should not transmit any more I frames  if  it's  send  state 
variable  equals  the  ast received N(R) from the other side of the link 
plus seven.  If it were to send more I frames, the  flow  control window 
would be exceeded and errors could result.

If  a  device is in a busy condition, it may still send I frames as long 
as the other device is not also busy.

If a device is in the  frame-rejection  mode,  it  will  stop  sending I 
frames.
       

     Receiving_I_Frames

If  a  device receives a valid I frame (one with a correct FCS and whose 
send sequence number equals the receiver's receive state  variable)  and 
is  not  in  the  busy  condition,  it will accept the received I frame, 
increment it's receive state variable, and act in one of  the  following 
manner:

        1.  If it has an I frame to send, that I frame may 
        be sent with the transmitted N(R)  equal  to  it's 
        receive  state  variable  V(R) (thus acknowledging 
        the received frame.  Alternately,  the  device may 
        send an RR frame with N(R) equal to V(R), and then 
        send the I frame.

        2.  If  there  are  no  outstanding  I  frames,the 
        receiving  device  will send an RR frame with N(R) 
        equal to V(R).

If  the  device  is  in  a  busy condition, it may ignore any received I 
frames  without  reporting  this  condition  other  than  repeating  the 
indication of the busy condition.

If  a  busy  condition  exists, the station receiving the busy condition 
indication should poll the sender of the  busy  indication  periodically 
until the busy condition disappears.

The  reception  of  I frames that contain zero length information fields 
shall be reported to the next level but no  information  field  will  be 
transferred.

When  an  I frame is received with a correct FCS, but it's send sequence 
number does not match the current receiver's receive state variable, the 
frame  should be discarded and a REJ frame should be sent with a receive 
sequence number equal to one higher (modulo 8) than the  last  correctly 
received  I  frame  .    Any out-of-sequence received I frames should be 
handled in this manner. The received state variable and poll bit in such 
a  discarded  frame  should be checked before throwing it away, and take 
any action needed depending on the condition of them.
                                                     
     Receiving_Acknowledgement
                                                      
Whenever an I  or  S  frame  is  correctly  received,  even  in  a  busy 
condition, the N(R) of the received frame should be checked to see if it 
includes an acknowldegment of outstanding sent I frames.   The  T1 timer 
should  be  reset if the received frame actually acknowledges previously 
unacknowledged frames.  If the T1 timer is reset,  and  there  are still 
some  frames that have been sent that are not acknowledged, T1 should be 
started again.  If the T1 timer runs out  before  an  acknowledgement is 
received, the device should proceed to the retransmission procedure.
                                                                    

     Receiving_Reject

Upon  receiving  a REJ frame, the transmitting station will set its send 
state variable to the same value are the REJ  frames  received  sequence 
number  in  the  control  field.   The device will then retransmit any I 
frame(s) outstanding at the next available opportunity conforming to the 
following:

        1. If the device is not transmitting at the  time, 
        and  the  channel is open, the device may commence 
        to retransmit the I frame(s) immediately.

        2. If the device is operating  on  a  full  duplex 
        channel  transmittiong  a  U  or  S  frame when it 
        receives a REJ frame, it may finish finding  the U 
        or S frame and then retransmit the I frame(s).

        3.  If  the  device  is operating in a full duplex 
        channel  transmitting  another  I  frame  when  it 
        receives  a REJ frame, it may abort the I frame it 
        was  sending  and  start  retransmission  of   the 
        requested I frames immediately.

        4.  The  device  may  send  just  the  one I frame 
        outstanding, or it may send more than one  if  any 
        more   I   frames   followed  the  first  one  not 
        acknowledged, provided the total to be  sent  does 
        not exceed the flow control window (7 frames).

If  the  device  receives  a  REJ frame with the poll bit set, it should 
respond with either an RR or RNR frame with the  final  bit  set  before 
retransmitting the outstanding I frame(s).            
                                          

     Receiving_an_RNR_Frame

Whenever  a  device receives an RNR frame, it may transmit or retransmit 
the I frame whose send sequence  number  equals  that  of  the  received 
sequence number indicated in the RNR control field. If timer T1 runs out 
after the RNR was received, the waiting acknowledgement procedure listed 
below should be performed.  The poll bit may be used in conjunction with 
S frames to test for a  change  in  the  condition  of  the  busied  out 
station.  No I frames other than the one mentioned above may be sent out 
before the busy condition is cleared.

     Sending_a_Busy_Indication

Whenever a device enters a busy condition,  it  will  indicate  this  by 
sending an RNR response at the next opportunity.  While the device is in 
the busy condition, it may  receive  and  process  S  frames,  and  if a 
received  S frame has the P bit set to one, the device should send a RNR 
frame with the F bit set to one at the next  possible  opportunity.   To 
clear  the  busy  condition,  the  device should send either a RR or REJ 
frame with the received sequence number equal  to  the  current  receive 
state  variable,  depending  on  whether  the  last received I frame was 
properly received or not.
                         

     Waiting_Acknowledgement

The device should maintain an  internal  retransmission  count  variable 
which  is  set  to zero whenever another I frame is acknowledged (either 
thru the reception of a UA or RNR frame, or when a received I or S frame 
has   an   N(R)   higher  than  the  last  received  N(R),  showing  the 
acknowledgement of additional I frames).

Any time the timer T1 runs out,  the  device  will  re-enter  the  timer 
recovery   condition,   the   retransmission   count  variable  will  be 
incremented by one, and another internal variable (X) will be set to the 
current send state variable value.

The  device  will  then  restart  the  T1  timer,  set its receive state 
variable to  the  last  receive  sequence  number,  and  retransmit  the 
corresponding I or S frame with the P bit set to one.

The timer recovery condition is cleared when the device receives a valid 
S frame with the F bit set to one.

If the device receives an S frame with the F bit set  to  one  and  N(R) 
within  the  range  from  the current send state variable to X mentioned 
above inclusive while in the timer recovery  condition,  this  condition 
will  be  cleared,  and  the send state variable will be set to the N(R) 
received.

If the device receives an S frame  with  the  F  bit  set  to  zero  but 
otherwise  the  same condition as the last paragraph, the timer recovery 
condition will NOT be cleared.  The received N(R) may be used however to 
update  the  send  state variable.  The device may keep the last I frame 
transmitted (even if it was acknowledged) to be retransmitted with the P 
bit set to one if timer T1 expires at a later time.

Once  the  retransmission  count  variable reaches N2, the device should 
proceed to the resetting procedures outlined below.
                                                   

     Link_Disconnection

When in the information-transfer phase,  either  device  may  initiate a 
link disconnection by sending a DISC frame.  It should then start its T1 
timer, and wait for a response.  If  the  proper  response  doesn't come 
before T1 times out, it should send the DISC frame again and restart T1. 
If this happens N2 times,  the  device  should  enter  the  disconnected 
state.

When  a DISC frame is received, the receiver should return a UA response 
frame, and enter the disconnected state.

     Disconnected_State
                                        
After having sent a DISC frame and received a UA, or  receiving  a  DISC 
and having sent a UA, the device will enter the disconnected state.

In  the  disconnected  state,  the  device may initiate a link set-up as 
outlined in connection establishment above.  It may also respond  to the 
reception  of  a  SABM  and establish a connection, or it may ignore the 
SABM and send a DM instead.

Any station receiving a DISC command while  in  the  disconnected  state 
should send back a DM response frame.

Any  device receiving a command frame other than a SABM or UI frame with 
the P bit set to one should respond with a DM frame with the F  bit  set 
to one. The offending frame should also be ignored.

When  the  device enters the disconnected state after an error condition 
or if it has recovered from an internal error condition by coming up  in 
the disconnected state, it should indicate this by sending a DM response 
rather than a DISC frame.  It should start the T1 timer when  the  DM is 
sent,  and  if T1 times out before getting a SABM or DISC frame back, it 
should send another DM frame, and restart T1.  After  retransmitting the 
DM frame N2 times, the device will remain in the disconnected state, and 
no other action will be taken.
                              

     Resetting_Procedure

The resetting procedure is used to initialize both  directions  of  flow 
after  a  nonecoverable  error has occured.  This resetting procedure is 
only used when in the information transfer phase of an AX.25 link.

A device shall request a reset by sending an SABM frame.  Upon receiving 
an SABM frame from a station previously connected to, the receiver of an 
SABM frame should send a UA frame back at the earliest opportunity. Both 
devices  should then set their send and receive state variables to zero. 
Any busy condition that previously existed will also be cleared.

It is possible to initiate a disconnect procedure instead  of  resetting 
the link.

One  device may ask the other to reset the link by sending a DM response 
frame.  After the DM frame is sent, the sending device  will  then enter 
the disconnected state.

One  device may ask the other to initiate a link reset by transmitting a 
FRMR response frame.

After sending the FRMR frame, the sending device will  enter  the  frame 
reject  state.   This condition is cleared when the device that sent the 
FRMR frame receives an SABM or DISC command, or a DM response frame. Any 
other  command  received  while  the device is in the frame reject state 
will cause another FRMR to be sent out with the same  information  field 
as originally sent.

The  device  that sent the FRMR frame should start the T1 timer when the 
FRMR is sent.  If above mentioned frames  are  not  received  before the 
timer runs out, the FRMR frame should be retransmitted, and the T1 timer 
restarted as described in the waiting acknowledgement section above.  If 
the FRMR is sent N2 times without success, the link should be reset.
                                                                    
     Rejection_Conditions

A  device  should  initiate  the  link-reset  procedure  when a frame is 
received with the correct FCS and address field during  the  information 
transfer phase with one or more of the following conditions:

        1. The frame is not known as a command or response 
        to the device.

        2. The information field is invalid (as an example 
        is longer than 256 octets)


A  device  will  initiate a reset procedure whenever it receives a DM or 
FRMR response frame during the information transfer phase.

A device may initiate a reset procedure also whenever it receives  a  UA 
response  frame or if it receives an unsolicited response frame with the 
F bit set to one.
                 


Collision_Recovery


     Collisions_in_a_Half-Duplex_Enviroment

Collisions of frames  of  any  type  in  a  half-duplex  enviroment  are 
essentially  taken  care  of  by  the  retry  nature of the T1 timer and 
retransmission count variable.  No  other  special  action  needs  to be 
taken.
      

     Collisions_in_a_Full-Duplex_Enviroment

Collisions  in a full-duplex enviroment are not really frame collisions, 
but have more to do with the  devices  being  pulled  in  two  different 
directions at the same time.
                            

     Collisions_of_Unnumbered_Commands

If  the  sent  and  received U command frames are the same, both devices 
should send a UA response at the earliest opportunity, and both  devices 
should enter the indicates state.

If  the  sent and received U commands are different, both devices should 
enter the disconnected state, and transmit a DM frame  at  the  earliest 
opportunity.
            

     Collision_of_a_DM_with_a_SABM_or_DISC

When  an  unsolicited  DM response frame is sent, a collision between it 
and a SABM or DISC may occur.  In order to prevent  this  DM  from being 
misinterpreted, all unsolicited DM frames should be transmitted with the 
F bit set to zero.  All SABM and DISC frames should be sent  with  the P 
bit  set  to  one,  so  there  isn't  any  confusion  when a DM frame is 
received.
         


Connectionless_Operation

In Amateur Radio circles, there is a type of operation that isn't really 
feasable  using  level 2 connections.  This operation is the roundtable, 
where several amateurs may be engaged in one conversation.  The only way 
to  accomplish  this  in  a  connected  mode  would  be to have everyone 
crossconnected with each other.  This would require a seperate  frame to 
be  sent  to  each  member  of  the  roundtable  every time someone says 
something.  Obviously, this mode is not practical.  The way most amateur 
packet  radio  enthusiasts  have  ended  up  implementing the roundtable 
operation is outside the AX.25 connection, but  still  using  the  AX.25 
frame  structure.   AX.25 does allow a special frame for this operation, 
called the Unnumbered Information (UI) frame.   It  is  recommended that 
when  this  type  of operation is in use, the destination address have a 
code word installed in it  to  prevent  the  users  of  that  particular 
roundtable  from  seeing all frames going thru the shared RF medium.  An 
example of this is if a group of amateurs are in a roundtable discussion 
about packet radio, they could put PACKET in the destination address, so 
they would only receive frames from others in the same  discussion.   An 
added advantage of the use of AX.25 in this manner is that the source of 
each frame is in the source address sub-field, so re could be written to 
automatically display who is making what comments.

Admittedly, this is a kludge to the level 2 AX.25 protocol. This type of 
operation really belongs at the next layer (layer 3,  packet  level)  of 
operation  but  until  layer  3  is  implemented,  this appears to be an 
acceptable substitute.

Keep in mind that this mode is connectionless, so all transmitted frames 
should   be   of  good  quality,  as  there  will  be  no  requests  for 
retransmissions of bad frames.  Collisions  will  also  occur,  with the 
potential of losing the frames that collided.
                                             


List_of_System_Defined_Parameters


     Timers

It  is  recommended  that  there  are  two  timers  used to maintain the 
integrity of the AX.25 layer 2 connection.

The first timer, T1, is used to make sure a device doesn't wait  forever 
for  a  response to a frame it sends.  This timer cannot be expressed in 
absolute time, since the time required to  send  frames  varies  greatly 
with the baud rate used at level 1. T1 should be at least twice the time 
it would take to send a maximum length frame to the  other  end  of  the 
link,  and  get the proper response frame back from the other end of the 
link.  This would allow time for the other end of the  link  to  do some 
processing before responding.

The  second  timer,  T2,  is used whenever T1 isn't running to make sure 
that  a  supervisory  frame  is  sent  periodically  to  maintain   link 
integrity.   It  also  will  vary  dramatically  depending  on  layer 1 
constraints, and is subject for further study.
                                              

     Maximum_Number_of_Retrys_(N2)

The maximum number of retrys is used in conjunction with the  T1  timer. 
It  will  vary  depending  on  the layer 1 in use, but will generally be 
sixteen.
        

     Maximum_Number_of_Octets_in_an_I_Field_(N1)

The maximum number of octets allowed in the I field will be 256.   There 
should also be an even multiple number of octets.
                                                 

     Maximum_Number_of_I_Frames_Outstanding_(k)

The maximum number of outstanding I frames at a time is seven. A smaller 
number may be used at any time, provided it  is  agreed  upon  ahead  of 
time.


      First
      Bit Sent
      -----------------------------------------------------------
      |   Flag   |  Address   | Control |    FCS     |  Flag    |
      |---------------------------------------------------------|
      | 01111110 |112/168 Bits| 8  Bits |  16  Bits  | 01111110 |
      -----------------------------------------------------------
                 Figure 1A.  U and S Frame Construction



First
Bit Sent
------------------------------------------------------------------------
|   Flag   |  Address   | Control|  PID  | Info.   |  FCS   |  Flag    |
------------------------------------------------------------------------
| 01111110 |112/168 Bits| 8 Bits | 8 Bits| N*8 Bits| 16 Bits| 01111110 |
------------------------------------------------------------------------
               Figure 1B.  Information Frame Construction



           First
           Octet Sent
           --------------------------------------------------
           |             Address Field of Frame             |
           |------------------------------------------------|
           | Destination Address |     Source Address       |
           |------------------------------------------------|
           |A1 A2 A3 A4 A5 A6 A7 | A8 A9 A10 A11 A12 A13 A14|
           --------------------------------------------------
            Figure 2A.  Non-Repeater Address Field Encoding




First
Octet Sent
----------------------------------------------------------------------------
|                       Address Field of Frame                             |
|---------------------------------------------------------------------------
| Destination Address|     Source Address      |    Repeater  Address      |
|--------------------------------------------------------------------------|
|A1 A2 A3 A4 A5 A6 A7|A8 A9 A10 A11 A12 A13 A14|A15 A16 A17 A18 A19 A20 A21|
----------------------------------------------------------------------------
                Figure 2B.  Repeater Address Field Encoding











                Appendix A.  Non-Repeater Frame Example

       -----------------------------------
       | Octet | ASCII |Bin.Data|Hex Data|
       -----------------------------------
       | Flag  |       |01111110|   7E   |
       |  A1   |   K   |10010110|   96   |
       |  A2   |   8   |01110000|   70   |
       |  A3   |   M   |10011010|   9A   |
       |  A4   |   M   |10011010|   9A   |
       |  A5   |   O   |10011110|   9E   |
       |  A6   | space |01000000|   40   |
       |  A7   | SSID  |01100000|   60   |
       |  A8   |   W   |10101110|   AE   |
       |  A9   |   B   |10000100|   84   |
       |  A10  |   4   |01101000|   68   |
       |  A11  |   J   |10010100|   94   |
       |  A12  |   F   |10001100|   8C   |
       |  A13  |   I   |10010010|   92   |
       |  A14  | SSID  |01100001|   61   |
       |Control| SABM  |00111111|   3F   |
       |  PID  | none  |11110000|   F0   |
       |  FCS  | part 1|XXXXXXXX|   HH   |
       |  FCS  | part 2|XXXXXXXX|   HH   |
       | Flag  |       |01111110|   7E   |
       -----------------------------------

The  frame  shown  is  an SABM frame, not going thru a level 2 repeater, 
from WB4JFI (SSID=0) to K8MMO (SSID=0), with no level 3 protocol.


               Appendix B.  Repeater Type Operation

       | Octet | ASCII |Bin.Data|Hex Data|
       |---------------------------------|
       | Flag  |       |01111110|   7E   |
       |  A1   |   K   |10010110|   96   |
       |  A2   |   8   |01110000|   70   |
       |  A3   |   M   |10011010|   9A   |
       |  A4   |   M   |10011010|   9A   |
       |  A5   |   O   |10011110|   9E   |
       |  A6   | space |01000000|   40   |
       |  A7   | SSID  |01100000|   60   |
       |  A8   |   W   |10101110|   AE   |
       |  A9   |   B   |10000100|   84   |
       |  A10  |   4   |01101000|   68   |
       |  A11  |   J   |10010100|   94   |
       |  A12  |   F   |10001100|   8C   |
       |  A13  |   I   |10010010|   92   |
       |  A14  | SSID  |01100000|   60   |
       |  A15  |   W   |10101110|   AE   |
       |  A16  |   B   |10000100|   84   |
       |  A17  |   4   |01101000|   68   |
       |  A18  |   J   |10010100|   94   |
       |  A19  |   F   |10001100|   8C   |
       |  A20  |   I   |10010010|   92   |
       |  A21  | SSID  |11100011|   E3   |
       |Control| SABM  |00111111|   3F   |
       |  PID  | none  |11110000|   F0   |
       |  FCS  | part 1|XXXXXXXX|   HH   |
       |  FCS  | part 2|XXXXXXXX|   HH   |
       | Flag  |       |01111110|   7E   |
       -----------------------------------

The above frame is the same as in Appendix A, but with the addition of a 
repeater address subfield (WB4JFI, SSID=1). The H bit is set, indicating 
this is from the output of the repeater.



                   Appendix C.          

    Advantages of the WB4JFI Addressing Scheme
                                                           


Some of the advantages to using this addressing system are:

        1.  Every  packet station will have a unique fixed 
        address that  doesn't  change  every  time  a  new 
        network is logged into.

        2.  Relocating to a new area won't cause major (or 
        minor) problems.

        3. Allows for more than 62 or 31 users at a time.

        4. No  local  packet  guru  is  needed  to  assign 
        addresses  with  attendant  concerns of backup and 
        transfer during failure.

        5. Direct or network operation requires no  change 
        of address.

        6.     All     the     problems    with    dynamic 
        allocation/de-allocation are eliminated.

        7. Reduces local co-network  interference  due  to 
        users in overlapping local network rf domains with 
        the same address fields.

        8. With every frame having  both  the  destination 
        and  source  addresses  in  them, it will be a lot 
        easier to set-up and run multiple  connections  on 
        the  same  data  channel  without  having problems 
        arise as to who is sending what frames to whom.

        9. In round-table operation, every frame sent will 
        have  the  source address imbedded in it, allowing 
        automatic printing of the source of the frame.

    
    
                                 Appendix D.  Layer 2 AX.25 State Table

-----------------------------------------------------------------------------------------------------------------------------------
|    State          |I with|I with-|RR with|RR with-|REJ with|REJ with-|RNR with|RNR with-| SABM | DISC |  UA   |   DM   |  FRMR  |
|                   | Poll |out  P | Final |out  F  | Final  |out  F   | Final  |out  F   |either|either| either| either | either |
|---------------------------------------------------------------------------------------------------------------------------------|
|S1 Disconnected    |  DM  |       |  DM   |        |   DM   |         |   DM   |         |UA,S5 | DM   |       |SABM,S2 |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S2 Link Setup      |      |       |       |        |        |         |        |         |  UA  |DM,S1 |   S5  |   S1   |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S3 Frame Reject    | FRMR |       | FRMR  |        |  FRMR  |         |  FRMR  |         |UA,S5 |UA,S1 |       |SABM,S2 | SABM,S2|
|---------------------------------------------------------------------------------------------------------------------------------|
|S4 Disconnect Rqst |      |       |       |        |        |         |        |         |  DM  |  UA  |   S1  |   S1   |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S5 Information Xfr |  RR  |   I   |   I   |   I    |   I    |    I    |   S9   |   S9    |  UA  |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
|---------------------------------------------------------------------------------------------------------------------------------|
|S6 REJ Frame Sent  | RR,S5|  I,S5 |   I   |   I    |   I    |    I    |   S15  |   S15   |UA,S5 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
|---------------------------------------------------------------------------------------------------------------------------------|
|S7 Waiting Acknow. |  RR  |   I   |  I,S5 |   I    |  I,S5  |    I    |   S9   |   S12   |UA,S5 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
|---------------------------------------------------------------------------------------------------------------------------------|
|S8 Device Busy     | RNR  |  RNR  |   I   |   I    |   I    |    I    |   S10  |   S10   |  UA  |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
|---------------------------------------------------------------------------------------------------------------------------------|
|S9 Remote Device   |  RR  |  RR   |  I,S5 |  I,S5  |  I,S5  |  I,S5   |        |         |UA,S5 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
|     Busy          |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S10 Both Devices   | RNR  |  RNR  |  I,S8 |  I,S8  |  I,S8  |  I,S8   |        |         |UA,S8 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
|     Busy          |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S11 Waiting Acknow.| RNR  |  RNR  |  I,S8 |   I    |  I,S8  |    I    |   S10  |   S13   |UA,S8 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
| and Device Busy   |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S12 Waiting Acknow.|  RR  |   RR  |  I,S5 |  I,S7  |  I,S5  |   I,S7  |        |         |UA,S5 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
| and Remote Busy   |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S13 Waiting Acknow.| RNR  |  RNR  |  I,S8 |  I,S11 |  I,S8  |  I,S11  |        |         |UA,S8 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
| Both Devices Busy |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S14 REJ Sent and   | RNR  |  RNR  |   I   |   I    |   I    |    I    |   S16  |   S16   |UA,S8 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
| and Device Busy   |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S15 REJ Sent and   |RR,S9 | RR,S9 |  I,S6 |  I,S6  |   I,S6 |   I,S6  |        |         |UA,S5 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
| Remote Busy       |      |       |       |        |        |         |        |         |      |      |       |        |        |
|---------------------------------------------------------------------------------------------------------------------------------|
|S16 REJ Sent and   | RNR  |  RNR  | I,S14 |  I,S14 |  I,S14 |  I,S14  |        |         |UA,S5 |UA,S1 |SABM,S2|SABM,S2 | SABM,S2|
| Both Devices Busy |      |       |       |        |        |         |        |         |      |      |       |        |        |
-----------------------------------------------------------------------------------------------------------------------------------

    

Ritorna a Software Radioamatoriale by IW3FQG