Network Working Group                                       I D Puleston
Internet Draft                    Global Village Communication (UK) Ltd.
expires in six months                                      February 1996


             PPP Protocol Spoofing Control Protocol  (PSCP)
                  <draft-ietf-pppext-spoof-00.txt>

Status of this Memo

   This document is the product of the Point-to-Point  Protocol  Working
   Group of the Internet Engineering Task Force (IETF).  Comments should
   be submitted to the ietf-ppp@ucdavis.edu mailing list.

   Distribution of this memo is unlimited.

   This document is an Internet  Draft.   Internet  Drafts  are  working
   documents  of  the Internet Engineering Task Force (IETF), its Areas,
   and its Working Groups.  Note that other groups may  also  distribute
   working documents as Internet Drafts.

   Internet Drafts are draft  documents  valid  for  a  maximum  of  six
   months.   Internet  Drafts  may be updated, replaced, or obsoleted by
   other documents at any time.  It is not appropriate to  use  Internet
   Drafts  as  reference  material  or  to  cite  them  other  than as a
   ``working draft'' or ``work in progress.''

   Please check the 1id-abstracts.txt listing contained in the internet-
   drafts    Shadow    Directories    on    nic.ddn.mil,   nnsc.nsf.net,
   nic.nordu.net,  ftp.nisc.sri.com,  or  munnari.oz.au  to  learn   the
   current status of any Internet Draft.


Abstract

   The Point-to-Point Protocol (PPP) [1] provides a standard method  for
   transporting multi-protocol datagrams over point-to-point links.

   This document describes a Network Control Protocol which  will  allow
   the  two ends of a connection to agree to carry out protocol spoofing
   when an idle link is temporarily disconnected in  order  to  save  on
   connection charges.

   This work was originally motivated by the desire to exploit the  fast
   call  setup  capability  of  ISDN,  but  is equally applicable in any
   situation in which a PPP connection is made over a link which can  be
   temporarily suspended for whatever reason.






Puleston                 expires in six months                  [Page i]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


                             Table of Contents


  1.     Introduction ..........................................    1

  2.     Overview of Protocol Spoofing .........................    2
     2.1    Limiting Session Length ............................    4
     2.2    Information Required for Protocol Spoofing .........    4

  3.     PPP Link Control Protocol Extensions ..................    5
     3.1.   LCP Configuration Options ..........................    5
        3.1.1.  Call Reference Number ..........................    6

  4.     The Protocol Spoofing Control Protocol ................    9
     4.1    Call Connection and Re-Connection ..................    10
     4.2    Call Termination / Suspension ......................    10
     4.3    Killing Off a Suspended Connection .................    11
     4.4.   Call Collision when Resuming a Connection ..........    12
     4.5.   Use with PPP Multilink .............................    12

  5.     PSCP Packet Formats ...................................    13
     5.1    Terminate Request ..................................    13

  6.     PSCP Configuration Options ............................    14
     6.1    Maximum Call Suspension Time .......................    15
     6.2    Spoofed Protocol Support ...........................    16
     6.3    Maximum Protocol Sessions ..........................    18
     6.4    Re-activation on Final Termination .................    19
     6.5    Call-Back Number ...................................    20
     6.6    Call-Back Name .....................................    22

  7.     PSCP Termination Options ..............................    23
     7.1    Call Termination Reason ............................    23

  APPENDIX 1: Switch-Over to a Low-Cost Secondary Channel ......    24

  SECURITY CONSIDERATIONS ......................................    25

  REFERENCES ...................................................    25

  ACKNOWLEDGEMENTS .............................................    25

  CHAIR'S ADDRESS ..............................................    26

  AUTHOR'S ADDRESS .............................................    26







Puleston                 expires in six months                 [Page ii]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


1.  Introduction

   With a transfer medium such as  ISDN,  calls  can  be  connected  and
   disconnected  very  quickly,  and this gives devices scope to bring a
   connection up and down as and when required, in order  to  keep  call
   charges  to  a  minimum.  A  call  can  be  dropped during periods of
   inactivity, and then automatically re-connected when data activity is
   resumed,  without  the  higher-layer  protocols  being  aware  of any
   change.   This  will  be  referred  to  here  as   "suspending"   the
   connection.

   Suspending a call in this way, however, gives rise to a problem  with
   protocols  which  generate intermittent protocol messages even when a
   connection is idle (for example Novell transfers regular "Keep Alive"
   messages  between  servers  and clients).  If the link were to be re-
   connected  in  order  to  transfer  every  protocol   message,   then
   unnecessary call charges would be incurred.

   This is a particular problem in the case of LAN  interconnection  via
   WAN  links,  such  as  ISDN.   The  protocols  running on the LAN are
   typically designed specifically for the LAN  where  the  topology  is
   fixed, and hence they assume that a connection across the LAN will be
   permanently physically connected throughout its duration.

   The problem is solved by monitoring  the  traffic  on  the  link  and
   recognising  individual  sessions  of the relevant protocols.  When a
   connection is suspended,  then  the  devices  at  the  two  ends  can
   themselves  generate  the  protocol  messages  locally  ("spoof"  the
   protocols) instead of re-connecting the  call  for  the  transfer  of
   protocol messages.

   In order for two independent devices at either end of a connection to
   carry  out  protocol spoofing, it is only necessary for them to agree
   on what they are spoofing, not on how they  actually  carry  out  the
   spoofing.   Once  the  connection is suspended each will take care of
   its end of the connection independently of the other.

   Protocol spoofing requires the exchange of  information  between  the
   two  ends  so  that  each knows what the other is doing.  At the very
   least, it is necessary for the two ends to know  that  a  terminating
   call   is   being   temporarily  suspended  rather  than  permanently
   disconnected, and to be able to  identify  a  new  call  as  being  a
   resumption of a particular suspended connection.

   This specification defines a PPP Network Control Protocol to  achieve
   this.






Puleston                 expires in six months                  [Page 1]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


2.  Overview of Protocol Spoofing

   Protocol Spoofing takes  place  when  the  communications  medium  is
   temporarily disconnected during periods of inactivity, and makes sure
   that the higher-layer protocols  are  unaware  of  the  lower  layers
   having  been  disconnected.   This  prevents  problems  such as login
   sessions being terminated, or remote resources disappearing.

   The spoofing of a protocol would typically involve the device at each
   end of the suspended link:

    1. Filtering out certain protocol messages from the local  hosts  so
       that these do not themselves cause the ISDN call to re-connect.

    2. Generating the protocol messages to fool  the  local  hosts  into
       believing that the remote hosts are still connected.


   Protocols requiring spoofing basically fall into two categories:

    1. Protocols using solicited  messages,  where  one  end  sends  out
       requests  to which the remote end should respond.  In these cases
       the local device must spoof  the  protocol  whilst  the  link  is
       suspended  by  generating  the response itself when it receives a
       request (as shown in the diagram below).

    2.  Protocols  involving  unsolicited  messages  (e.g.   advertising
       protocols,   where   one   end  sends  out  unsolicited  messages
       advertising its presence). In these cases the remote device  must
       spoof the protocol whilst the link is suspended by generating the
       messages itself at the relevant times.


   The following shows an example of how  a  typical  server-client  LAN
   protocol  may  regularly  send out a protocol message to check that a
   client is still connected using a request-response protocol:
















Puleston                 expires in six months                  [Page 2]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


       Server               Router              Router           Client
         |         LAN        |      PPP-Link      |      LAN       |
         |                    |                    |                |
         |   Are you there ?  |                    |                |
         |--------------------+--------------------+--------------->|
         |                    |                    |                |
         |     Here I am      |                    |                |
         |<-------------------+--------------------+----------------|
         |                    |                    |                |


   And the following  shows  how  the  first  router  would  spoof  this
   protocol whilst the PPP link is suspended:

       Server               Router              Router           Client
         |         LAN        |   Link Suspended   |      LAN       |
         |                    |                    |                |
         |   Are you there ?  |                    |                |
         |------------------->|                    |                |
         |                    |                    |                |
         |     Here I am      |                    |                |
         |<-------------------|                    |                |
         |                    |                    |                |


   Assuming that two devices each have the ability to carry out protocol
   spoofing,  then  the  basic requirement for their spoofing systems to
   inter-work is that whilst a connection is suspended:

    - if a session is alive and being spoofed at one end, then the other
      end should also, if relevant, be spoofing it,
    - one end should not keep spoofing a session  if  that  session  has
      been terminated at the other end.

   This means that the basic requirement for an  inter-working  protocol
   between  them  is that each knows exactly which protocol sessions are
   being spoofed by the other, and when the  spoofing  of  each  session
   will cease.

   Some examples of protocols which require  spoofing  when  connections
   are suspended are:

    - Novell IPX/SPX
    - Novell RIP/SAP
    - NetBIOS / NetBEUI
    - TCP implementations which use TCP "Keep Alives"[3]
    - OSI Transport Class 4
    - Ping over IP (there are some systems which  implement  a  form  of
      "keep alive" by regularly sending a "ping" to the remote end).



Puleston                 expires in six months                  [Page 3]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


   An additional complexity is that when certain protocols can be run in
   combination  with other protocols, then the ability to spoof them may
   depend on which they are used with (for example a  device  which  can
   spoof  NetBIOS  over  LLC1  may  not  be  able  to spoof NetBIOS over
   TCP/IP).


2.1.  Limiting Session Length

   A potential problem with the idea  of  suspending  connections  comes
   about  in  a  situation  where many users require access to a limited
   number of shared resources (such as the ISDN channels on a LAN access
   server).   If  one user leaves his connection suspended because it is
   costing him nothing in call charges, then he is  "hogging"  resources
   which others may require.

   Because of this it may be desirable  to  limit  the  time  for  which
   protocol spoofing can be maintained on a connection.

   An additional benefit is that if a device is, for example, turned-off
   whilst  it  has  a connection suspended, the remote end will time-out
   and abort the connection.


2.2.  Information Required for Protocol Spoofing

   Protocol spoofing requires exchange of information  between  the  two
   ends so that each knows what the other is doing.  Each end must know:

    1.  When  a  call  is  cleared-down  due  to  the  connection  being
       temporarily suspended rather than permanently disconnected.

    2. When a new call is a resumption of a  suspended  connection,  and
       which particular suspended connection is being resumed.

    3. The capabilities of the device at the other end (for example  the
       spoofing of some protocols may not be supported by both).

    4.  Any limits (such as  the  maximum  time  for  which  a  spoofing
       session  should  be  maintained)  which  must  be agreed with the
       device at the other end.

    5.  Call-back information, supplied by the calling party so that the
       called  party  can  call  back  in  order  to  resume a suspended
       connection. This can include the number to  call,  authentication
       information, etc.






Puleston                 expires in six months                  [Page 4]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


3.  PPP Link Control Protocol Extensions

   There are certain options of various Network Control Protocols which,
   when a suspended connection is re-connected, must be the same as they
   were in the initial  call  (one  example  could  be  the  IP  address
   negotiated  by IPCP).  Because of this, both ends must know whether a
   call is a re-connection, and if so, which call is being re-connected,
   before they start the NCP negotiations.

   This is achieved by associating a "Call Reference" number  with  each
   connection.   This  call  reference number will remain valid when the
   connection is suspended, and will be used to identify it when  it  is
   re-connected. The "Call Reference" number MUST be negotiated prior to
   the start of the NCP negotiations, and is therefore negotiated by the
   Link Control Protocol[1].


3.1.  LCP Configuration Options

   The Protocol Spoofing Control  Protocol  introduces  the  use  of  an
   additional LCP Configuration Option:


       <value to be defined>       Call Reference Number

   The value of this LCP Configuration Option will be specified  in  the
   "Assigned Numbers" RFC [5].

























Puleston                 expires in six months                  [Page 5]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


3.1.1.  Call Reference Number

   Description

   The Call Reference Number Configuration Option is used  to  negotiate
   unique  reference  numbers,  which  can  then be used to identify the
   connection if it is suspended.  Each end indicates a number which  it
   can  use  to identify the connection, and the numbers provided by the
   two ends do not need to be the same.  It will be used as follows when
   the Protocol Spoofing Control Protocol is to be used:

    - On a new connection, the calling end SHOULD include this option in
      its  Configure  Request with the value zero. The called end should
      then return a Configure Nak, putting in a non-zero value which  it
      can use to uniquely identify the connection.

    - The called end SHOULD NOT  include  this  option  in  its  initial
      Configure Request (since it does not at that point know whether it
      is a new connection or a re-connection).  On a new connection, the
      calling  end  SHOULD then return a Configure Nak, supplying a non-
      zero value which it can use to uniquely identify the connection.

    - On re-connection of a suspended connection, the calling end should
      include  this  option  in  its Configure Request with the non-zero
      value which was indicated by the remote end in the  initial  call.
      The  called  peer  will  use  this value to identify the suspended
      connection.

   Note that the calling end can then  tell  if  a  call  is  is  a  new
   connection  or a re-connection, since the value of this option in the
   caller's initial Configure Request is zero in the  former  case,  and
   non-zero in the latter.


   When a connection which  has  been  suspended  is  re-connected,  the
   calling end MAY return a Configure Nak, with the non-zero value which
   it itself indicated in the initial call, but  this  is  not  strictly
   necessary.

   The following diagrams illustrate how this option is used:












Puleston                 expires in six months                  [Page 6]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


                     1. Initial Setup of a New Connection
       End A                                                      End B
         |                                                          |
         |        Call  Sent                                        |
         |--------------------------------------------------------->|
         |                                                          |
         |                      Call Acknowledged                   |
         |<---------------------------------------------------------|
         |                                                          |
         |                      Configure Req: No call Ref option   |
         |<---------------------------------------------------------|
         |                                                          |
         |        Configure Req: Call Ref. =3D 0                      |
         |--------------------------------------------------------->|
         |                                                          |
         |        Configure Nak: Call Ref. =3D A's ref.               |
         |--------------------------------------------------------->|
         |                                                          |
         |                      Configure Nak: Call Ref. =3D B's ref. |
         |<---------------------------------------------------------|
         |                                                          |
         |                      Configure Req: Call Ref. =3D A's ref. |
         |<---------------------------------------------------------|
         |                                                          |
         |        Configure Req: Call Ref. =3D B's ref.               |
         |--------------------------------------------------------->|
         |                                                          |



                  2. Re-Connection of a Suspended Connection
       End A                                                      End B
         |                                                          |
         |        Call  Sent                                        |
         |--------------------------------------------------------->|
         |                                                          |
         |                      Call Acknowledged                   |
         |<---------------------------------------------------------|
         |                                                          |
         |                      Configure Req: No call Ref option   |
         |<---------------------------------------------------------|
         |                                                          |
         |        Configure Req: Call Ref. =3D B's ref.               |
         |--------------------------------------------------------->|
         |                                                          |


   In summary, a Configure Request contains the reference  number  which
   is  meaningful  to  the  remote  end,  and a Configure Nak is used to
   inform the other end of this in the first place. A Configure  Request


Puleston                 expires in six months                  [Page 7]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


   with the value zero in this option is  used  to  request  the  remote
   end's reference number, and indicates a new connection.

   If a Configure-Request is received with  the  Call  Reference  Number
   option  indicating  a re-connection of a suspended connection, but no
   suspended connection exists with the  given  Call  Reference  Number,
   then the call SHOULD be terminated.

   A call reference value MUST be negotiated by  this  option  for  both
   ends  of  the call if the Protocol Spoofing Control Protocol is to be
   used.

   Note that if authentication (e.g. PAP/CHAP)  is  used,  then  on  re-
   connection  of  a  suspended  connection, the called end SHOULD check
   that the authentication user ID is the same as in the original  call.
   If  it  is  not  the  same,  then  it  should  terminate the call. An
   implementation MAY  also  choose  to  similarly  check  the  Endpoint
   Discriminator when this is used.

   A summary of the Call Reference Number Option format is shown  below.
   The fields are transmitted from left to right.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |        Reference Number       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type

      2

   Length

      4


   Reference Number

      This specifies the call reference number to be used.












Puleston                 expires in six months                  [Page 8]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


4.  The Protocol Spoofing Control Protocol

   The Protocol Spoofing Control  Protocol  (PSCP)  is  responsible  for
   enabling  the  two  ends of the point-to-point link to negotiate what
   can be spoofed, and any limits to be imposed.  It is also responsible
   for  enabling  the  two  ends to agree that a PPP connection is to be
   suspended, and for controlling resumption of a suspended connection.

   PSCP uses the same packet exchange  mechanism  as  the  Link  Control
   Protocol [1]. PSCP packets may not be exchanged until PPP has reached
   the Network-Layer Protocol phase.  PSCP packets received before  this
   phase is reached SHOULD be silently discarded.

   PSCP  may  only  be  started  if  call  reference  values  have  been
   negotiated for both ends of the connection by LCP.

   The Protocol Spoofing Control Protocol is exactly  the  same  as  the
   Link Control Protocol with the following exceptions:

   Data Link Layer Protocol Field

      Exactly one PSCP packet is encapsulated  in  the  PPP  Information
      field, where the PPP Protocol field indicates PSCP (the value will
      be specified in the "Assigned Numbers" RFC [5]).

   Code field

      Only  Codes  1  through   7   (Configure-Request,   Configure-Ack,
      Configure-Nak,  Configure-Reject, Terminate-Request, Terminate-Ack
      and Code-Reject) are used.   Other  Codes  SHOULD  be  treated  as
      unrecognized and SHOULD result in Code-Rejects.

   Timeouts

      PSCP packets may not  be  exchanged  until  PPP  has  reached  the
      Network-Layer   Protocol   phase.   An  implementation  SHOULD  be
      prepared to wait for Authentication and Link Quality Determination
      to  finish  before timing out waiting for a Configure-Ack or other
      response.  It is suggested that an implementation should  give  up
      only after user intervention or a configurable amount of time.

   Packet Formats

      The Terminate-Request and  Terminate-Ack  messages  used  by  PSCP
      include parameters for controlling the suspension of a connection.

   Configuration Option Types

      PSCP has a  distinct  set  of  Configuration  Options,  which  are
      defined in this document.


Puleston                 expires in six months                  [Page 9]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


   A PSCP Configuration Request can be sent by either end  at  any  time
   during   the   life  of  the  call,  in  order  to  re-negotiate  the
   configuration options. In particular, as new  protocol  sessions  are
   established,  an  implementation  may with to re-negotiate the set of
   protocols whose spoofing is supported,



4.1.  Call Connection and Re-Connection

   The Link  Control  Protocol's  Call  Reference  Number  configuration
   option enables a device receiving an incoming call to know whether it
   is a new connection, or a resumption of a suspended  connection,  and
   to  be  able to identify the suspended connection in the latter case.
   Other parameters required for protocol  spoofing  are  negotiated  by
   PSCP  configuration  messages  when  the  call  is  connected  or re-
   connected.

   It SHOULD NOT be assumed that a suspended connection will necessarily
   be  re-connected  on  the same link when multiple links are available
   (e.g.  ISDN B-channels).

   Re-connection of a suspended connection MAY be  initiated  by  either
   end, although some implementations may only allow the original caller
   to do this.


4.2.  Call Termination / Suspension

   The PSCP Terminate-Request message includes  a  parameter  indicating
   the reason for call disconnection as one of:

       - final call termination.
       - temporary suspension of the call.

   Call suspension can be initiated by either end.  The length  of  time
   for  which  a connection has to be idle before it is suspended is not
   negotiated by PSCP, and hence the two ends  could  be  configured  to
   suspend  the connection at a different time. An implementation should
   allow for the remote end possibly suspending  the  connection  before
   its own idle timer has expired.

   If a device which has sent  a  Terminate-Request  message  indicating
   temporary  suspension  of  a  connection receives a Terminate-Request
   message indicating final call termination, or  vice-versa,  then  the
   latter  SHOULD  override  the  former,  and  the connection SHOULD be
   terminated rather than suspended.





Puleston                 expires in six months                 [Page 10]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


   A  PPP  device  should  only  initiate  temporary  suspension  of   a
   connection if:
    - PPP has reached the Network-Layer phase and PSCP has  reached  the
      Opened state,
    - and there are no sessions running over the  link  using  protocols
      whose spoofing has been negotiated off.

   The devices should then only enter the spoofing state if a Terminate-
   Request   has  been  sent  indicating  temporary  suspension  of  the
   connection, and a Terminate-Ack has been sent in reply to this.

   If a connection is left suspended for more than  the  agreed  maximum
   time,  then  spoofing  should  be  stopped  and,  where relevant, any
   protocol sessions terminated locally. If the "Re-activation on  Final
   Termination"  option  has  been  negotiated  on,  then the connection
   should be re-activated to inform  the  remote  end  accordingly  (see
   below).


4.3.  Killing Off a Suspended Connection

   If a connection is currently in the suspended state when it is to  be
   finally terminated, then three methods can be used:

    1. Re-connect the connection in order to inform the remote end  that
       we are terminating it.

    2. Just terminate  the  connection  locally  without  informing  the
       remote end.

    3. Terminate the connection locally  without  immediately  informing
       the  remote end and then, when a subsequent connection is made to
       the  same  destination,  "piggy-back"  an  indication  that   the
       previous connection has been terminated.

   In the first case extra call charges will be  incurred,  but  in  the
   second  case the remote end will be left thinking that there is still
   a logical connection - hence possibly  preventing  other  calls  from
   being  accepted  until  the configured timeout has expired. The third
   case is a compromise between the two, but could work well in  certain
   situations.

   Some equipment may implement a method for getting round  the  problem
   of  connections  being  left logically connected after the caller has
   finished (e.g.  by having enough "spare" resources that it  does  not
   matter,  or by disconnecting the oldest suspended connection if a new
   call arrives) and hence may be willing to allow suspended connections
   to be terminated in this way.  Other equipment may not do so.

   Whether to re-activate a suspended connection in order  to  terminate


Puleston                 expires in six months                 [Page 11]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


   it will be a PSCP configuration  option.   If  either  end  tries  to
   negotiate  it  to ON, then the other end SHOULD accept this and agree
   to do it.


4.4.  Call Collision when Resuming a Connection

   Under certain circumstances, there could be a possibility  that  both
   ends might decide that a suspended connection is to be resumed at the
   same time. This could result in calls being issued in both directions
   for the same connection (i.e. "call collision").

   An implementation should record which end issued the most recent call
   for  each  current  connection.  If it then receives an incoming call
   which indicates the Call Reference number of a  connection  which  is
   not  currently  suspended, and it itself issued the last call on that
   connection, then this must be a call collision situation.

   The call collision situation is resolved by the  use  of  the  "Magic
   Number"  configuration  option  negotiated  by  LCP.  A  device which
   detects such a call collision MUST terminate LCP on  the  call  which
   was issued by the end with the smaller magic number.


4.5.  Use with PPP Multilink

   If used with a PPP Multilink call[4], then PSCP  negotiations  should
   take  place  when the Multilink "Bundle" is established or terminated
   (although, as with other NCPs, they can actually take place either on
   the  Bundle,  or  on  member links). There is no need to perform PSCP
   negotiations when a link is added to, or removed from, the bundle.

   Note that  when  Multilink  is  used,  LCP  negotiations  take  place
   separately on each link within a Multilink bundle, and hence the Call
   Reference number will be negotiated separately on  individual  member
   links.   When adding a link to an established Multilink bundle, there
   is no requirement for LCP to specify a Call Reference number  on  the
   new link, so long as the bundle is not at that time suspended.

   When a Multilink call is being resumed, if two or more links  are  to
   be initially established concurrently, then the Call Reference number
   SHOULD be indicated on each, since it cannot be  assumed  which  will
   complete  first.   An  implementation SHOULD therefore be prepared to
   recieve an incoming call which indicates the Call Reference number of
   a  Multilink  connection  which is not currently suspended if the new
   call is to be a member link of the bundle.

   Where the Call Reference number is indicated on more  than  one  link
   within  a  Multilink  bundle,  an implementation MUST ensure that the
   same Call Reference value is indicated on each link.


Puleston                 expires in six months                 [Page 12]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


5.  PSCP Packet Formats

   Packets used by PSCP are formatted exactly the same as the  those  of
   the Link Control Protocol [1].  In the case of the Terminate Request,
   however, the Data field is defined as containing Termination Options,
   as follows.


5.1  Terminate Request

   A summary of the Terminate-Request packet format is shown below.  The
   fields are transmitted from left to right.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Options ...
   +-+-+-+-+


   Code

      1 for Terminate-Request.

   Identifier

      As per the Link Control Protocol[1].

   Options

      The options field is variable in length, and contains the list  of
      zero  or  more  Termination  Options.   The  format of Termination
      Options is further described in a later chapter.

















Puleston                 expires in six months                 [Page 13]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.  PSCP Configuration Options

   PSCP  Configuration  Options  allow  the  spoofing  details   to   be
   negotiated.    If  a  Configuration  Option  is  not  included  in  a
   Configure-Request packet, the default value  for  that  Configuration
   Option is assumed.

   PSCP uses the same Configuration Option format defined for  LCP  [1],
   with a separate set of Options.

   Up-to-date values of the PSCP Option Type field will be specified  in
   the  most  recent  "Assigned  Numbers"  RFC  [5].  Current values are
   assigned as follows:


         1       Maximum Call Suspension Time
         2       Spoofed Protocol Support
         3       Maximum Protocol Sessions
         4       Re-activation on Final Termination
         5       Call-back Number
         6       Call-back Name































Puleston                 expires in six months                 [Page 14]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.1.  Maximum Call Suspension Time

   Description

   The Maximum Call Suspension Time  Configuration  Option  is  used  to
   negotiate  a  limit  on  how  long  a  connection  can be left in the
   suspended state.

   This value MAY be negotiated downwards, but MUST  NOT  be  negotiated
   upwards.

   If this option is not present then the default is that  a  connection
   can be left in the suspended state indefinitely.

   If a connection is left suspended for more than  the  agreed  maximum
   time, then it should be terminated as described previously.

   A summary of the Maximum Call Suspension Time Option format is  shown
   below.  The fields are transmitted from left to right.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |           Time Limit          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      1

   Length

      4

   Time Limit

      This value specifies the maximum time for which a  connection  can
      be  left in the suspended state, in minutes.  The value zero means
      that there is no limit.












Puleston                 expires in six months                 [Page 15]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.2.  Spoofed Protocol Support

   Description

   The Spoofed Protocol Support Configuration Option is used to indicate
   the set of protocols whose spoofing is supported.

   This option MUST be present in a Configure-Request.

   Each device should send a list of the protocols which it supports  in
   its Configure-Request, and the recipient should then use a Configure-
   Nak to remove any protocols which it does not  support.   Hence  both
   ends should arrive at a list of protocols whose spoofing is supported
   by both.

   A summary of the Spoofed Protocol  Support  Option  format  is  shown
   below.  The fields are transmitted from left to right.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     | Protocols ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      2

   Length

      >=3D 3




















Puleston                 expires in six months                 [Page 16]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


      Protocols

      This field contains a list of protocol values, each  8-bits  wide,
      indicating  the  protocols whose spoofing is supported.  Currently
      assigned values are as follows:

            0       Novell NCP (the IPX Netware Core Protocol)
            1       Novell SPX
            2       Novell RIP/SAP
            3       NetBEUI (NetBIOS over LLC2)[8]
            4       NetBIOS over TCP/IP[7]
            5       TCP Keep Alives [3]
            6       OSI Transport Class 4 over Null Network Layer
            7       LLC2
            8       SMB Echo Requests
            9       Microsoft NetBIOS over IPX
            10      Novell NetBIOS over IPX
            11      Spanning Tree BPDUs
            12      Ping over IP

































Puleston                 expires in six months                 [Page 17]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.3.  Maximum Protocol Sessions

   Description

   The Maximum Protocol Sessions Configuration Option is to negotiate  a
   limit  on  the  number  of protocol sessions of any type which can be
   spoofed at any time.

   This value MAY be negotiated downwards, but MUST  NOT  be  negotiated
   upwards.

   If this option is  not  present  then  the  default  is  that  it  an
   unlimited number of protocol sessions can be spoofed.

   How a device uses this limit is implementation-specific.

   A summary of the Maximum Protocol Sessions  Option  format  is  shown
   below.  The fields are transmitted from left to right.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |            Limit              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      3

   Length

      4

   Limit

      This value specifies the limit on the number of protocol  sessions
      which can be spoofed at any time.  The value zero means that there
      is no limit.













Puleston                 expires in six months                 [Page 18]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.4.  Re-activation on Final Termination

   Description

   The Re-activation on Final Termination  Configuration  Option  is  to
   negotiate  whether  to  re-activate  connections  in order to finally
   terminate a connection which is to be terminated whilst suspended, as
   described previously.

   If either end tries to negotiate this option to enable  re-activation
   of  connections  for  this  purpose, then the other end SHOULD accept
   this and agree to do it.

   If this option  is  not  present  then  the  default  value  is  that
   connections   should  be  re-activated  if  a  connection  is  to  be
   terminated whilst suspended.

   A summary of the Re-activation on Final Termination Option format  is
   shown below.  The fields are transmitted from left to right.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |    Enable     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      4

   Length

      3

   Enable

      If the value is 1 then connections should  be  re-activated  if  a
      connection is to be terminated whilst suspended. If the value is 0
      then they should not.












Puleston                 expires in six months                 [Page 19]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.5.  Call-Back Number

   Description

   The Call-Back Number Configuration Option  is  used  by  the  calling
   party to inform the called party of the number to use to call back in
   order to resume a suspended connection.

   This option can  appear  more  than  once  in  a  PSCP  Configuration
   Request,  hence  allowing a set of call back numbers to be specified.
   Where there is more than one number, the recipient SHOULD  use  these
   in the order given when attempting to call back.

   This option also provides  for  the  numbers  not  necessarily  being
   limited  to  the same medium that was used for the original call (for
   example, a caller could give an ISDN number as the primary  call-back
   number, but also supply a telephone number to use in case the ISDN is
   busy).

   A summary of the Call-Back Number Option format is shown below.  Note
   that  this option is very similar to the LCP "Endpoint Discriminator"
   option (as defined for Multilink PPP[4]) but has an additional  Call-
   Type field.  The fields are transmitted from left to right.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |    Class      |   Call-Type   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Address ...
   +-+-+-+-+-+-+-+-+


   Type

      5

   Length

      4 + length of Address

   Class

      The Class field is one octet and indicates the type of number. The
      value  is  as  per  the  Class in the LCP "Endpoint Discriminator"
      option.






Puleston                 expires in six months                 [Page 20]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


   Call-Type

      The Call-Type field is one octet and indicates the type of call to
      make  for  a  call-back  using  this  number.  Note  that  this is
      different to the Class since, for example, the E.164 number  class
      could  be  either an ISDN or telephone number. The most up-to-date
      values of the PSCP Call-Back Number Type field will  be  specified
      in the most recent "Assigned Numbers" RFC [5].  Current values are
      assigned as follows:

        0   No type specified (type is inherent in the Class)

        1   Telephone call

        2   ISDN call

   Address

      The Address field is one or more octets and  indicates  the  call-
      back  address  within  the selected class. The value is as per the
      Address field in the LCP "Endpoint Discriminator" option.































Puleston                 expires in six months                 [Page 21]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


6.6.  Call-Back Name

   Description

   The Call-Back Name Configuration Option is used by the calling  party
   to inform the called party of the name to use for authentication when
   it makes a call back in order to resume a suspended connection.

   This option MAY be omitted in circumstances where the  calling  party
   knows   the  name  of  the  called  party  (for  example,  with  CHAP
   authentication[6] the called party has  a  "system  name"  which  was
   quoted in its original CHAP challenge). If this option is not present
   then the called party MUST use the same name  which  it  used  during
   authentication of the original call.

   Note that for security reasons the password, or CHAP secret,  is  not
   communicated.    It   is   therefore  a  requirement  that  the  same
   password/secret that was used for the original  call  is  used  in  a
   call-back.  This  may  have configuration implications at the calling
   end.

   A summary of the Call-Back Name Option format  is  shown  below.  The
   fields are transmitted from left to right.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |    Name ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      7

   Length

      2 + length of Name

   Name

      The Name field is one or more octets and indicates the name to use
      for authentication in a call-back.









Puleston                 expires in six months                 [Page 22]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


7.  PSCP Termination Options

   PSCP Termination Options allow information pertaining to a call being
   closed to be indicated in a Terminate-Request packet.

   The  Termination  Options  are  coded  in  the  same   way   as   the
   Configuration  Options  in a Configure-Request packet, as defined for
   LCP [1].

   Up-to-date values of the PSCP Termination Option Type field  will  be
   specified  in  the  most  recent "Assigned Numbers" RFC [5].  Current
   values are assigned as follows:


         1       Call Termination Reason


7.1. Call Termination Reason

   Description

   The Call Termination Reason Termination Option is used in a Terminate
   Request to indicate the reason for the call being dropped.

   If this option is not present then the  default  value  is  that  the
   connection is to be finally terminated.

   A summary of the Call  Termination  Reason  Option  format  is  shown
   below.  The fields are transmitted from left to right.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |    Reason     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Type

      1

   Length

      3

   Reason

      If the value is 0 the connection is to be finally terminated,  and
      if the value is 1 the connection is to be suspended.



Puleston                 expires in six months                 [Page 23]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


                                  APPENDIX 1

                 Switch-Over to a Low-Cost Secondary Channel

   An alternative to protocol spoofing is to switch over to using a low-
   cost  low-bandwidth  secondary  channel,  if one is available, when a
   connection is idle.  An example of this is the ISDN D-channel.

   The  ability  to  switch  smoothly  between  PPP   channels   without
   disruption  of  data  flow  can  be  achieved using the PPP Multilink
   procedure[4], as follows:

      The connection is initially established on one or more links using
      the  PPP  Multilink  procedure.  PSCP  is  then  negotiated on the
      Multilink "Bundle", agreeing that "switch-over" is required rather
      than "spoofing".

      When a peer decides to initiate "switch-over" it  should  use  the
      PPP  Multilink  procedure  to  establish  a  call  on the low-cost
      secondary channel, and should  make  this  a  member-link  of  the
      Multilink  group.   When  this  link has reached the Network-Layer
      phase, then it should initiate termination  of  all  other  member
      links  of the Multilink group (the primary channel(s)).  Note that
      in this case no PSCP Terminate-Request is required.

   The same procedure is used to switch back to the  primary  channel(s)
   if the traffic on the link increases.

   The use of this switch-over method could possibly  be  negotiated  in
   the  PSCP Configuration-Request options, or could be the subject of a
   separate Network Control Protocol. This is for further study.

   Configuring for this method will only be allowed if PPP Multilink has
   been  established. If an attempt is made to enable it in a Configure-
   Request on a non-Multilink  call,  then  a  Configure-Nak  should  be
   returned.

   If an implementation is not able  to  operate  a  low-cost  secondary
   channel  (e.g.  an  ISDN device with no D-channel capability) then it
   should Configure-Nak this option.












Puleston                 expires in six months                 [Page 24]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


Security Considerations

   Security issues are not discussed in this memo.


References


   [1]   Simpson, W., Editor, "The Point-to-Point Protocol  (PPP)",  STD
         51, RFC 1661, Daydreamer, July 1994.

   [2]   Simpson, W., Editor, "PPP over ISDN", RFC 1618, Daydreamer, May
         1994.

   [3]   "Requirements for Internet hosts - communication layers ",  RFC
         1122, October 1989.

   [4]   Sklower, K., "The  PPP  Multilink  Protocol  (MP)",  RFC  1717,
         November 1994.

   [5]   Reynolds, J., and J. Postel, "Assigned  Numbers",  STD  2,  RFC
         1340, USC/Information Sciences Institute, July 1992.

   [6]   Lloyd, B. / Simpson, W., "PPP  Authentication  Protocols",  RFC
         1334, October 1992.

   [7]    "Protocol  standard  for  a  NetBIOS  service  on  a   TCP/UDP
         transport:  Detailed specifications ", RFC 1002, March 1987.

   [8]   "Local Area Network Technical Reference",  IBM  document  SC30-
         3383-03


Acknowledgments

   Thanks go to Sam Lau and Robert Bell of Global Village  Communication
   (UK)  Ltd.  for information on protocol spoofing used to compile this
   document, to Anthony Discolo and  his  colleagues  at  Microsoft  for
   their  comments,  which have been incorporated into the document, and
   to Jim Phillippo of Xyplex for some additional information.












Puleston                 expires in six months                 [Page 25]


=0C

DRAFT        PPP Protocol Spoofing Control Protocol        February 1996


Chair's Address

   The working group can be contacted via the current chair:

      Fred Baker
      Senior Software Engineer
      Cisco Systems
      519 Lado Drive
      Santa Barbara, California 93111

      Phone: (408) 526-4257
      EMail: fred@cisco.com


Author's Address

   Questions about this memo can also be directed to:

      Ian David Puleston
      Global Village Communication (UK) Ltd.
      Tempest Court
      Broughton Hall
      Skipton,  North Yorkshire,  BD23 3AE
      England
      Tel:  +44 (0) 1756 702500
      Fax:  +44 (0) 1756 797866

      EMail: ian_puleston@globalvillage.co.uk
         or: ianp@knx.co.uk























Puleston                 expires in six months                 [Page 26]