RFC 5191

Protocol for Carrying Authentication for Network Access (PANA)

๐Ÿ“… published May 2008, from ietf

RFC 5191 ๐Ÿ’– Protocol for Carrying Authentication for Network Access (PANA) ๐ŸŽ€

Okay bestie, here's the vibe check ๐Ÿงš. It's a Standards Track doc, so it's the real deal, not an experiment. The authors are D. Forsberg (Nokia), Y. Ohba (Ed.) (Toshiba), B. Patil, H. Tschofenig (Nokia Siemens Networks), and A. Yegin (Samsung). It came out in May 2008 and is from the Network Working Group ๐ŸŒธ. The copy I was given doesn't list anything it obsoletes or updates, so I'm not going to guess ๐Ÿ™ˆ.


Status of This Memo โœจ

This document is a standards track protocol spec for the Internet community ๐Ÿฆ‹. It's asking for discussion and suggestions to make it better ๐Ÿ’ฌ. If you want the official standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐Ÿ“š. Distribution of this memo is unlimited ๐ŸŒˆ.

Abstract ๐Ÿ’œ

Okay so this doc defines PANA (the Protocol for Carrying Authentication for Network Access) ๐Ÿ”ฅ. It's a network-layer transport for EAP (Extensible Authentication Protocol) ๐Ÿซถ, and its whole job is enabling network access authentication between clients and access networks ๐ŸŒ. In EAP terms, PANA is a UDP-based EAP lower layer that sits between the EAP peer and the EAP authenticator ๐Ÿ’…. That's giving layered and iconic ๐Ÿ‘‘.

Table of Contents ๐Ÿ“–

   1. Introduction ....................................................3
      1.1. Specification of Requirements ..............................4
   2. Terminology .....................................................4
   3. Protocol Overview ...............................................6
   4. Protocol Details ................................................7
      4.1. Authentication and Authorization Phase .....................7
      4.2. Access Phase ..............................................11
      4.3. Re-Authentication Phase ...................................11
      4.4. Termination Phase .........................................13
   5. Processing Rules ...............................................13
      5.1. Fragmentation .............................................13
      5.2. Sequence Number and Retransmission ........................14
      5.3. PANA Security Association .................................15
      5.4. Message Authentication ....................................17
      5.5. Message Validity Check ....................................17
      5.6. PaC Updating Its IP Address ...............................19
      5.7. Session Lifetime ..........................................19
   6. Message Format .................................................20
      6.1. IP and UDP Headers ........................................20
      6.2. PANA Message Header .......................................20
      6.3. AVP Format ................................................22
   7. PANA Messages ..................................................24
      7.1. PANA-Client-Initiation (PCI) ..............................27
      7.2. PANA-Auth-Request (PAR) ...................................28
      7.3. PANA-Auth-Answer (PAN) ....................................28
      7.4. PANA-Termination-Request (PTR) ............................28
      7.5. PANA-Termination-Answer (PTA) .............................29
      7.6. PANA-Notification-Request (PNR) ...........................29
      7.7. PANA-Notification-Answer (PNA) ............................29
   8. AVPs in PANA ...................................................29
      8.1. AUTH AVP ..................................................30
      8.2. EAP-Payload AVP ...........................................30
      8.3. Integrity-Algorithm AVP ...................................31
      8.4. Key-Id AVP ................................................31
      8.5. Nonce AVP .................................................31
      8.6. PRF-Algorithm AVP .........................................32
      8.7. Result-Code AVP ...........................................32
      8.8. Session-Lifetime AVP ......................................32
      8.9. Termination-Cause AVP .....................................33
   9. Retransmission Timers ..........................................33
      9.1. Transmission and Retransmission Parameters ................35
   10. IANA Considerations ...........................................35
      10.1. PANA UDP Port Number .....................................36
      10.2. PANA Message Header ......................................36
           10.2.1. Message Type ......................................36
           10.2.2. Flags .............................................36

      10.3. AVP Header ...............................................36
           10.3.1. AVP Code ..........................................37
           10.3.2. Flags .............................................37
      10.4. AVP Values ...............................................37
           10.4.1. Result-Code AVP Values ............................37
           10.4.2. Termination-Cause AVP Values ......................38
   11. Security Considerations .......................................38
      11.1. General Security Measures ................................38
      11.2. Initial Exchange .........................................40
      11.3. EAP Methods ..............................................40
      11.4. Cryptographic Keys .......................................40
      11.5. Per-Packet Ciphering .....................................41
      11.6. PAA-to-EP Communication ..................................41
      11.7. Liveness Test ............................................41
      11.8. Early Termination of a Session ...........................42
   12. Acknowledgments ...............................................42
   13. References ....................................................42
      13.1. Normative References .....................................42
      13.2. Informative References ...................................43

1. Introduction ๐ŸŽ€

Providing secure network access takes access control based on authenticating and authorizing both the clients and the access networks ๐Ÿ”. Client-to-network authentication hands over the parameters needed to police traffic flow through the enforcement points ๐Ÿšฆ. So we need a protocol to carry authentication methods between the client and the access network, and that's the gap this doc fills ๐Ÿซถ.

The scope here is designing a network-layer transport for network access authentication methods ๐Ÿงš. EAP [RFC3748] already provides those methods โœจ. In other words, PANA carries EAP, and EAP can carry various authentication methods ๐Ÿ’…. Since EAP is transported above IP, any authentication method that can be carried as an EAP method becomes available to PANA, and therefore to any link-layer technology ๐ŸŒˆ. The division of labor is clear: PANA is an EAP lower layer, and EAP and EAP methods do their own thing, as [RFC3748] describes ๐Ÿ‘‘.

Various environments and usage models for PANA are listed in Appendix A of [RFC4058] ๐ŸŒธ. Potential security threats for network-layer access authentication protocols are discussed in [RFC4016] ๐Ÿ’€. Those were essential in defining the requirements of the PANA protocol [RFC4058] ๐Ÿ”ฅ. Also, bestie, note that some of these requirements are imposed by the chosen payload, EAP [RFC3748] ๐Ÿ™ˆ.

There are components that are part of a complete secure network access solution but sit outside the PANA protocol spec โœจ. These include PANA Authentication Agent (PAA) discovery, authentication method choice, the PANA Authentication Agent-Enforcement Point (PAA-EP) protocol, access control filter creation, and data traffic protection ๐Ÿฆ‹. They're covered in separate documents (see [RFC5193] and [RFC5192]) ๐Ÿ“š.

1.1. Specification of Requirements ๐Ÿ’–

In this document, several words signify the requirements of the specification ๐Ÿ“. They're often capitalized, and honestly that's the whole point ๐Ÿ’…. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] ๐Ÿซถ.

Keep reading, more parts are coming ๐ŸŒธโœจ

2. Terminology ๐ŸŽ€

okay bestie, let's get the vocab down first because these terms are EVERYWHERE in this doc ๐Ÿ’…

PANA Client (PaC): The client side of the protocol, living in the access device (think laptop, PDA, etc. ๐Ÿ’ป). Its whole job is handing over credentials to prove who it is (that's the authentication part) so it can get its network access authorized. The PaC and the EAP peer are colocated in the same access device.

PANA Authentication Agent (PAA): The protocol entity sitting in the access network. It checks the credentials the PaC gives it and authorizes network access for the access device. The PAA and the EAP authenticator (and optionally the EAP server) are colocated in the same node. Also, note that according to the EAP model, the authentication and authorization procedure can be offloaded to the back end Authentication, Authorization, and Accounting (AAA) infrastructure. ๐Ÿงš

PANA Session: A PANA session is established between the PaC and the PAA, and it ends when any of these happen: an authentication and authorization or liveness test failure, a message delivery failure after retransmissions hit their maximum values, session lifetime expiration, an explicit termination message, or any event that discontinues the access service. A fixed session identifier is kept for the whole session. A session cannot be shared across multiple network interfaces. ๐Ÿฆ‹

Session Lifetime: A duration associated with a PANA session. For an established PANA session, the session lifetime is bound to the lifetime of the current authorization given to the PaC. The session lifetime can be extended by a new round of EAP authentication before it expires. Until a PANA session is established, the lifetime SHOULD be set to a value that allows the PaC to detect a failed session in a reasonable amount of time. โณ

Session Identifier: This identifier uniquely identifies a PANA session on the PaC and the PAA. It's included in PANA messages to bind the message to a specific PANA session. It's bidirectional, allocated by the PAA in the initial request message, and freed when the session terminates. The session identifier is assigned by the PAA and is unique within the PAA. ๐Ÿ”‘

PANA Security Association (PANA SA): A PANA security association is formed between the PaC and the PAA by sharing cryptographic keying material and associated context. The resulting duplex security association protects the bidirectional PANA signaling traffic between the PaC and the PAA. ๐Ÿ”

Enforcement Point (EP): A node on the access network where per-packet enforcement policies (i.e., filters) are applied on the inbound and outbound traffic of access devices. The EP and the PAA may be colocated. EPs should prevent data traffic from and to any unauthorized client, unless that traffic is either PANA or one of the other allowed traffic types (e.g., Address Resolution Protocol (ARP), IPv6 neighbor discovery, DHCP, etc.). ๐Ÿšง

Master Session Key (MSK): A key derived by the EAP peer and the EAP server and transported to the EAP authenticator [RFC3748]. ๐Ÿ—๏ธ

For additional terminology definitions, see the PANA framework document [RFC5193]. ๐Ÿ“š


3. Protocol Overview โœจ

The PANA protocol runs between a client (PaC) and a server (PAA) in order to perform authentication and authorization for the network access service. ๐Ÿค

The protocol messaging is a series of requests and answers, and some of them may be initiated by either end. Each message can carry zero or more AVPs (Attribute-Value Pairs) in the payload. The main payload of PANA is EAP, which does the authentication. PANA helps the PaC and the PAA establish an EAP session. ๐Ÿ’Œ

PANA is a UDP-based protocol. It has its own retransmission mechanism to reliably deliver messages. ๐Ÿ“ฆ

PANA messages are sent between the PaC and the PAA as part of a PANA session. A PANA session has distinct phases:

  • Authentication and authorization phase: This is the phase that starts a new PANA session and runs EAP between the PAA and the PaC. Either the PaC or the PAA can initiate the PANA session. The EAP payload (which carries an EAP method inside) is what does the authentication. The PAA tells the PaC the result of authentication and authorization at the end of this phase. ๐Ÿชช
  • Access phase: After successful authentication and authorization, the access device gets access to the network and can send and receive IP traffic through the EP(s). At any time during this phase, the PaC and the PAA may optionally send PANA notification messages to test the liveness of the PANA session on the peer. ๐ŸŒ
  • Re-authentication phase: During the access phase, the PAA may, and the PaC should, start re-authentication if they want to update the PANA session lifetime before it expires. EAP is carried by PANA to perform re-authentication. This phase may optionally be triggered by both the PaC and the PAA, regardless of the session lifetime. The re-authentication phase is a sub-phase of the access phase. The session moves into this sub-phase from the access phase when re-authentication starts, and it returns to the access phase upon successful re-authentication. ๐Ÿ”„
  • Termination phase: The PaC or the PAA may choose to discontinue the access service at any time. An explicit disconnect message can be sent by either end. If either the PaC or the PAA disconnects without going through termination messaging, the expiration of a finite session lifetime or failed liveness tests is expected to clean up the session at the other end. ๐Ÿ‘‹

Cryptographic protection of messages between the PaC and the PAA is possible as soon as EAP, together with the EAP method, exports a shared key. That shared key is used to create a PANA SA. The PANA SA helps generate per-message authentication codes that provide integrity protection and authentication. ๐Ÿ›ก๏ธ


4. Protocol Details ๐ŸŒธ

The following sections explain in detail the various phases of a PANA session. ๐Ÿ”

4.1. Authentication and Authorization Phase ๐Ÿ”โœจ

okay bestie, this phase is the main event ๐Ÿ’… Its whole job is to set up a PANA session and carry EAP messages between the PaC and the PAA. Either side can start the session, and it's giving teamwork ๐Ÿซถ

PaC-initiated Session:

When the PaC starts things, it sends a PANA-Client-Initiation message to the PAA. If the PaC doesn't have the PAA's IP address configured before it starts, DHCP [RFC5192] is the default way to dynamically configure that address ๐Ÿงš Other ways of discovering the PAA's IP address can be used for PaC-initiated sessions too, but they're outside the scope of this spec ๐Ÿ™ˆ The PAA that receives the PANA-Client-Initiation MUST respond to the PaC with a PANA-Auth-Request message.

PAA-initiated Session:

When the PAA knows the PaC's IP address, it MAY send an unsolicited PANA-Auth-Request to the PaC ๐Ÿฆ‹ How the PAA learns that address is outside the scope of this spec.

The PAA assigns a session identifier, and it's carried in the initial PANA-Auth-Request message. That same session identifier MUST be carried in every message exchanged between the PAA and the PaC for the rest of the session ๐Ÿ’œ

When the PaC gets the initial PANA-Auth-Request from a PAA, it replies with a PANA-Auth-Answer if it wants to keep going. If not, it silently discards the PANA-Auth-Request. Simple, but lowkey iconic ๐Ÿ‘‘

The initial PANA-Auth-Request and PANA-Auth-Answer messages MUST have the 'S' (Start) bit set, no matter whether the PaC or the PAA started the session โœจ Non-initial PANA-Auth-Request and PANA-Auth-Answer messages, as well as any other messages, MUST NOT have the 'S' (Start) bit set.

It is recommended that the PAA limit how fast it processes incoming PANA-Client-Initiation messages, so it stays robust against denial of service (DoS) attacks ๐Ÿ›ก๏ธ The details of rate limiting are outside the scope of this spec.

If a PANA SA needs to be established with a key-generating EAP method, the Pseudo-Random Function (PRF) and integrity algorithms get picked like this. They're used for PANA_AUTH_KEY derivation (see Section 5.3) and for the AUTH AVP calculation (see Section 5.4) ๐Ÿ“ The PAA sends the initial PANA-Auth-Request carrying one or more PRF-Algorithm AVPs and one or more Integrity-Algorithm AVPs, one for each PRF and integrity algorithm it supports. The PaC then selects one PRF algorithm and one integrity algorithm from those AVPs, and replies with the initial PANA-Auth-Answer carrying one PRF-Algorithm AVP and one Integrity-Algorithm AVP for the picks. The negotiation is protected once the MSK is available, as described in Section 5.3 ๐Ÿ”ฅ

If the PAA wants to stay stateless in response to a PANA-Client-Initiation message, it doesn't include an EAP-Payload AVP in the initial PANA-Auth-Request, and it should not retransmit that message on a timer ๐ŸŒธ Because of this, the PaC MUST retransmit the PANA-Client-Initiation message until it receives the second PANA-Auth-Request (not a retransmission of the initial one) from the PAA.

It's possible for the PAA and the PaC to start the session at the same time. That means the PAA sends the initial PANA-Auth-Request without being asked, while the PaC sends a PANA-Client-Initiation message ๐Ÿ˜ญ To resolve this race condition, the PAA MUST silently discard the PANA-Client-Initiation message from the PaC after it has already sent the initial PANA-Auth-Request. The PAA uses the source IP address and source port number of the PANA-Client-Initiation message to tell apart PaCs when several PANA-Client-Initiation messages come in from different PaCs ๐Ÿงธ

EAP messages ride along in PANA-Auth-Request messages. PANA-Auth-Answer messages are just there to acknowledge receipt of those requests ๐Ÿ’– As an optimization, a PANA-Auth-Answer sent from the PaC MAY include the EAP message. This optimization SHOULD NOT be used when the EAP message takes a while to generate (for example, because a human has to type something in). In that case, sending a PANA-Auth-Answer without an EAP message piggybacked on it can stop the PANA-Auth-Request from being retransmitted for no reason โณ

A Nonce AVP MUST be included in the first PANA-Auth-Request and PANA-Auth-Answer messages that follow the initial pair (i.e., with the 'S' (Start) bit set), and it MUST NOT be included in any other message, except during re-authentication procedures (see Section 4.3) ๐ŸŽ€

The result of PANA authentication is carried in the last PANA-Auth-Request sent from the PAA to the PaC. That message carries both the EAP authentication result and the PANA authentication result ๐Ÿ The last PANA-Auth-Request MUST be acknowledged with a PANA-Auth-Answer message. The last PANA-Auth-Request and PANA-Auth-Answer MUST have the 'C' (Complete) bit set, and any other message MUST NOT have the 'C' (Complete) bit set. Figure 1 shows an example sequence for a PaC-initiated session ๐Ÿฆ‹

PaC      PAA  Message(sequence number)[AVPs]
---------------------------------------------------------------------
   ----->     PANA-Client-Initiation(0)
   <-----     PANA-Auth-Request(x)[PRF-Algorithm,Integrity-Algorithm]
                                           // The 'S' (Start) bit set
   ----->     PANA-Auth-Answer(x)[PRF-Algorithm, Integrity-Algorithm]
                                           // The 'S' (Start) bit set
   <-----     PANA-Auth-Request(x+1)[Nonce, EAP-Payload]
   ----->     PANA-Auth-Answer(x+1)[Nonce] // No piggybacking EAP
   ----->     PANA-Auth-Request(y)[EAP-Payload]
   <-----     PANA-Auth-Answer(y)
   <-----     PANA-Auth-Request(x+2)[EAP-Payload]
   ----->     PANA-Auth-Answer(x+2)[EAP-Payload]
                                         // Piggybacking EAP
   <-----     PANA-Auth-Request(x+3)[Result-Code, EAP-Payload,
                                     Key-Id, Session-Lifetime, AUTH]
                                        // The 'C' (Complete) bit set
   ----->     PANA-Auth-Answer(x+3)[Key-Id, AUTH]
                                        // The 'C' (Complete) bit set

Figure 1: Example sequence for the authentication and authorization
          phase for a PaC-initiated session ("Piggybacking EAP" is
          the case in which an EAP-Payload AVP is carried in PAN)

If a PANA SA needs to be established with a key-generating EAP method, and an MSK is successfully generated, the last PANA-Auth-Request with the 'C' (Complete) bit set MUST contain a Key-Id AVP and an AUTH AVP for the first derivation of keys in the session. Any message after that MUST contain an AUTH AVP ๐Ÿ”‘

EAP authentication can fail at a pass-through authenticator without sending an EAP Failure message [RFC4137]. When that happens, the PAA SHOULD silently terminate the session, and it's expected that a session timeout on the PaC will clean up the state there ๐Ÿงน

Here's a plot twist ๐Ÿ˜ฑ EAP authentication can succeed with an EAP Success message, but network access authorization still fails. That could be because an AAA server rejected the authorization, or because the PAA rejected it locally. When this happens, the PAA MUST send the last PANA-Auth-Request with a result code of PANA_AUTHORIZATION_REJECTED. If an MSK is available, the last PANA-Auth-Request and PANA-Auth-Answer messages with the 'C' (Complete) bit set MUST be protected with an AUTH AVP and carry a Key-Id AVP. The PANA session MUST be terminated immediately after the last PANA-Auth message exchange ๐Ÿ’€

Heads up: once that last PANA-Auth message exchange is done, the session is over, so don't hang around waiting for it to come back to life.

For reasons described in Section 3 of [RFC5193], the PaC may need to reconfigure its IP address after a successful authentication and authorization phase. That's so it can get an IP address that works for sending data traffic through the EP ๐ŸŒˆ In that case, the PAA sets the 'I' (IP Reconfiguration) bit on PANA-Auth-Request messages during the authentication and authorization phase, to let the PaC know it needs to reconfigure. How that reconfiguration is actually done is outside the scope of this document โœจ


4.2. Access Phase ๐ŸŒท

Once the authentication and authorization phase wraps up successfully, the PaC gets access to the network and can send and receive IP data traffic through the EP(s). The PANA session then moves into the access phase ๐Ÿšช In this phase, PANA-Notification-Request and PANA-Notification-Answer messages with the 'P' (Ping) bit set (ping request and ping answer messages, respectively) can be used to check that the PANA session is still alive on the PANA peer ๐Ÿ’“ Both the PaC and the PAA are allowed to send a ping request to the other peer whenever they need to make sure the session is still available there, and they expect the peer to send back a ping answer. The ping request and answer messages MUST be protected with an AUTH AVP when a PANA SA is available. A ping request MUST NOT be sent during the authentication and authorization phase, the re-authentication phase, or the termination phase ๐Ÿ™…โ€โ™€๏ธ

Implementations MUST limit how often they perform this test. The PaC and the PAA can handle that rate limiting on their own, with no coordination between them, and there's no negotiation of timers for this purpose ๐Ÿซง On top of that, an implementation MAY rate limit how it processes incoming ping requests. Also, if a PAA or PaC decides its connectivity is lost after a fairly small number of unanswered pings, and its peer is aggressively rate limiting ping requests and answers, you can get false positives ๐Ÿ˜ฌ So a PAA or PaC should not rely on frequent pinging to quickly figure out that connectivity has been lost. Be patient, bestie ๐Ÿญ

4.3. Re-Authentication Phase โœจ

okay so the PANA session in the access phase can hop into re-authentication to stretch its lifetime by just running EAP again ๐Ÿ”„๐Ÿ’–. once re-auth wraps up successfully, the session goes right back to the access phase ๐Ÿ’…. if it doesn't work out, the session gets terminated ๐Ÿ’€.

When the PaC starts re-auth, it sends a PANA-Notification-Request with the 'A' (re-Authentication) bit set (aka a re-authentication request message) to the PAA ๐Ÿฆ‹. this message MUST contain the session identifier that was assigned to the session being re-authenticated ๐Ÿซถ. if the PAA already has an established PANA session for that PaC with a matching session identifier, it MUST first reply with a PANA-Notification-Answer message with the 'A' (re-Authentication) bit set (the re-authentication answer message) ๐ŸŒธ. then it sends a PANA-Auth-Request to kick off a brand new EAP authentication ๐Ÿ”ฅ. if the PAA can't identify the session, it MUST silently discard the message ๐Ÿ™ˆ. also, the first PANA-Auth-Request and PANA-Auth-Answer messages in the re-authentication phase MUST have the 'S' (Start) bit cleared and carry a Nonce AVP ๐ŸŽ€.

the PaC might get a PANA-Auth-Request before the answer to its own re-auth request shows up ๐Ÿ˜ญ. this can happen because of packet re-ordering, or because the PaC and PAA both try to re-authenticate at the same time (a race condition, very dramatic ๐Ÿ’€). the PaC MUST keep discarding those received PANA-Auth-Request messages until it gets the answer to its request ๐Ÿงš.

When the PAA starts re-auth, it sends a PANA-Auth-Request containing the session identifier for the PaC ๐Ÿ‘‘. the PAA MUST initiate EAP re-authentication before the current session lifetime expires โฐ. the clock is literally ticking, bestie.

re-authentication of an ongoing PANA session MUST NOT reset the sequence numbers ๐Ÿšซโœจ. the numbers keep counting, no restarting allowed.

For any re-authentication, if there's an established PANA SA, the re-authentication request and answer messages, plus the later PANA-Auth-Request and PANA-Auth-Answer messages, MUST be protected with an AUTH AVP ๐Ÿ”. the final PANA-Auth-Request and PANA-Auth-Answer messages, and any PANA message after them, MUST be protected by using the key generated from the latest EAP authentication ๐Ÿ—๏ธ๐Ÿ’œ. main character security energy.

Here's the example sequence for it (the PaC starts it all) ๐Ÿ‘‡

   PaC      PAA  Message(sequence number)[AVPs]
   ---------------------------------------------------------------------
      ----->     PANA-Notification-Request(q)[AUTH]
                               // The 'A' (re-Authentication) bit set
      <-----     PANA-Notification-Answer(q)[AUTH]
                               // The 'A' (re-Authentication) bit set
      <-----     PANA-Auth-Request(p)[EAP-Payload, Nonce, AUTH]
      ----->     PANA-Auth-Answer(p)[AUTH, Nonce]
      ----->     PANA-Auth-Request(q+1)[EAP-Payload, AUTH]
      <-----     PANA-Auth-Answer(q+1)[AUTH]
      <-----     PANA-Auth-Request(p+1)[EAP-Payload, AUTH]
      ----->     PANA-Auth-Answer(p+1)[EAP-Payload, AUTH]
      <-----     PANA-Auth-Request(p+2)[Result-Code, EAP-Payload,
                                        Key-Id, Session-Lifetime, AUTH]
                                        // The 'C' (Complete) bit set
      ----->     PANA-Auth-Answer(p+2)[Key-Id, AUTH]
                                        // The 'C' (Complete) bit set

Figure 2: Example sequence for the re-authentication phase initiated by PaC


4.4. Termination Phase ๐Ÿ‘‹

okay so a PANA session can be explicitly terminated, and either side can start it ๐Ÿšช. the PaC can do it (that's a disconnect indication) or the PAA can do it (that's a session revocation) ๐Ÿซฃ. the PANA-Termination-Request and PANA-Termination-Answer message exchanges handle both the disconnect-indication and the session-revocation procedures ๐Ÿ’….

the reason for termination goes in the Termination-Cause AVP ๐Ÿ“. if there's an established PANA SA between the PaC and the PAA, all messages exchanged during the termination phase MUST be protected with an AUTH AVP ๐Ÿ”. when the sender of the PANA-Termination-Request gets a valid acknowledgment, all states kept for the PANA session MUST be terminated immediately ๐Ÿ’€โœจ. poof, gone, no drama.


5. Processing Rules ๐Ÿง 

5.1. Fragmentation ๐Ÿงฉ

PANA doesn't do fragmentation of its own messages ๐Ÿ™…โ€โ™€๏ธ. instead, it leans on the fragmentation that EAP methods and the IP layer already provide, when it's needed ๐Ÿ’–.

5.2. Sequence Number and Retransmission ๐Ÿ”ข

PANA uses sequence numbers to get ordered and reliable delivery of messages ๐ŸŽ€.

the PaC and PAA each keep track of two sequence numbers ๐Ÿ‘ฏ. one is for the number on the next outgoing request, and the other is for matching the number on the next incoming request ๐Ÿ“ฌ. these are 32-bit unsigned numbers ๐Ÿ”Ÿ. they go up by 1 as new requests are made and received, and they wrap back to zero on the next message after 2^32-1 ๐Ÿ”„. answers always carry the same sequence number as their request ๐Ÿซถ. retransmissions reuse the sequence number from the original packet ๐Ÿฆ‹.

the initial sequence numbers (ISN) are picked at random by the PaC and PAA when they send their very first request messages ๐ŸŽฒ. the PANA-Client-Initiation message carries sequence number 0 ๐ŸŒธ.

a received request is only valid, sequence-wise, if and only if its sequence number matches the expected value โœ…. this check doesn't apply to the PANA-Client-Initiation message or the initial PANA-Auth-Request message ๐Ÿ™Œ.

a received answer is only valid, sequence-wise, if and only if its sequence number matches the one from the currently outstanding request โœจ. a peer can only have one outstanding request at a time ๐Ÿซง.

PANA request messages get retransmitted on a timer until an answer shows up (then the retransmission timer stops) โฑ๏ธ. or, if the number of retransmissions hits the maximum value, the PANA session MUST be terminated immediately ๐Ÿ’€.

the retransmission timers SHOULD be calculated as described in Section 9 ๐Ÿ“, unless a deployment decides to use its own retransmission timers, tuned for the underlying link-layer characteristics ๐Ÿ› ๏ธ.

unless a message gets dropped due to rate limiting, the PaC and PAA MUST respond to all duplicate request messages they receive ๐Ÿ”. the last answer sent MAY be cached, in case it never reaches the peer and the peer retransmits the last request ๐Ÿ“ฆ. when it's available, the cached answer can be used instead of fully processing the retransmitted request and building a new answer from scratch โšก.

5.3. PANA Security Association ๐Ÿ”๐Ÿ’œ

a PANA SA is created as an attribute of a PANA session when EAP authentication succeeds and an MSK is created ๐ŸŽ‰. a PANA SA is NOT created when PANA authentication fails, or when the EAP method doesn't produce an MSK ๐Ÿ™…โ€โ™€๏ธ. when a new MSK gets derived in the PANA re-authentication phase, any key derived from the old MSK MUST be updated to a new one that's derived from the new MSK ๐Ÿ”‘โœจ. to tell the new MSK apart from the old ones, one Key-Id AVP MUST be carried in the last PANA-Auth-Request and PANA-Auth-Answer messages that have the 'C' (Complete) bit set, at the end of the EAP authentication that produced the new MSK ๐Ÿท๏ธ. the Key-Id AVP is of type Unsigned32, and it MUST contain a value that uniquely identifies the MSK within the PANA session ๐Ÿ†”. the last PANA-Auth-Answer with the 'C' (Complete) bit set, sent in response to the last PANA-Auth-Request with the 'C' (Complete) bit set, MUST contain a Key-Id AVP with the same MSK identifier that was in the request ๐Ÿชž. the last PANA-Auth-Request and PANA-Auth-Answer messages that carry a Key-Id AVP MUST also carry an AUTH AVP, and its value is computed using the new PANA_AUTH_KEY derived from the new MSK ๐Ÿ”. the spec doesn't force any particular way to calculate the Key-Id AVP value, but a simple method is to use monotonically increasing numbers ๐Ÿ”ข๐Ÿ’–.

the PANA session lifetime is bounded by the authorization lifetime granted by the authentication server (same as the MSK lifetime) โณ. the lifetime of the PANA SA (and so the PANA_AUTH_KEY) is the same as the lifetime of the PANA session ๐Ÿซถ. the created PANA SA gets deleted when its PANA session is terminated ๐Ÿ—‘๏ธ.

here are the PANA SA and PANA session attributes ๐Ÿ“‹:

PANA Session attributes:

  • Session Identifier
  • IP address and UDP port number of the PaC
  • IP address and UDP port number of the PAA
  • Sequence number for the next outgoing request
  • Sequence number for the next incoming request
  • Last transmitted message payload
  • Retransmission interval
  • Session lifetime
  • PANA SA attributes

PANA SA attributes:

  • Nonce generated by PaC (PaC_nonce)
  • Nonce generated by PAA (PAA_nonce)
  • MSK
  • MSK Identifier
  • PANA_AUTH_KEY
  • Pseudo-random function
  • Integrity algorithm

the PANA_AUTH_KEY is derived from the available MSK, and it's used to integrity protect PANA messages ๐Ÿ›ก๏ธ. it's computed like this ๐Ÿงฎ:

PANA_AUTH_KEY = prf+(MSK, "IETF PANA"|I_PAR|I_PAN|
          PaC_nonce|PAA_nonce|Key_ID)

where:

  • The prf+ function is defined in IKEv2 [RFC4306]. The pseudo-random function used for prf+ gets negotiated using the PRF-Algorithm AVP in the initial PANA-Auth-Request and PANA-Auth-Answer exchange with the 'S' (Start) bit set ๐Ÿค.
  • MSK is the master session key generated by the EAP method ๐Ÿ—๏ธ.
  • "IETF PANA" is the ASCII code representation of the non-NULL terminated string (leaving out the double quotes around it) ๐Ÿ”ค.
  • I_PAR and I_PAN are the initial PANA-Auth-Request and PANA-Auth-Answer messages (the PANA header plus the PANA AVPs that follow it) with the 'S' (Start) bit set, respectively ๐Ÿ“จ.
  • PaC_nonce and PAA_nonce are the values of the Nonce AVP carried in the first non-initial PANA-Auth-Answer and PANA-Auth-Request messages in the authentication and authorization phase, or the first PANA-Auth-Answer and PANA-Auth-Request messages in the re-authentication phase, respectively ๐ŸŽฒ.
  • Key_ID is the value of the Key-Id AVP ๐Ÿท๏ธ.

the length of PANA_AUTH_KEY depends on the integrity algorithm in use ๐Ÿ“. Section 5.4 has the detailed usage of PANA_AUTH_KEY ๐Ÿ’….

5.4. Message Authentication ๐Ÿ›ก๏ธ๐Ÿซถ

a PANA message can carry an AUTH AVP to cryptographically protect it ๐Ÿ”.

when an AUTH AVP is in a PANA message, its Value field is calculated with PANA_AUTH_KEY like this โœจ:

AUTH AVP value = PANA_AUTH_HASH(PANA_AUTH_KEY, PANA_PDU)

here, PANA_PDU is the PANA message including the PANA header, with the AUTH AVP Value field first set to 0 ๐Ÿงฎ. PANA_AUTH_HASH stands for the integrity algorithm negotiated using the Integrity-Algorithm AVP in the initial PANA-Auth-Request and PANA-Auth-Answer exchange with the 'S' (Start) bit set ๐Ÿค. the PaC and PAA MUST use the same integrity algorithm to calculate every AUTH AVP they originate and receive ๐Ÿ’œ๐Ÿฆ‹.

5.5. Message Validity Check โœจ

okay so when a PANA message lands, it's considered invalid if at least one of these checks fails ๐Ÿšซ Let's go through them!

  • Each field in the message header has to contain a valid value: sequence number, message length, message type, flags, session identifier, etc. ๐ŸŽ€
  • The message type has to be one of the expected types for the current state. These are the messages that are unexpected and invalid ๐Ÿ‘€
    • In the authentication and authorization phase:
      • PANA-Client-Initiation after the initial PANA-Auth-Request and PANA-Auth-Answer exchange with S (Start) bit set has finished.
      • Re-authentication request.
      • Ping request.
      • The last PANA-Auth-Request with C (Complete) bit set, before the initial PANA-Auth-Request and PANA-Auth-Answer exchange with S (Start) bit set has finished.
      • The initial PANA-Auth-Request with S (Start) bit set, after a PaC receives a valid non-initial PANA-Auth-Request with S (Start) bit cleared.
      • PANA-Termination-Request.
    • In the re-authentication phase:
      • PANA-Client-Initiation.
      • The initial PANA-Auth-Request.
    • In the access phase:
      • PANA-Auth-Request.
      • PANA-Client-Initiation.
    • In the termination phase:
      • PANA-Client-Initiation.
      • All requests except PANA-Termination-Request and ping request.
  • The message payload has to contain a valid set of AVPs allowed for that message type. No required AVP can be missing, and no AVP that needs to sit in a fixed position can show up somewhere else ๐Ÿ“ฆ
  • Each AVP has to be recognized and decoded correctly ๐Ÿ”
  • Once PANA authentication succeeds using a key-generating EAP method, the PANA-Auth-Request message carrying the EAP Success and any later message in that session has to contain an AUTH AVP. Its value has to match the hash value computed against the received message ๐Ÿ”

Invalid messages MUST be discarded. This is how you stay robust against DoS attacks ๐Ÿ›ก๏ธ

5.6. PaC Updating Its IP Address ๐Ÿฆ‹

A PaC's IP address used for PANA can change in certain situations. For example, IP address reconfiguration might be needed so the PaC can get an IP address after successful PANA authentication (see Section 3 of [RFC5193]), or the PaC might move from one IP link to another within the same PAA's realm. To keep the PANA session alive through all this, the PAA needs to be told about the change of PaC address ๐Ÿ—บ๏ธ

After the PaC has changed its IP address used for PANA, it MUST send any valid PANA message. If the message carrying the new PaC IP address in the Source Address field of the IP header is valid, the PAA MUST update the PANA session with the new PaC address. If there is an established PANA SA, the message MUST be protected with an AUTH AVP ๐Ÿ”โœจ

5.7. Session Lifetime โณ

The authentication and authorization phase decides the PANA session lifetime, and that lifetime gets indicated to the PaC when network access authorization succeeds. So when the last PANA-Auth-Request message (the one with the C (Complete) bit set) in the authentication and authorization phase or the re-authentication phase carries a Result-Code AVP with a value of PANA_SUCCESS, a Session-Lifetime AVP MUST also be carried in that message. A Session-Lifetime AVP MUST be ignored when it's included in other PANA messages ๐Ÿ™…โ€โ™€๏ธ

The lifetime is non-negotiable, and the PaC can use it to manage its PANA-related state. If the PaC wants to extend the session, it MUST initiate the re-authentication phase before the current session lifetime expires ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ

The PaC and the PAA MAY use information obtained outside PANA (for example, lower-layer indications) to speed up detecting a disconnected peer. The availability and reliability of those indications MAY depend on a specific link-layer or network topology, so they are only hints ๐Ÿ’ก A PANA peer SHOULD use the ping request and answer exchange to verify that a peer is really no longer alive, unless information obtained outside PANA is already being used to speed up detecting a disconnected peer ๐Ÿ“

The session lifetime parameter has nothing to do with sending ping request messages. Those messages are used for checking the liveness of the peer asynchronously, and the decision to send one is made locally without any coordination between the peers ๐Ÿงš


6. Message Format ๐ŸŽ€

This section defines the message formats for the PANA protocol ๐Ÿ’Œ

6.1. IP and UDP Headers ๐ŸŒธ

Any PANA message is unicast between the PaC and the PAA.

For any PANA message sent from the peer that initiated the PANA session, the UDP source port is set to any number on which that peer can receive incoming PANA messages, and the destination port is set to the assigned PANA port number (716). For any PANA message sent from the other peer, the source port is set to the assigned PANA port number (716), and the destination port is copied from the source port of the last received message. If both the PaC and PAA initiate the session (meaning PANA-Client-Initiation and unsolicited PANA-Auth-Request messages cross each other), then the PaC is identified as the initiator ๐Ÿค All PANA peers MUST listen on the assigned PANA port number (716) ๐Ÿ‘‚

6.2. PANA Message Header ๐Ÿ’œ

Here's a summary of the PANA message header format. The fields are sent in network byte order ๐Ÿง 

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Reserved            |        Message Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Flags             |         Message Type          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Session Identifier                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  AVPs ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Reserved ๐Ÿซง

This 16-bit field is reserved for future use. It MUST be set to zero and ignored by the receiver.

Message Length ๐Ÿ“

The Message Length field is two octets, and it indicates the length of the PANA message, including the header fields.

Flags ๐Ÿšฉ

The Flags field is two octets. The following bits are assigned:

    0                   1
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |R S C A P I r r r r r r r r r r|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

R (Request) If set, the message is a request. If cleared, the message is an answer. ๐Ÿ“จ

S (Start) If set, the message is the first PANA-Auth-Request or PANA-Auth-Answer in the authentication and authorization phase. For other messages, this bit MUST be cleared. ๐Ÿ

C (Complete) If set, the message is the last PANA-Auth-Request or PANA-Auth-Answer in the authentication and authorization phase. For other messages, this bit MUST be cleared. ๐ŸŽ‰

A (re-Authentication) If set, the message is a PANA-Notification-Request or PANA-Notification-Answer to initiate re-authentication. For other messages, this bit MUST be cleared. ๐Ÿ”„

P (Ping) If set, the message is a PANA-Notification-Request or PANA-Notification-Answer for a liveness test. For other messages, this bit MUST be cleared. ๐Ÿ“

I (IP Reconfiguration) If set, it indicates that the PaC is required to perform IP address reconfiguration after the successful authentication and authorization phase, in order to configure an IP address that is usable for exchanging data traffic across EP. This bit is set by the PAA only for PANA-Auth-Request messages in the authentication and authorization phase. For other messages, this bit MUST be cleared. ๐Ÿ› ๏ธ

r (reserved) These flag bits are reserved for future use. They MUST be set to zero and ignored by the receiver. ๐ŸŒ™

Message Type ๐Ÿท๏ธ

The Message Type field is two octets, and it's used to communicate the message type. Message Type allocation is managed by IANA [IANAWEB] ๐Ÿ“‹

Session Identifier ๐Ÿชช

This field contains a 32-bit session identifier.

Sequence Number ๐Ÿ”ข

This field contains a 32-bit sequence number.

AVPs ๐Ÿงฉ

AVPs are a method of encapsulating information relevant to the PANA message. See Section 6.3 for more information on AVPs ๐Ÿ’–

6.3. AVP Format ๐ŸŽ€

Okay so every AVP of type OctetString MUST get padded so it lines up on a 32-bit boundary, bc the other AVP types just align naturally ๐Ÿซถ You tack zero-valued bytes onto the end of the AVP Value field until you hit that word boundary. The padding doesn't show up in the AVP Length field [RFC3588], so don't count it ๐Ÿ™ˆ

The fields in the AVP are sent in network byte order ๐ŸŒธ Here's the layout:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           AVP Code            |           AVP Flags           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          AVP Length           |            Reserved           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Vendor-Id (opt)                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Value ...
+-+-+-+-+-+-+-+-+

AVP Code

The AVP Code, together with the optional Vendor-Id field, identifies the attribute that follows โœจ If the V-bit isn't set, there's no Vendor-Id, and the AVP Code refers to an IETF attribute ๐Ÿ‘‘

AVP Flags

The AVP Flags field is two octets, and these bits are assigned ๐Ÿ’–

 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V r r r r r r r r r r r r r r r|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

V (Vendor)

The 'V' (Vendor) bit tells you whether the optional Vendor-Id field is in the AVP header ๐Ÿฆ‹ When it's set, the AVP Code belongs to that specific vendor's code address space. Every AVP defined in this document MUST have the 'V' (Vendor) bit cleared ๐Ÿ™…โ€โ™€๏ธ

r (reserved)

These flag bits are saved for future use ๐Ÿงš They MUST be set to zero and ignored by the receiver.

AVP Length

The AVP Length field is two octets and counts the octets in the Value field ๐Ÿ“ The AVP Code, AVP Length, AVP Flags, Reserved and Vendor-Id fields don't get counted in the AVP Length value, so don't double-dip ๐Ÿ’…

Reserved

This two-octet field is reserved for future use ๐ŸŒˆ It MUST be set to zero and ignored by the receiver.

Vendor-Id

The Vendor-Id field only shows up if the 'V' (Vendor) bit is set in the AVP Flags field ๐Ÿ“ This optional four-octet field holds the IANA assigned "SMI Network Management Private Enterprise Codes" [IANAWEB] value, encoded in network byte order. Any vendor who wants a vendor-specific PANA AVP MUST use their own Vendor-Id along with their privately managed AVP address space. That way they won't collide with another vendor's vendor-specific AVP(s) or with future IETF applications ๐Ÿ”ฅ

Value

The Value field is zero or more octets and holds info specific to the Attribute ๐Ÿ’œ The format of the Value field depends on the AVP Code and Vendor-Id fields, and its length comes from the AVP Length field ๐Ÿซง


7. PANA Messages ๐Ÿ’Œ

Every Request/Answer message pair gets its own sequence number, and the sub-type (request or answer) is shown by the 'R' (Request) bit in the Message Flags field of the PANA message header ๐Ÿฆข

Every PANA message MUST contain a message type in its header's Message Type field, since that's what decides the action to take for a particular message ๐ŸŽฏ Figure 3 lists every PANA message defined in this document:

Message Name              Abbrev. Message  PaC<->PAA  Ref.
                                  Type
---------------------------------------------------------------------
PANA-Client-Initiation     PCI    1        -------->  7.1
PANA-Auth-Request          PAR    2        <------->  7.2
PANA-Auth-Answer           PAN    2        <------->  7.3
PANA-Termination-Request   PTR    3        <------->  7.4
PANA-Termination-Answer    PTA    3        <------->  7.5
PANA-Notification-Request  PNR    4        <------->  7.6
PANA-Notification-Answer   PNA    4        <------->  7.7
---------------------------------------------------------------------

Figure 3: Table of PANA Messages

The language used for PANA message definitions (basically, which AVPs are valid for each PANA message type) in Section 7.1 through Section 7.7 is ABNF [RFC5234] ๐Ÿ“ Here's the grammar:

message-def      = Message-Name LWSP "::=" LWSP PANA-message

Message-Name     = PANA-name

PANA-name        = ALPHA *(ALPHA / DIGIT / "-")

PANA-message     = header LWSP *fixed LWSP *required
                          LWSP *optional LWSP *fixed

header           = "<" LWSP "PANA-Header:" LWSP Message-Type
                   [r-bit] [s-bit] [c-bit] [a-bit] [p-bit] [i-bit]
                   LWSP ">"

Message-Type     = 1*DIGIT
                   ; The Message Type assigned to the message

r-bit            = ",REQ"
                   ; If present, the 'R' (Request) bit in the Message
                   ; Flags is set, indicating that the message
                   ; is a request, as opposed to an answer.

s-bit            = ",STA"
                   ; If present, the 'S' (Start) bit in the Message
                   ; Flags is set, indicating that the message
                   ; is the initial PAR or PAN in authentication
                   ; and authorization phase.

c-bit            = ",COM"
                   ; If present, the 'C' bit in the Message
                   ; Flags is set, indicating that the message
                   ; is the final PAR and PAN in authentication
                   ; and authorization phase or re-authentication
                   ; phase.

a-bit            = ",REA"
                   ; If present, the 'A' (re-Authentication) bit
                   ; in the Message Flags is set, indicating that
                   ; the message is a re-authentication request or
                   ; answer.

p-bit            = ",PIN"
                   ; If present, the 'P' (Ping) bit in the Message
                   ; Flags is set, indicating that the message
                   ; is a ping request or answer.

i-bit            = ",IPR"
                   ; If present, the 'I' (IP Reconfiguration) bit
                   ; in the Message Flags is set, indicating that
                   ; the PaC requires IP address reconfiguration
                   ; after successful authentication and
                   ; authorization phase.

fixed            = [qual] "<" LWSP avp-spec LWSP ">"
                   ; Defines the fixed position of an AVP.

required         = [qual] "{" LWSP avp-spec LWSP "}"
                   ; The AVP MUST be present and can appear
                   ; anywhere in the message.

optional         = [qual] "[" LWSP avp-name LWSP "]"
                   ; The avp-name in the 'optional' rule cannot
                   ; evaluate any AVP Name that is included
                   ; in a fixed or required rule.  The AVP can
                   ; appear anywhere in the message.

qual             = [min] "*" [max]
                   ; See ABNF conventions, RFC 5234 Section 3.6.
                   ; The absence of any qualifiers depends on whether
                   ; it precedes a fixed, required, or optional
                   ; rule.  If a fixed or required rule has no
                   ; qualifier, then exactly one such AVP MUST
                   ; be present.  If an optional rule has no
                   ; qualifier, then 0 or 1 such AVP may be
                   ; present.
                   ;
                   ; NOTE:  "[" and "]" have a different meaning
                   ; than in ABNF (see the optional rule, above).
                   ; These braces cannot be used to express
                   ; optional fixed rules (such as an optional
                   ; AUTH at the end).  To do this, the convention
                   ; is '0*1fixed'.

min              = 1*DIGIT
                   ; The minimum number of times the element may
                   ; be present.  The default value is zero.

max              = 1*DIGIT
                   ; The maximum number of times the element may
                   ; be present.  The default value is infinity.  A
                   ; value of zero implies the AVP MUST NOT be
                   ; present.

avp-spec         = PANA-name
                   ; The avp-spec has to be an AVP Name, defined
                   ; in the base or extended PANA protocol
                   ; specifications.

avp-name         = avp-spec / "AVP"
                   ; The string "AVP" stands for *any* arbitrary
                   ; AVP Name, which does not conflict with the
                   ; required or fixed position AVPs defined in
                   ; the message definition.

7.1. PANA-Client-Initiation (PCI) ๐Ÿ“

The PANA-Client-Initiation (PCI) message is for PaC-initiated sessions ๐Ÿ™Œ The Sequence Number and Session Identifier fields in this message MUST be set to zero (0).

PANA-Client-Initiation ::= < PANA-Header: 1 >
                   *[ AVP ]

7.2. PANA-Auth-Request (PAR) ๐Ÿ”

The PANA-Auth-Request (PAR) message gets sent by either the PAA or the PaC ๐Ÿ’ซ

The message MUST NOT have both the 'S' (Start) and 'C' (Complete) bits set. ๐Ÿšซ

PANA-Auth-Request ::= < PANA-Header: 2,REQ[,STA][,COM][,IPR] >
                    [ EAP-Payload ]
                    [ Nonce ]
                   *[ PRF-Algorithm ]
                   *[ Integrity-Algorithm ]
                    [ Result-Code ]
                    [ Session-Lifetime ]
                    [ Key-Id ]
                   *[ AVP ]
                 0*1< AUTH >

7.3. PANA-Auth-Answer (PAN) ๐ŸŽ€

The PANA-Auth-Answer (PAN) message is sent by either the PaC or the PAA in response to a PANA-Auth-Request message ๐Ÿ’ฌ

The message MUST NOT have both the 'S' (Start) and 'C' (Complete) bits set. ๐Ÿ™…โ€โ™€๏ธ

PANA-Auth-Answer ::= < PANA-Header: 2[,STA][,COM] >
                    [ Nonce ]
                    [ PRF-Algorithm ]
                    [ Integrity-Algorithm ]
                    [ EAP-Payload ]
                    [ Key-Id ]
                   *[ AVP ]
                 0*1< AUTH >

7.4. PANA-Termination-Request (PTR) ๐Ÿ›‘

The PANA-Termination-Request (PTR) message is sent by either the PaC or the PAA to terminate a PANA session ๐Ÿฆ‹

PANA-Termination-Request ::= < PANA-Header: 3,REQ >
                    < Termination-Cause >
                   *[ AVP ]
                 0*1< AUTH >

7.5. PANA-Termination-Answer (PTA) ๐ŸŒท

The PANA-Termination-Answer (PTA) message is sent by either the PaC or the PAA in response to a PANA-Termination-Request ๐Ÿซถ

PANA-Termination-Answer ::= < PANA-Header: 3 >
                   *[ AVP ]
                 0*1< AUTH >

7.6. PANA-Notification-Request (PNR) ๐Ÿ””

The PANA-Notification-Request (PNR) message is used for signaling re-authentication and performing a liveness test โœจ See Section 4.3 and Section 4.2 for details on re-authentication and liveness test, respectively.

The message MUST have one of the 'A' (re-Authentication) and 'P' (Ping) bits exclusively set. ๐Ÿ’–

PANA-Notification-Request ::= < PANA-Header: 4,REQ[,REA][,PIN] >
                   *[ AVP ]
                 0*1< AUTH >

7.7. PANA-Notification-Answer (PNA) โœจ

bestie, the PNA is the reply ๐Ÿ’Œ The PAA (PaC) sends it back to the PaC (PAA) after it gets a PANA-Notification-Request from that side. It's giving "got your message, here's my answer."

The message MUST have one of the 'A' (re-Authentication) and 'P' (Ping) bits exclusively set. So it's one or the other, never both ๐Ÿ™…โ€โ™€๏ธ

PANA-Notification-Answer ::= < PANA-Header: 4[,REA][,PIN] >
                      *[ AVP ]
                    0*1< AUTH >

8. AVPs in PANA โœจ

okay, AVPs time ๐Ÿ’… This document uses the AVP Value Formats 'OctetString' and 'Unsigned32' as defined in Section 4.2 of [RFC3588]. We're not repeating those definitions here, so go check them out if you need them ๐Ÿค“

Next up is a table that shows which AVPs show up in which PANA messages, and whether they MAY or MAY NOT be there. The symbols mean:

0     The AVP MUST NOT be present in the message.

0-1   Zero or one instance of the AVP MAY be present in the message.
      It is considered an error if there is more than one instance of
      the AVP.

1     One instance of the AVP MUST be present in the message.

0+    Zero or more instances of the AVP MAY be present in the
      message.

Here's the actual table ๐Ÿ‘€

                      +---------------------------+
                      |        Message Type       |
                      +---+---+---+---+---+---+---+
Attribute Name        |PCI|PAR|PAN|PTR|PTA|PNR|PNA|
----------------------+---+---+---+---+---+---+---+
AUTH                  | 0 |0-1|0-1|0-1|0-1|0-1|0-1|
EAP-Payload           | 0 |0-1|0-1| 0 | 0 | 0 | 0 |
Integrity-Algorithm   | 0 |0+ |0-1| 0 | 0 | 0 | 0 |
Key-Id                | 0 |0-1|0-1| 0 | 0 | 0 | 0 |
Nonce                 | 0 |0-1|0-1| 0 | 0 | 0 | 0 |
PRF-Algorithm         | 0 |0+ |0-1| 0 | 0 | 0 | 0 |
Result-Code           | 0 |0-1| 0 | 0 | 0 | 0 | 0 |
Session-Lifetime      | 0 |0-1| 0 | 0 | 0 | 0 | 0 |
Termination-Cause     | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
----------------------+---+---+---+---+---+---+---+

Figure 4: AVP Occurrence Table

8.1. AUTH AVP

The AUTH AVP (AVP Code 1) is the one that integrity protects PANA messages ๐Ÿ” Its data payload holds the Message Authentication Code, encoded in network byte order. The length changes depending on which integrity algorithm is in use. The data is of type OctetString.

8.2. EAP-Payload AVP

The EAP-Payload AVP (AVP Code 2) wraps up the actual EAP message being swapped between the EAP peer and the EAP authenticator ๐ŸŽ Its data is of type OctetString.

8.3. Integrity-Algorithm AVP

The Integrity-Algorithm AVP (AVP Code 3) tells everyone which integrity algorithm to use when computing an AUTH AVP ๐Ÿงฎ Its data is of type Unsigned32, and it holds an Internet Key Exchange Protocol version 2 (IKEv2) Transform ID of Transform Type 3 [RFC4306] for that algorithm.

Here's the big rule: all PANA implementations MUST support AUTH_HMAC_SHA1_160 (7) [RFC4595]. Non-negotiable, periodt ๐Ÿ’–

8.4. Key-Id AVP

The Key-Id AVP (AVP Code 4) is of type Integer32 and holds an MSK identifier ๐Ÿ—๏ธ The PAA assigns that identifier, and it MUST be unique within the PANA session. No duplicate keys in the same session, bestie ๐Ÿ™…โ€โ™€๏ธ

8.5. Nonce AVP

The Nonce AVP (AVP Code 5) carries a randomly chosen value that gets used in cryptographic key computations ๐ŸŽฒ The recommendations in [RFC4086] apply when it comes to generating random values. Its data is of type OctetString, and it's a randomly generated value in opaque format. The data length MUST be between 8 and 256 octets, inclusive.

The length of the nonces depends on which pseudo-random functions (PRFs) are available, plus how much trust the PaC and the PAA put in each other to compute random values. There are two ways the length gets decided, depending on whether:

  1. The PaC and the PAA each are likely to be able to compute a random nonce (according to [RFC4086]). The length of the nonce has to be 1/2 the length of the PRF key (e.g., 10 octets in the case of HMAC-SHA1).
  2. The PaC and the PAA each are not trusted with regard to the computation of a random nonce (according to [RFC4086]). The length of the nonce has to have the full length of the PRF key (e.g., 20 octets in the case of HMAC-SHA1).

The strongest available PRF for PANA also has to be considered in this math ๐Ÿง  Right now only a single PRF (namely HMAC-SHA1) is available, so the maximum output length is 20 octets. Therefore, the maximum length of the nonce value SHOULD be 20 octets.

8.6. PRF-Algorithm AVP

The PRF-Algorithm AVP (AVP Code 6) conveys the pseudo-random function used to derive PANA_AUTH_KEY ๐Ÿ”‘ Its data is of type Unsigned32, and it contains an IKEv2 Transform ID of Transform Type 2 [RFC4306]. All PANA implementations MUST support PRF_HMAC_SHA1 (2) [RFC2104]. Same energy as the integrity algorithm, no exceptions ๐Ÿ’…

8.7. Result-Code AVP

The Result-Code AVP (AVP Code 7) is of type Unsigned32, and it tells you whether an EAP authentication finished successfully โœ… The values are:

PANA_SUCCESS                               0

   Both authentication and authorization processes are successful.

PANA_AUTHENTICATION_REJECTED               1

   Authentication has failed.  When authentication fails,
   authorization is also considered to have failed.

PANA_AUTHORIZATION_REJECTED                2

   The authorization process has failed.  This error could occur when
   authorization is rejected by a AAA server or rejected locally by a
   PAA, even if the authentication procedure has succeeded.

8.8. Session-Lifetime AVP

The Session-Lifetime AVP (AVP Code 8) is the countdown โณ It holds the number of seconds left before the current session is considered expired. The data is of type Unsigned32.

8.9. Termination-Cause AVP

The Termination-Cause AVP (AVP Code 9) explains why the requester is ending a session ๐Ÿšช Its data is of type Enumerated. These are the Termination-Cause values used with PANA:

LOGOUT                   1  (PaC -> PAA)

   The client initiated a disconnect.

ADMINISTRATIVE           4  (PAA -> PaC)

   The client was not granted access or was disconnected due to
   administrative reasons.

SESSION_TIMEOUT          8  (PAA -> PaC)

   The session has timed out, and service has been terminated.

9. Retransmission Timers

so retransmissions ๐Ÿ” The PANA protocol provides them for the PANA-Client-Initiation message and for all request messages.

PANA's retransmission timers are based on the model used in DHCPv6 [RFC3315], and it borrows the variables from that spec too ๐Ÿค PANA is request/response based. The message exchange ends when the requester successfully receives the answer, or when it's considered to have failed under the retransmission mechanism described below.

The retransmission behavior is controlled by these variables:

RT     Retransmission timeout from the previous (re)transmission

IRT    Base value for RT for the initial retransmission

MRC    Maximum retransmission count

MRT    Maximum retransmission time

MRD    Maximum retransmission duration

RAND   Randomization factor

Every time a message is sent or resent, the sender sets RT using the rules below. If RT expires before the message exchange ends, the sender recomputes RT and retransmits the message ๐Ÿ”„

Each new RT computation includes a randomization factor (RAND). It's a random number picked with a uniform distribution between -0.1 and +0.1. The randomization is there to minimize the synchronization of messages, so everyone isn't yelling at the same time ๐Ÿ™ƒ

The algorithm for picking a random number does not need to be cryptographically sound. The algorithm SHOULD produce a different sequence of random numbers from each invocation.

RT for the first message retransmission is based on IRT:

RT = IRT + RAND*IRT

RT for each later retransmission is based on the previous value of RT:

RT = 2*RTprev + RAND*RTprev

MRT sets an upper bound on the value of RT (ignoring the randomization added by RAND). If MRT is 0, there's no upper limit on RT. Otherwise:

if (RT > MRT)
   RT = MRT + RAND*MRT

MRC sets an upper bound on how many times a sender may retransmit a message. Unless MRC is zero, the message exchange fails once the sender has transmitted the message MRC times.

MRD sets an upper bound on how long a sender may keep retransmitting a message. Unless MRD is zero, the message exchange fails once MRD seconds have passed since the client first transmitted the message โฑ๏ธ

If both MRC and MRD are non-zero, the message exchange fails whenever either of the two conditions above is met.

If both MRC and MRD are zero, the client keeps transmitting the message until it gets a response.

9.1. Transmission and Retransmission Parameters

This section has a table of values for how PANA requests (REQ_*) and the PANA-Client-Initiation message (PCI_*) behave when retransmitting. These are the default values ๐Ÿ“‹

Parameter       Default   Description
---------------------------------------------------------------------
PCI_IRT           1 sec   Initial PCI timeout.
PCI_MRT         120 secs  Max PCI timeout value.
PCI_MRC           0       Max PCI retransmission attempts.
PCI_MRD           0       Max PCI retransmission duration.

REQ_IRT           1 sec   Initial Request timeout.
REQ_MRT          30 secs  Max Request timeout value.
REQ_MRC          10       Max Request retransmission attempts.
REQ_MRD           0       Max Request retransmission duration.

So, for example, the first RT for the PANA-Auth-Request (PAR) message gets calculated using REQ_IRT as the IRT:

RT = REQ_IRT + RAND*REQ_IRT

10. IANA Considerations

this section is for the Internet Assigned Numbers Authority (IANA) ๐Ÿ—‚๏ธ It gives guidance on registering values related to the PANA protocol, following BCP 26 [IANA]. The policies used here, with the meanings BCP 26 gives them, are: "Private Use", "First Come First Served", "Expert Review", "Specification Required", "IETF Consensus", and "Standards Action".

This section also explains the criteria IANA should use when assigning numbers within the namespaces this document defines.

For registration requests where a Designated Expert should be consulted, the responsible IESG Area Director should appoint the Designated Expert. For Designated Expert with Specification Required, the request is posted to the PANA WG mailing list (or, if it's been disbanded, to a successor the Area Director designates) for comment and review. The request MUST include a pointer to a public specification. Before 30 days have passed, the Designated Expert will either approve or deny the request, and publish a notice of the decision to the PANA WG mailing list or its successor. A denial notice must come with an explanation and, where it's possible, concrete suggestions on how to change the request so it becomes acceptable ๐Ÿ“

IANA has created a registry for PANA ๐ŸŽ‰

10.1. PANA UDP Port Number

PANA uses one well-known UDP port number (see Section 6.1), which has been assigned by the IANA (716) ๐ŸŽ€

10.2. PANA Message Header โœจ

okay so the PANA message header has two fields that need IANA namespace management, the Message Type and Flags fields ๐ŸŽ€ (see Section 6.2 for the header itself)

10.2.1. Message Type ๐Ÿ’Œ

bestie, the Message Type namespace is how we identify PANA messages ๐Ÿฆ‹ Message Type 0 is not used and is not assigned by IANA. The values 1 - 65,519 are for permanent, standard message types, allocated by IETF Consensus [IANA]. This document defines the range of values 1 - 4. The same Message Type is used for both the request and the answer messages, except for type 1, and the Request bit is what tells requests apart from answers. See Section 7 for the assignment of the namespace in this specification ๐Ÿ’…

The range of values 65,520 - 65,535 (hexadecimal values 0xfff0 - 0xffff) is reserved for experimental messages ๐Ÿงช These codes are only for experimental and testing purposes, so no guarantee is made for interoperability between the communicating PaC and PAA using experimental commands, as outlined in [IANA-EXP] ๐Ÿ’€

10.2.2. Flags ๐Ÿšฉ

There are 16 bits in the Flags field of the PANA message header ๐ŸŒธ This document assigns bit 0 ('R'), 1 ('S'), 2 ('C'), 3 ('A'), 4 ('P'), and 5 ('I') in Section 6.2. The remaining bits MUST only be assigned via a Standards Action [IANA]. Hard rule, no cap ๐Ÿ‘‘

10.3. AVP Header ๐ŸŽ€

okay so the AVP header has three fields that need IANA namespace management: the AVP Code, AVP Flags, and Vendor-Id fields. Only the AVP Code and AVP Flags actually create new namespaces though ๐Ÿงš (see Section 6.3 for the header layout)

10.3.1. AVP Code ๐Ÿ“

The 16-bit AVP code namespace is used to identify attributes, and there are multiple namespaces ๐Ÿ’œ Vendors can have their own AVP codes namespace, which is identified by their Vendor-Id (also known as Enterprise-Number), and they control the assignments of their vendor-specific AVP codes within their own namespace. No Vendor-Id means you're in the IETF IANA controlled AVP codes namespace. The AVP codes, and sometimes also the possible values inside an AVP, are controlled and maintained by IANA ๐Ÿซถ

AVP Code 0 is not used and is not assigned by IANA. This document defines the AVP Codes 1-9. See Section 8.1 through Section 8.9 for the assignment of the namespace in this specification โœจ

AVPs may be allocated following Designated Expert Review with Specification Required [IANA] or Standards Action.

Quick heads up: PANA has a mechanism for Vendor-Specific AVPs, where the Vendor-Id field in the AVP header is set to a non-zero value ๐Ÿฆ‹ Vendor-Specific AVP codes are for Private Use and should be encouraged instead of allocating global attribute types, for functions that are specific to only one vendor's implementation of PANA where no interoperability is deemed useful. Where a Vendor-Specific AVP is implemented by more than one vendor, allocation of global AVPs should be encouraged instead ๐ŸŒˆ

10.3.2. Flags ๐Ÿšฉ

There are 16 bits in the AVP Flags field of the AVP header, defined in Section 6.3. This document assigns bit 0 ('V'). The remaining bits should only be assigned via a Standards Action .

10.4. AVP Values ๐Ÿ’–

Certain AVPs in PANA define a list of values with various meanings ๐Ÿ“ For attributes other than the ones specified in this section, adding additional values to the list can be done on a First Come, First Served basis by IANA [IANA] ๐Ÿ’…

10.4.1. Result-Code AVP Values ๐ŸŽ€

As defined in Section 8.7, the Result-Code AVP (AVP Code 7) defines the values 0-2.

All remaining values are available for assignment via IETF Consensus [IANA] โœจ

10.4.2. Termination-Cause AVP Values ๐ŸŒธ

As defined in Section 8.9, the Termination-Cause AVP (AVP Code 9) defines the values 1, 4, and 8.

All remaining values are available for assignment via IETF Consensus [IANA] ๐Ÿ‘‘


11. Security Considerations ๐Ÿ”

bestie, this section is seriously important ๐Ÿ˜ญ The PANA protocol defines a UDP-based EAP encapsulation that runs between two IP-enabled nodes. Various security threats relevant to a protocol like this are outlined in [RFC4016]. Security considerations from using EAP and EAP methods are discussed in [RFC3748] [EAP-KEYING]. This section covers the security-related issues tied to PANA framework and protocol design ๐Ÿซถ

An important element when you're assessing PANA's security in a network is whether lower-layer security is present ๐Ÿ›ก๏ธ Here, lower layers are said to be secure if the environment gives adequate protection against spoofing and confidentiality based on its operational needs. For example, DSL and cdma2000 networks' lower-layer security is enabled even before running the first PANA-based authentication. If there's no such preestablished secure channel before running PANA, one can be created after a successful PANA authentication using a link-layer or network-layer cryptographic mechanism (e.g., IPsec) ๐Ÿ”‘

11.1. General Security Measures ๐Ÿ›ก๏ธ

PANA provides multiple mechanisms to secure a PANA session ๐Ÿ’…

PANA messages carry sequence numbers, which are monotonically incremented by 1 with every new request message. These numbers are randomly initialized at the beginning of the session, and they are verified against expected numbers upon receipt. A message whose sequence number is different from the expected one is silently discarded. Besides orderly delivery of EAP messages and duplicate elimination, this scheme also helps stop an adversary from spoofing messages to disturb ongoing PANA and EAP sessions, unless it can also eavesdrop to synchronize with the expected sequence number. Furthermore, the impact of replay attacks is reduced: any stale message (i.e., a request or answer with an unexpected sequence number and/or a session identifier for a non-existing session) and any duplicate answer are immediately discarded, and a duplicate request can trigger transmission of the cached answer (i.e., no need to process the request and generate a new answer) ๐Ÿ”

The PANA framework defines EP, which is ideally located on a network device that can filter traffic from the PaCs before the traffic enters the Internet/intranet ๐Ÿšง A set of filters can be used to discard unauthorized packets, such as the initial PANA-Auth-Request message that is received from the segment of the access network where only the PaCs are supposed to be connected (i.e., preventing PAA impersonation) ๐Ÿ™ˆ

The protocol also provides authentication and integrity protection to PANA messages when the used EAP method can generate cryptographic session keys. A PANA SA is generated based on the MSK exported by the EAP method. This SA is used for generating an AUTH AVP to protect the PANA message header and payload (including the complete EAP message) ๐Ÿ”

The cryptographic protection prevents an adversary from acting as a man-in-the-middle, injecting messages, replaying messages, and modifying the content of the exchanged messages. Any packet that fails the AUTH verification is silently discarded. The earliest this protection can be enabled is when the PANA-Auth-Request message that signals a successful authentication (EAP Success) is generated. Starting with these messages, any subsequent PANA message can be cryptographically protected until the session gets torn down ๐Ÿ’œ

The lifetime of the PANA SA is set to the PANA session lifetime, which is bounded by the authorization lifetime granted by the authentication server. An implementation MAY add a grace period to that value. Unless the PANA session is extended by executing another EAP authentication, the PANA SA is removed when the current session expires โณ

The ability to use cryptographic protection within PANA is determined by the used EAP method, which is generally dictated by the deployment environment. Insecure lower layers necessitate the use of key-generating EAP methods. In networks where lower layers are already secured, cryptographic protection of PANA messages is not necessary ๐ŸŒˆ

11.2. Initial Exchange ๐ŸŒฑ

The initial PANA-Auth-Request and PANA-Auth-Answer exchange is vulnerable to spoofing attacks, because these messages are not authenticated and integrity protected ๐Ÿ˜ฌ To prevent very basic DoS attacks, an adversary should not be able to cause state creation by sending PANA-Client-Initiation messages to the PAA. This protection is achieved by allowing the responder (PAA) to create as little state as possible in the initial message exchange. However, it is difficult to prevent all spoofing attacks in the initial message exchange entirely ๐Ÿซ 

11.3. EAP Methods ๐ŸŽญ

Eavesdropping on EAP messages might cause problems when the EAP method is weak and enables dictionary or replay attacks, or even allows an adversary to learn the long-term password directly ๐Ÿ˜ฑ Furthermore, if the optional EAP Response/Identity payload is used, it allows the adversary to learn the identity of the PaC. In that case, a privacy problem is prevalent ๐Ÿ‘€

To prevent these threats, [RFC5193] suggests using proper EAP methods for particular environments. Depending on the deployment environment, an EAP authentication method that supports user-identity confidentiality, protection against dictionary attacks, and session-key establishment must be used. It is therefore the responsibility of the network operators and users to choose a proper EAP method ๐Ÿง 

11.4. Cryptographic Keys ๐Ÿ—๏ธ

When the EAP method exports an MSK, this key is used to produce a PANA SA with PANA_AUTH_KEY with a distinct key ID. The PANA_AUTH_KEY is unique to the PANA session, and it takes PANA-based nonce values into computation to cryptographically separate itself from the MSK โœจ

The PANA_AUTH_KEY is solely used for the authentication and integrity protection of the PANA messages within the designated session ๐Ÿ’…

The PANA SA lifetime is bounded by the MSK lifetime. Another execution of the EAP method yields a new MSK, and it updates the PANA SA, PANA_AUTH_KEY, and key ID ๐Ÿ”„

11.5. Per-Packet Ciphering ๐Ÿ”’

Networks that are not secured at the lower layers prior to running PANA can rely on enabling per-packet data-traffic ciphering upon successful PANA SA establishment. The PANA framework allows generation of cryptographic keys from the PANA SA, and it uses those keys with a secure association protocol to enable per-packet cryptographic protection, such as link-layer or IPsec-based ciphering [PANA-IPSEC]. These mechanisms ultimately establish a cryptographic binding between the data traffic generated by and for a client and the authenticated identity of the client. Data traffic can be data origin authenticated, replay and integrity protected, and optionally encrypted using the cryptographic keys. How these keys are generated from the PANA SA and used with a secure association protocol is outside the scope of this document ๐ŸŽ€

11.6. PAA-to-EP Communication ๐Ÿ“ก

The PANA framework allows separation of PAA from EP. The protocol exchange between the PAA and EP for provisioning authorized PaC information on the EP must be protected for authentication, integrity, and replay protection ๐Ÿซถ

11.7. Liveness Test ๐Ÿ’“

okay so a PANA session has a session lifetime, and it gets terminated unless a new round of EAP authentication refreshes it before it expires ๐Ÿ˜ญ which means the latest a disconnected client can get detected is when its session expires. ngl that's kind of a long time to wait, so a disconnect can also get caught earlier with PANA ping messages โœจ

Either the PaC or the PAA can send a request message at any point in the access phase, and it expects the peer to send back an answer message ๐Ÿฆ‹ if that round-trip succeeds, it's a simple check that the peer is still alive. literally that's it, so iconic ๐Ÿ’…

You'd use this test when there's a chance the peer has dropped off, like after data traffic has been quiet for a long time ๐Ÿ™ˆ Using it as a periodic keep-alive needs extra care tho, because it can cause congestion and that might lead to false alarms ๐Ÿ˜ฌ

This exchange is cryptographically protected whenever a PANA SA is available ๐Ÿ” that's how it avoids threats from people abusing this functionality. main character security energy ๐Ÿ‘‘

Any valid PANA answer message that comes back in response to a recently sent request message can count as proof the peer is alive ๐ŸŒธ So the PaC or PAA MAY skip sending an explicit ping request if a recent exchange already confirmed the peer is alive. big brain move ๐Ÿง โœจ

11.8. Early Termination of a Session ๐Ÿšช

PANA lets both the PaC and the PAA send a tear-down message before the session lifetime runs out ๐ŸŒˆ When that happens, the state gets removed, the accounting procedure stops, and the installed per-PaC state gets removed from the EP(s) ๐Ÿ’œ This message is cryptographically protected whenever a PANA SA is present ๐Ÿ” bestie, the full exit with no loose ends ๐ŸŽ€


12. Acknowledgments ๐Ÿซถ

We'd love to thank Mark Townsley, Jari Arkko, Mohan Parthasarathy, Julien Bournelle, Rafael Marin Lopez, Pasi Eronen, Randy Turner, Erik Nordmark, Lionel Morand, Avi Lior, Susan Thomson, Giaretta Gerardo, Joseph Salowey, Sasikanth Bharadwaj, Spencer Dawkins, Tom Yu, Bernard Aboba, Subir Das, John Vollbrecht, Prakash Jayaraman, and everyone in the PANA working group for their valuable comments on this document ๐Ÿ’– the real ones ๐Ÿ‘‘

13. References ๐Ÿ“š

13.1. Normative References ๐Ÿ”ฅ

  • [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997.
  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
  • [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. Levkowetz, Ed., "Extensible Authentication Protocol (EAP)", RFC 3748, June 2004.
  • [RFC4086] Eastlake, D., 3rd, Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005.
  • [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
  • [RFC5192] Morand, L., Yegin A., Kumar S., and S. Madanapalli, "DHCP Options for Protocol for Carrying Authentication for Network Access (PANA) Authentication Agents", RFC 5192, May 2008.
  • [IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.

13.2. Informative References ๐Ÿ“–

  • [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003.
  • [RFC4016] Parthasarathy, M., "Protocol for Carrying Authentication and Network Access (PANA) Threat Analysis and Security Requirements", RFC 4016, March 2005.
  • [RFC4058] Yegin, A., Ed., Ohba, Y., Penno, R., Tsirtsis, G., and C. Wang, "Protocol for Carrying Authentication for Network Access (PANA) Requirements", RFC 4058, May 2005.
  • [RFC4137] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba, "State Machines for Extensible Authentication Protocol (EAP) Peer and Authenticator", RFC 4137, August 2005.
  • [RFC4306] Kaufman, C., Ed., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, December 2005.
  • [RFC4595] Maino, F. and D. Black, "Use of IKEv2 in the Fibre Channel Security Association Management Protocol", RFC 4595, July 2006.
  • [RFC5193] Jayaraman, P., Lopez R., Ohba Y., Ed., Parthasarathy, M., and A. Yegin, "Protocol for Carrying Authentication for Network Access (PANA) Framework", RFC 5193, May 2008.
  • [EAP-KEYING] Aboba, B., Simon D., and P. Eronen, "Extensible Authentication Protocol (EAP) Key Management Framework", Work in Progress, November 2007.
  • [PANA-IPSEC] Parthasarathy, M., "PANA Enabling IPsec based Access Control", Work in progress, July 2005.
  • [IANAWEB] IANA, "Number assignment", http://www.iana.org.
  • [IANA-EXP] Narten, T., "Assigning Experimental and Testing Numbers Considered Useful", BCP 82, RFC 3692, January 2004.

Authors' Addresses ๐Ÿ’Œ

Dan Forsberg
Nokia Research Center
P.O. Box 407
FIN-00045 NOKIA GROUP
Finland

Phone: +358 50 4839470
EMail: dan.forsberg@nokia.com
Yoshihiro Ohba
Toshiba America Research, Inc.
1 Telcordia Drive
Piscataway, NJ  08854
USA

Phone: +1 732 699 5305
EMail: yohba@tari.toshiba.com
Basavaraj Patil
Nokia Siemens Networks
6000 Connection Drive
Irving, TX  75039
USA

EMail: basavaraj.patil@nsn.com
Hannes Tschofenig
Nokia Siemens Networks
Linnoitustie 6 Espoo 02600
Finland

Phone: +358 (50) 4871445
EMail: Hannes.Tschofenig@nsn.com
URI: http://www.tschofenig.priv.at
Alper E. Yegin
Samsung
Istanbul, Turkey

EMail: a.yegin@partner.samsung.com

Copyright (C) The IETF Trust (2008).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property ๐Ÿงพ

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

๐Ÿ“ฆ where this page comes from