RFC 5778

Diameter Mobile IPv6: Support for Home Agent to Diameter Server Interaction

๐Ÿ“… published February 2010, from ietf

Diameter Mobile IPv6: Support for Home Agent to Diameter Server Interaction โœจ

RFC 5778 ๐ŸŽ€ is the paper trail for how a Mobile IPv6 home agent and a Diameter server get to know each other. Here's the header info, bestie:

  • Number: RFC 5778 ๐Ÿ“„
  • Category: Standards Track ๐Ÿ‘‘
  • Date: February 2010 ๐Ÿ—“๏ธ
  • ISSN: 2070-1721
  • Editor: J. Korhonen, Ed. โœ๏ธ
  • Other authors: H. Tschofenig, J. Bournelle, G. Giaretta, M. Nakhjiri ๐Ÿซถ
  • Organizations: Nokia Siemens Networks, Orange Labs, Qualcomm, Motorola ๐Ÿข
  • Obsoletes / Updates: nothing listed in the header, so it doesn't replace or update any other RFC ๐Ÿ’…

Abstract

Okay so ๐Ÿฆ‹ Mobile IPv6 deployments might want to get themselves set up automatically, and the way they do that is by having the home agent talk to the Diameter server of the Mobile Service Provider. This document is the rulebook for that conversation between a Mobile IP home agent and a Diameter server. ๐Ÿงš

It covers the home agent-to-Diameter-server chat for when the mobile node authenticates with either the Internet Key Exchange v2 protocol plus the Extensible Authentication Protocol, or the Mobile IPv6 Authentication Protocol. ๐Ÿ” On top of authentication and authorization, it also spells out how Mobile IPv6-specific parameters get configured and how accounting works. Main character energy ๐Ÿ’–


Status of This Memo

This is an Internet Standards Track document ๐Ÿ‘‘.

It's a product of the Internet Engineering Task Force (IETF), so it reflects what the IETF community agreed on. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). ๐ŸŒธ If you want more on Internet Standards, check Section 2 of RFC 5741 ๐Ÿ“š.

For the current status, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc5778 ๐Ÿ”—.


Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved ยฉ๏ธ.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info), as they stood on the publication date. Read those carefully, because they spell out your rights and restrictions for this document ๐Ÿง. Any Code Components pulled out of this document have to include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, just like the Simplified BSD License says ๐Ÿ’€.


Table of Contents ๐Ÿ“–

1. Introduction ....................................................4
2. Terminology .....................................................6
3. Application Identifiers .........................................6
4. Protocol Description ............................................7
   4.1. Support for Mobile IPv6 with IKEv2 and EAP .................7
   4.2. Support for the Mobile IPv6 Authentication Protocol .......10
   4.3. Mobile IPv6 Session Management ............................11
        4.3.1. Session-Termination-Request ........................11
        4.3.2. Session-Termination-Answer .........................11
        4.3.3. Abort-Session-Request ..............................12
        4.3.4. Abort-Session-Answer ...............................12
   4.4. Accounting for Mobile IPv6 Services .......................12
        4.4.1. Accounting-Request .................................13
        4.4.2. Accounting-Answer ..................................13
5. Command Codes ..................................................13
   5.1. Command Code for Mobile IPv6 with IKEv2 and EAP ...........13
        5.1.1. Diameter-EAP-Request ...............................13
        5.1.2. Diameter-EAP-Answer ................................14
   5.2. Command Codes for Mobile IPv6 Authentication
        Protocol Support ..........................................15
        5.2.1. MIP6-Request .......................................16
        5.2.2. MIP6-Answer ........................................17
6. AVPs ...........................................................18
   6.1. User-Name AVP .............................................21
   6.2. Service-Selection AVP .....................................21
   6.3. MIP-MN-AAA-SPI AVP ........................................21
   6.4. MIP-MN-HA-SPI AVP .........................................22
   6.5. MIP-Mobile-Node-Address AVP ...............................22
   6.6. MIP6-Agent-Info AVP .......................................22
   6.7. MIP-Careof-Address AVP ....................................23
   6.8. MIP-Authenticator AVP .....................................23
   6.9. MIP-MAC-Mobility-Data AVP .................................23
   6.10. MIP-Session-Key AVP ......................................23
   6.11. MIP-MSA-Lifetime AVP .....................................23
   6.12. MIP-MN-HA-MSA AVP ........................................24
   6.13. MIP-Algorithm-Type AVP ...................................24
   6.14. MIP-Replay-Mode AVP ......................................24
   6.15. MIP6-Feature-Vector AVP ..................................25
   6.16. MIP-Timestamp AVP ........................................25
   6.17. QoS-Capability AVP .......................................25
   6.18. QoS-Resources AVP ........................................25
   6.19. Chargeable-User-Identity AVP .............................25
   6.20. MIP6-Auth-Mode AVP .......................................25
   6.21. Accounting AVPs ..........................................26
7. Result-Code AVP Values .........................................27
   7.1. Success ...................................................27
   7.2. Permanent Failures ........................................27
8. AVP Occurrence Tables ..........................................27
   8.1. DER, DEA, MIR, and MIA AVP/Command-Code Table .............28
   8.2. Coupled Accounting Model AVP Table ........................28
9. IANA Considerations ............................................29
   9.1. Command Codes .............................................29
   9.2. AVP Codes .................................................29
   9.3. Result-Code AVP Values ....................................30
   9.4. Application Identifier ....................................30
   9.5. Namespaces ................................................30
10. Security Considerations .......................................31
11. Acknowledgements ..............................................31
12. References ....................................................32
   12.1. Normative References .....................................32
   12.2. Informative References ...................................33

1. Introduction ๐Ÿฆ‹

okay so, running Mobile IPv6 [RFC3775] means the mobile node (MN) has to own a home address AND have a home agent (HA) assigned to it ๐Ÿ . The MN needs to register with that HA so it stays reachable and mobile whenever it wanders away from its home link โœˆ๏ธ. That registration might need IPsec security associations (SAs) and crypto material set up between the MN and the HA ๐Ÿ”. Or the registration can be secured with a mobility message authentication option instead, which lets an MN use IPv6 mobility without needing an IPsec SA with its HA. Gathering the home address, HA address, and keying material all together is generally called the Mobile IPv6 bootstrapping problem [RFC4640]. This spec's whole purpose is Diameter support for the conversation between the HA and the Authentication, Authorization, and Accounting (AAA) server ๐Ÿ’…. It satisfies the requirements from [RFC5637] for the bootstrapping problem in the split scenario [RFC5026], and it also specifies Diameter support for the Authentication Protocol for Mobile IPv6 [RFC4285]. The Diameter support here also applies to Dual Stack Mobile IPv6 [RFC5555] โœจ.

From a Mobility Service Provider (MSP) point of view, it's super important to verify that the MN is authenticated and authorized to use Mobile IPv6 service, and that it gets accounted for too ๐Ÿงพ. Only once the MN passes authentication and authorization does the MSP let the Mobile IPv6 parameters get bootstrapped. So, before the HA processes any Mobile IPv6 registrations, it helps authenticate the MN to confirm who it really is ๐Ÿ•ต๏ธโ€โ™€๏ธ. The HA also takes part in the Mobile IPv6 authorization process that runs through the Diameter infrastructure. And because the HA is the one doing the traffic forwarding, it may also do accounting for the Mobile IPv6 service given to the MN ๐Ÿ“Š.

This document enables the following functionality:

  • Authentication: The MN's identity needs to be verified. As a Diameter client supporting the new Diameter Mobile IPv6 application, the HA may need to support more than one authentication type, depending on the environment ๐Ÿ”‘. The AAA server does the authenticating, but the HA still feels it, because it needs different sets of command codes for the different authentication procedures.
  • Authorization: The HA has to verify that the user is authorized for Mobile IPv6 service, with help from the MSP Diameter servers ๐ŸŽŸ๏ธ. This happens through new Diameter applications built specifically for Mobile IPv6 authorization decisions. This document defines the required AAA procedures and requires the HA to support them and to take part in this authorization signaling.
  • Accounting: For accounting purposes and capacity planning, the HA is required to send accounting reports to the Diameter infrastructure, so it also supports the related Diameter accounting procedures ๐Ÿ“ˆ.
  • Session Management: Managing the mobility services may mean the Diameter server or the HA has to end the Mobile IPv6 service before the binding expires โฐ. This document defines procedures for AAA-based session management.

Figure 1 shows the reference architecture for this document ๐Ÿ—บ๏ธ.

                                        +--------+
                                        |Diameter|
                                        |Server  |
                                        +--------+
                                            ^
                                   Back-End | Diameter Mobile IPv6
                                   Protocol | HA<->AAA Server
                                   Support  | Interaction
                                            | (this document)
                                            v
    +---------+                      +---------------+
    | Mobile  |  Front-End Protocol  |Home Agent /   |
    | Node    |<-------------------->|Diameter Client|
    +---------+  IKEv2 or RFC 4285   +---------------+

Figure 1: Architecture Overview

Mobile IPv6 signaling between the MN and the HA can be protected in two different ways: with IPsec, or with the Authentication Protocol for Mobile IPv6 [RFC4285] ๐Ÿ›ก๏ธ. Each of these two approaches has several different authentication and key exchange solutions available. When IPsec protects the Mobile IPv6 signaling messages, Internet Key Exchange v2 (IKEv2) is used [RFC4877] to set up the IPsec SAs. IKEv2 supports EAP-based (Extensible Authentication Protocol) initiator authentication, certificates, and pre-shared secrets ๐ŸŽ€. The Authentication Protocol for Mobile IPv6, on the other hand, uses a mechanism that's very similar to the one used for protecting Mobile IPv4 signaling messages.

Being able to use different credentials and methods to authenticate the MN affects the AAA interactions between the HA (acting as a Diameter client) and the Diameter server ๐ŸŒˆ. This specification is only limited to the following MN authentication methods:

  • IKEv2 usage with EAP
  • Mobile IPv6 Authentication Protocol

New authentication mechanisms may be added later by separate specifications ๐ŸŒธ.

For accounting of the Mobile IPv6 services provided to the MN, this specification uses the Diameter base protocol accounting defined in [RFC3588] ๐Ÿงพ.

2. Terminology ๐Ÿ“–

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] ๐Ÿง .

The Mobile IPv6 bootstrapping terminology comes from [RFC4640]. This document also defines some extra terms:

Authentication, Authorization, and Accounting (AAA):

AAA protocol based on Diameter [RFC3588] with required EAP support [RFC4072] ๐Ÿ”.

Home AAA (AAAH):

An authentication, authorization, and accounting server located in the user's home network, i.e., in the home realm ๐Ÿก.

3. Application Identifiers ๐Ÿชช

This specification defines two new Diameter applications and their respective Application Identifiers ๐Ÿ’œ:

   Diameter Mobile IPv6 IKE   (MIP6I)  7
   Diameter Mobile IPv6 Auth  (MIP6A)  8

The MIP6I Application Identifier is used when the MN is authenticated and authorized using IKEv2 ๐Ÿ”‘. The MIP6A Application Identifier is used when the MN is authenticated and authorized using the Mobile IPv6 Authentication Protocol ๐Ÿช„.

Mobile IPv6-related accounting information generated by the HA uses either the MIP6I or the MIP6A Application Identifier when the coupled accounting model is in use ๐Ÿง. The Diameter Base Accounting Application Identifier (value of 3) is used when the split accounting model is in use. Check out Section 4.4 for more info on the accounting models ๐Ÿ‘€.

4. Protocol Description ๐Ÿงš

4.1. Support for Mobile IPv6 with IKEv2 and EAP

okay so the MN and the HA use IKEv2 with EAP, and that's how the AAA gets to authenticate the MN ๐Ÿซถ bestie, we're literally reusing the Diameter EAP application logic and procedures from [RFC4072], so no reinventing the wheel. ngl this part is so clean. EAP methods that do not establish a shared key SHOULD NOT be used, because they're open to a bunch of man-in-the-middle attacks, as covered in Section 2.16 and Section 5 of [RFC4306] ๐Ÿ™ˆ and on top of that, Mobile IPv6 bootstrapping AVPs get added to the EAP application commands ๐Ÿ’…

Figure 2 shows the message flow for the authentication phase when EAP is used ๐Ÿ‘€ the MN talks to the HA using the conventions from [RFC4306], and the HA talks to the Diameter server using the conventions from [RFC4072]. iykyk ๐Ÿฆ‹

    Mobile                           Home                      Diameter
    Node                             Agent                     Server
     |                                 |                          |
     | HDR, SAi1, KEi, Ni  (1)         |                          |
     |-------------------------------->|                          |
     |                                 |                          |
     | HDR, SAr1, KEr, Nr, [CERTREQ](2)|                          |
     |<--------------------------------|                          |
     |                                 |                          |
     | HDR, SK{IDi,[CERTREQ,] [IDr,]   |                          |
     | [CP(CFG_REQUEST),]              |                          |
     | SAi2, TSi, TSr} (3)             | DER (EAP-Response) (4) + |
     |-------------------------------->| MIP6 Bootstrapping AVPs  |
     |                                 |------------------------->|
     |                                 |                          |
     |                                 | DEA (EAP-Request) (5)    |
     | HDR, SK{IDr, [CERT,] AUTH, EAP} |<-------------------------|
     |<------------------------------- |                          |
     |                                 |                          |
     | HDR, SK{EAP}                    |                          |
     |-------------------------------->| DER (EAP-Response)       |
     |                                 |------------------------->|
     |                                 |                          |
     |                                 | DEA (EAP-Request)        |
     | HDR, SK{EAP-Request}            |<-------------------------|
     |<--------------------------------|                          |
     |                                 |                          |
     | HDR, SK{EAP-Response}           |                          |
     |-------------------------------->| DER (EAP-Response)       |
     |                                 |------------------------->|
     :               ...               :          ...             :
     |                                 |                          |
     |                                 | DEA (EAP-Success) +      |
     |                                 | MIP6 Bootstrapping AVPs  |
     | HDR, SK{EAP-Success}            |<-------------------------|
     |<--------------------------------|                          |
     |                                 |                          |
     | HDR, SK{AUTH}                   |                          |
     |-------------------------------->|                          |
     |                                 |                          |
     | HDR, SK{AUTH, [CP(CFG_REPLY,]   |                          |
     | SAr2, TSi, TSr}                 |                          |
     |<--------------------------------|                          |
     |                                 |                          |
          Figure 2: Mobile IPv6 Bootstrapping Using IKEv2 and EAP

the MN and the HA kick things off with an IKE_SA_INIT exchange ๐Ÿงš this is where the crypto algorithms get negotiated, and nonces and Diffie-Hellman parameters get swapped. then message (3) starts the IKE_AUTH phase, and this second phase is the big one โœจ it authenticates the earlier messages, exchanges identities and certificates, and sets up the first CHILD_SA. the MN (as the IKEv2 initiator) and the HA (as the IKEv2 responder) mutually authenticate each other here. the user/MN's identity lives in the IDi field, and if the MN wants to authenticate via EAP, it just leaves out the AUTH field in message (3) (see Section 2.16 of [RFC4306]). slay, simple as that ๐Ÿ’–

as part of authentication, the MN MAY request a home address or a home prefix, or suggest one (see [RFC4877]), by putting a CFG_REQUEST payload in message (3) ๐ŸŒธ

the HA pulls the IDi field out of message (3) and sends a Diameter-EAP-Request (DER) message (4) to the authenticating Diameter server ๐Ÿ“จ the EAP-Payload AVP holds an EAP-Response/Identity with that identity inside. this message gets routed to the MN's Diameter server/EAP server. the server picks the EAP method and answers with a Diameter-EAP-Answer (DEA) message. depending on which EAP method got picked, a bunch of DER and DEA messages carry the method-specific back-and-forth between the MN and the Diameter server/EAP server ๐Ÿ”ฅ

at the end of EAP authentication, the Diameter server shares the result in the Result-Code AVP and includes the matching EAP packet (EAP Success or EAP Failure) ๐Ÿ‘‘ the last IKEv2 message from the HA carries the home address or the home prefix. if it's a home prefix, a CREATE_CHILD_SA exchange is needed to set up the IPsec SAs for Mobile IPv6 signaling ๐ŸŽ€

in some deployments, the HA might also act as an IKEv2 responder for a conventional IPsec VPN access ๐ŸŒˆ the tricky part is that the IKEv2 responder may not know whether IKEv2 is being used for Mobile IPv6 service or for IPsec VPN access service ๐Ÿ˜ญ a network operator needs to be aware of this limitation. one fix that IKEv2 already supports is using different responder identities depending on whether the box is acting as a conventional IPsec VPN gateway or as an HA. the MN can then say which responder type it wants by using the right IDr payload in the IKE_AUTH message ๐Ÿฆ‹

finally, when the HA gets a Binding Update (BU), it authenticates and authorizes the MN. it is RECOMMENDED that the HA sends an accounting request message every time it receives a BU ๐Ÿซถ

4.2. Support for the Mobile IPv6 Authentication Protocol

Figure 3 shows the message sequence between the MN, the HA, and the Diameter server during registration when the Mobile IPv6 Authentication Protocol is used ๐Ÿ’… a BU and a Binding Acknowledgement (BA) message are used in the binding registration process.

when the HA receives a BU, that kicks off a MIP6-Request to the Diameter server. the Diameter server replies with a MIP6-Answer. the HA may assign a home address to the MN and pass it along to the Diameter server in the MIP-Mobile-Node-Address AVP ๐ŸŒธ

according to [RFC4285], the MN uses the Mobile Node Identifier Option, specifically the MN-NAI mobility option (as defined in [RFC4283]), to identify itself ๐Ÿงš the HA MUST copy the MN-NAI mobility option value into the User-Name AVP in the subsequent request messages ๐Ÿ“

the procedure in this specification for the Mobile IPv6 Authentication Protocol is only needed for the first BU the HA gets for which it doesn't already have a security association. when the HA gets later BUs, it processes them locally ๐Ÿ  it is RECOMMENDED that the HA sends an accounting request message every time it receives a Binding Update. however, the HA MAY re-authorize the MN with the Diameter server at any time, depending on the deployment and local policy โœจ

this specification assumes that when the Mobile IPv6 Authentication Protocol is used, the MN-AAA option is included in the BU as defined in [RFC4285], and the Diameter server computes the required session keys after it has successfully authenticated the MN ๐Ÿ” computing the session keys is out of scope for this specification. other possible ways of using the Mobile IPv6 Authentication Protocol are also out of scope, and they would need a new specification to describe the detailed behavior of the HA-AAAH interface and the corresponding session key derivation ๐Ÿ™ˆ

    Mobile                                Home                Diameter
    Node                                  Agent                 Server
      |                                     |                     |
      |                                     | MIP6-Request + MIP6 |
      |       Binding Update                | Bootstrapping AVPs  |
      |------------------------------------>|-------------------->|
      | (Mobile Node Identifier Option,     |                     |
      |  Mobility Message Replay Protection |                     |
      |  Option, Authentication Option)     |                     |
      |                                     |                     |
      |                                     | MIP6-Answer + MIP6  |
      |       Binding Acknowledgement       | Bootstrapping AVPs  |
      |<------------------------------------|<--------------------|
      | (Mobile Node Identifier Option      |                     |
      |  Mobility Message Replay Protection |                     |
      |  Option, Authentication Option)     |                     |
        Figure 3: Mobile IPv6 Bootstrapping Using the Mobile IPv6
                         Authentication Protocol

4.3. Mobile IPv6 Session Management

the Diameter server may maintain state, or it may be stateless ๐ŸŒˆ this is shown by the Auth-Session-State AVP (or by its absence). the HA MUST support the Authorization Session State Machine defined in [RFC3588] ๐Ÿ’œ

this specification assumes that each SA created between the MN and the HA, either as the result of a successful IKEv2 negotiation or a Mobile IPv6 Authentication Protocol exchange, corresponds to one Diameter session. in the IKEv2 case, we specifically mean the IKE SA that got created ๐ŸŽ€

4.3.1. Session-Termination-Request

the Session-Termination-Request (STR) message [RFC3588] is sent by the HA to tell the Diameter server that an authorized session is ending ๐Ÿ›‘ this means the HA MUST terminate the corresponding Mobile IPv6 binding and also terminate the corresponding SA ๐Ÿ’€

4.3.2. Session-Termination-Answer

the Session-Termination-Answer (STA) message [RFC3588] is sent by the Diameter server to acknowledge that the session has been terminated โœ…

4.3.3. Abort-Session-Request

the Abort-Session-Request (ASR) message [RFC3588] is sent by the Diameter server to the HA to terminate the authorized session ๐Ÿšจ this fulfills one of the requirements described in [RFC5637]. when the HA receives the ASR message, it MUST terminate the corresponding SA. after that, the HA MUST take further actions to terminate the corresponding Mobile IPv6 binding ๐Ÿ˜ค

4.3.4. Abort-Session-Answer

the Abort-Session-Answer (ASA) message [RFC3588] is sent by the home agent in response to an ASR message ๐Ÿซถ

4.4. Accounting for Mobile IPv6 Services ๐Ÿ’–

okay so the HA MUST be able act as a Diameter client that collects the accounting records needed for service control and charging ๐Ÿ’… it's giving bookkeeper energy, honestly. The HA MUST support the accounting procedures (specifically the command codes mentioned below) and the Accounting Session State Machine as defined in [RFC3588] ๐Ÿงพ The command codes that get exchanged between the HA and the Diameter server for accounting purposes are listed in the subsections right after this.

The Diameter application design guideline [DIME-APP] defines two separate models for accounting, and they're lowkey the main thing to know here โœจ

Split accounting model:

Okay so in this model, the accounting messages use the Diameter Base Accounting Application Identifier (value of 3) ๐Ÿฆ‹ Since accounting gets treated as its own independent application, accounting commands can be routed separately from everything else, so the accounting messages usually end up in a central accounting server. The Mobile IPv6 Diameter application doesn't define any unique accounting commands of its own, which is why this is the preferred choice. It lets several applications share one centralized accounting setup, and that's iconic ๐Ÿ‘‘

Coupled accounting model:

In this model, the accounting messages use either the MIP6I or the MIP6A Application Identifiers ๐ŸŒธ This means accounting messages get routed like any other Mobile IPv6 application messages. The catch is that the Diameter server in charge of the Mobile IPv6 application then has to handle the accounting records itself (for example, by sending them along to a proper accounting server) ๐Ÿ™ˆ

As mentioned above, the preferred choice is the split accounting model, so the Diameter Base Accounting Application Identifier (value of 3) is what gets used for accounting messages. Main character energy ๐Ÿ’œ

4.4.1. Accounting-Request

The Accounting-Request command [RFC3588] is sent by the HA to the Diameter server to exchange accounting information about the MN with the Diameter server. It's the "hey, here's the receipts" message ๐Ÿงพโœจ

4.4.2. Accounting-Answer

The Accounting-Answer command [RFC3588] is sent by the Diameter server to the HA to acknowledge an Accounting-Request. Basically the server going "got it, bestie" ๐Ÿซถ


5. Command Codes ๐ŸŽ€

5.1. Command Code for Mobile IPv6 with IKEv2 and EAP ๐Ÿ”

For using Mobile IPv6 with IKEv2 and EAP, this document reuses the Diameter EAP application [RFC4072] commands: Diameter-EAP-Request (DER) and Diameter-EAP-Answer (DEA) ๐ŸŒˆ This spec extends the existing DER and DEA command ABNFs with a bunch of AVPs to support Mobile IPv6 split scenario bootstrapping. Other than the new AVPs and the matching additions to the command ABNFs, the Diameter EAP application command ABNFs stay exactly the same ๐Ÿ’– The ABNF language is defined in [RFC3588].

Command-Name          Abbrev. Code Reference Application
---------------------------------------------------------------------
Diameter-EAP-Request  DER     268  RFC 4072  Diameter Mobile IPv6 IKE
Diameter-EAP-Answer   DEA     268  RFC 4072  Diameter Mobile IPv6 IKE

Figure 4: Command Codes โœจ

5.1.1. Diameter-EAP-Request

The Diameter-EAP-Request (DER) message is the one with the Command-Code field set to 268 and the 'R' bit set in the Command Flags field ๐Ÿ“จ The HA sends it to the Diameter server to kick off a Mobile IPv6 service authentication and authorization procedure. The Application-ID field of the Diameter Header MUST be set to the Diameter Mobile IPv6 IKE Application ID (value of 7) ๐ŸŽฏ The grouped AVP has the following modified ABNF (as defined in [RFC3588]):

<Diameter-EAP-Request> ::= < Diameter Header: 268, REQ, PXY >
                           < Session-Id >
                           { Auth-Application-Id }
                           { Origin-Host }
                           { Origin-Realm }
                           { Destination-Realm }
                           { Auth-Request-Type }
                           [ Destination-Host ]
                           [ NAS-Identifier ]
                           [ NAS-IP-Address ]
                           [ NAS-IPv6-Address ]
                           [ NAS-Port-Type ]
                           [ User-Name ]
                           ...
                           { EAP-Payload }
                           ...
                           [ MIP6-Feature-Vector ]
                           [ MIP6-Agent-Info ]
                         *2[ MIP-Mobile-Node-Address ]
                           [ Chargeable-User-Identity ]
                           [ Service-Selection ]
                           [ QoS-Capability ]
                         * [ QoS-Resources ]
                           ...
                         * [ AVP ]

Okay so the Mobile IPv6 bootstrapping AVPs only show up in the first DER message the HA sends ๐Ÿ™Œ The later DER messages that the EAP method needs don't have to include any Mobile IPv6 bootstrapping AVPs at all. The MN gets both authenticated and authorized for the mobility service during the EAP authentication, so the Auth-Request-Type AVP MUST be set to the value AUTHORIZE_AUTHENTICATE ๐Ÿ’…

5.1.2. Diameter-EAP-Answer

The Diameter-EAP-Answer (DEA) message has the Command-Code field set to 268 and the 'R' bit cleared in the Command Flags field ๐Ÿฆ‹ It gets sent back in response to the Diameter-EAP-Request (DER) message. The Application-Id field in the Diameter message header MUST be set to the Diameter Mobile IPv6 IKE Application-Id (value of 7) ๐ŸŒธ If the Mobile IPv6 authentication procedure worked out, then the response MAY include any set of bootstrapping AVPs ๐ŸŽ€

<Diameter-EAP-Answer> ::= < Diameter Header: 268, PXY >
                          < Session-Id >
                          { Auth-Application-Id }
                          { Auth-Request-Type }
                          { Result-Code }
                          { Origin-Host }
                          { Origin-Realm }
                          [ User-Name ]
                          [ EAP-Payload ]
                          [ EAP-Reissued-Payload ]
                          [ EAP-Master-Session-Key ]
                          [ EAP-Key-Name ]
                          [ Multi-Round-Time ]
                          ...
                        *2[ MIP-Mobile-Node-Address ]
                          [ MIP6-Feature-Vector ]
                          [ MIP6-Agent-Info ]
                          [ Service-Selection ]
                        * [ QoS-Resources ]
                          [ Chargeable-User-Identity ]
                          ...
                        * [ AVP ]

If both the EAP-based authentication and the authorization for the mobility service succeed, then the Mobile IPv6 bootstrapping AVPs are included in the last DEA message, the one that also carries the EAP-Success EAP payload ๐Ÿฅณ The other DEA messages that the used EAP method needs don't include any Mobile IPv6 bootstrapping AVPs.

5.2. Command Codes for Mobile IPv6 Authentication Protocol Support ๐Ÿ›ก๏ธ

This section defines the commands used for supporting the Mobile IPv6 Authentication Protocol ๐Ÿ’œ

There are multiple ways to deploy and use the Mobile IPv6 Authentication Protocol, especially when it comes to the associated AAA interactions ๐Ÿ™ˆ To support multiple deployment models, this specification defines the MIP6-Auth-Mode AVP, which in the request message tells the mode that the HA supports. This specification also defines a method that requires using the MN-AAA option with the Mobile IPv6 Authentication Protocol ๐Ÿ”ฅ

Command-Name       Abbrev. Code  Reference Application
---------------------------------------------------------------------
MIP6-Request       MIR     325   5.3.1     Diameter Mobile IPv6 Auth
MIP6-Answer        MIA     325   5.3.2     Diameter Mobile IPv6 Auth

Command Codes โœจ

5.2.1. MIP6-Request

The MIP6-Request (MIR) message is the one with the Command-Code field set to 325 and the 'R' bit set in the Command Flags field ๐Ÿ“ฌ The HA sends it, acting as a Diameter client, to request the authentication and authorization of an MN.

Although the HA gives the Diameter server replay protection-related information, the HA is still responsible for the replay protection ๐Ÿง  The message format is shown below.

<MIP6-Request> ::= < Diameter Header: 325, REQ, PXY >
                   < Session-ID >
                   { Auth-Application-Id }
                   { User-Name }
                   { Destination-Realm }
                   { Origin-Host }
                   { Origin-Realm }
                   { Auth-Request-Type }
                   [ Destination-Host ]
                   [ Origin-State-Id ]
                   [ NAS-Identifier ]
                   [ NAS-IP-Address ]
                   [ NAS-IPv6-Address ]
                   [ NAS-Port-Type ]
                   [ Called-Station-Id ]
                   [ Calling-Station-Id ]
                   [ MIP6-Feature-Vector ]
                   { MIP6-Auth-Mode }
                   [ MIP-MN-AAA-SPI ]
                   [ MIP-MN-HA-SPI ]
                1*2{ MIP-Mobile-Node-Address }
                   { MIP6-Agent-Info }
                   { MIP-Careof-Address }
                   [ MIP-Authenticator ]
                   [ MIP-MAC-Mobility-Data ]
                   [ MIP-Timestamp ]
                   [ QoS-Capability ]
                 * [ QoS-Resources ]
                   [ Chargeable-User-Identity ]
                   [ Service-Selection ]
                   [ Authorization-Lifetime ]
                   [ Auth-Session-State ]
                 * [ Proxy-Info ]
                 * [ Route-Record ]
                 * [ AVP ]

If the MN is both authenticated and authorized for the mobility service, then the Auth-Request-Type AVP is set to the value AUTHORIZE_AUTHENTICATE ๐ŸŽ‰ That happens when the MIP6-Auth-Mode is set to the value MIP6_AUTH_MN_AAA.

5.2.2. MIP6-Answer

The MIP6-Answer (MIA) message is the one with the Command-Code field set to 325 and the 'R' bit cleared in the Command Flags field ๐Ÿ’Œ The Diameter server sends it in response to the MIP6-Request message.

The User-Name AVP MAY be included in the MIA if it's present in the MIR ๐ŸŒท The Result-Code AVP MAY contain one of the values defined in Section 7, in addition to the values defined in [RFC3588] โœจ

An MIA message with the Result-Code AVP set to DIAMETER_SUCCESS MUST include the MIP-Mobile-Node-Address AVP ๐Ÿซถ The message format is shown below.

<MIP6-Answer> ::= < Diameter Header: 325, PXY >
                  < Session-Id >
                  { Auth-Application-Id }
                  { Result-Code }
                  { Origin-Host }
                  { Origin-Realm }
                  { Auth-Request-Type }
                  [ User-Name ]
                  [ Authorization-Lifetime ]
                  [ Auth-Session-State ]
                  [ Error-Message ]
                  [ Error-Reporting-Host ]
                  [ Re-Auth-Request-Type ]
                  [ MIP6-Feature-Vector ]
                  [ MIP-Agent-Info ]
                *2[ MIP-Mobile-Node-Address ]
                  [ MIP-MN-HA-MSA ]
                * [ QoS-Resources ]
                  [ Chargeable-User-Identity ]
                  [ Service-Selection ]
                  [ Origin-State-Id ]
                * [ Proxy-Info ]
                * [ Redirect-Host ]
                  [ Redirect-Host-Usage ]
                  [ Redirect-Max-Cache-Time ]
                * [ Failed-AVP ]
                * [ AVP ]

6. AVPs โœจ

okay so, to make [RFC4285] and [RFC4877] actually work, we need the AVPs in the subsections below ๐Ÿ’… bestie, we're reusing [RFC3588], [RFC4004], and [RFC4005] AVPs wherever we can, and we're not changing what they already mean. no reinventing the wheel ๐Ÿซถ

                                             +--------------------+
                                             |   AVP Flag Rules   |
                                             +----+---+------+----+----+
                   AVP  Defined              |    |   |SHOULD|MUST|MAY |
   Attribute Name  Code in        Value Type |MUST|MAY| NOT  | NOT|Encr|
  +------------------------------------------+----+---+------+----+----+
  |MIP6-Feature-   124  RFC 5447  Unsigned64 |  M | P |      | V  | Y  |
  |  Vector                                  |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Mobile-                               |  M | P |      | V  | Y  |
  |  Node-Address  333  RFC 4004  Address    |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP6-Agent-Info 486  RFC 5447  Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |User-Name       1    RFC 3588  UTF8String |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |Service-        493  6.2       UTF8String |  M | P |      | V  | Y  |
  |  Selection                               |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |QoS-Capability  578  Note 1    Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |QoS-Resources   508  Note 1    Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-MN-HA-MSA   492  6.12      Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |Chargeable-User-               OctetString|  M | P |      | V  | Y  |
  |  Identity      89   6.19                 |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+

AVPs for Mobile IPv6 IKE Application

Note 1: The QoS-Capability and the QoS-Resource AVPs are defined in Sections 4.1 and 4.3 of [RFC5777].

                                             +--------------------+
                                             |   AVP Flag Rules   |
                                             +----+---+------+----+----+
                   AVP  Section              |    |   |SHOULD|MUST|MAY |
   Attribute Name  Code Defined   Value Type |MUST|MAY| NOT  | NOT|Encr|
  +------------------------------------------+----+---+------+----+----+
  |MIP6-Feature-   124  RFC 5447  Unsigned64 |  M | P |      | V  | Y  |
  |  Vector                                  |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |User-Name       1    RFC 3588  UTF8String |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |Service-        493  6.2       UTF8String |  M | P |      | V  | Y  |
  |  Selection                               |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-MN-AAA-SPI  341  RFC 4004  Unsigned32 |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-MN-HA-SPI   491  6.4       Unsigned32 |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Mobile-     333  RFC 4004  Address    |  M | P |      | V  | Y  |
  |  Node-Address                            |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP6-Agent-Info 486  RFC 5447  Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Careof-     487  6.7       Address    |  M | P |      | V  | Y  |
  |  Address                                 |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-            488  6.8       OctetString|  M | P |      | V  | Y  |
  |  Authenticator                           |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-MAC-        489  6.9       OctetString|  M | P |      | V  | Y  |
  |  Mobility-Data                           |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Session-Key 343  6.10      OctetString|  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-MSA-        367  RFC 4004  Unsigned32 |  M | P |      | V  | Y  |
  |  Lifetime                                |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-MN-HA-MSA   492  6.12      Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Algorithm-  345  6.13      Enumerated |  M | P |      | V  | Y  |
  |  Type                                    |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Replay-Mode 346  6.14      Enumerated |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |MIP-Timestamp   490  6.16      OctetString|  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |QoS-Capability  578  Note 1    Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |QoS-Resources   508  Note 1    Grouped    |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |Chargeable-User-               OctetString|  M | P |      | V  | Y  |
  |  Identity      89   6.19                 |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+
  |MIP6-Auth-Mode  494  6.20      Enumerated |  M | P |      | V  | Y  |
  +------------------------------------------+----+---+------+----+----+
  |Rest of the AVPs     RFC 3588             |  M | P |      | V  | Y  |
  |in the MIR & MIA     RFC 4005             |    |   |      |    |    |
  |excluding *[AVP]                          |    |   |      |    |    |
  +------------------------------------------+----+---+------+----+----+

AVPs for the Mobile IPv6 Auth Application

Note 1: The QoS-Capability and the QoS-Resource AVPs are defined in Sections 4.1 and 4.3 of [RFC5777].


6.1. User-Name AVP ๐Ÿฆ‹

okay this one is simple and iconic ๐Ÿ’– the User-Name AVP (AVP Code 1) is a UTF8String, and it holds a Network Access Identifier (NAI) pulled from the MN-NAI mobility option in the received BU message. alternatively, the NAI can be pulled from the IKEv2 IDi payload in the IKE_AUTH message sent by the IKE initiator โœจ

6.2. Service-Selection AVP ๐ŸŽ€

the Service-Selection AVP (AVP Code 493) is a UTF8String that names the service or the external network the mobility service should be tied to ๐Ÿงš in the scope of this specification, the value can come from the IKEv2 IDr payload, if it's there in the IKE_AUTH message sent by the IKE initiator. or, if the Mobile IPv6 Authentication Protocol is being used, the AVP holds the string from the Service Selection Mobility Option [RFC5149], if it's in the received BU. future specifications may define more ways to fill this AVP with the info it needs ๐ŸŒˆ

the AVP can also show up in messages going from the Diameter server to the Diameter client. for example, if the request didn't have a Service-Selection AVP but the MN got a default service, the Diameter server MAY return the name of that assigned default service to the HA ๐Ÿ’…

if the Service-Selection AVP is in both the request and the reply, it SHOULD carry the same service name. if the services don't match, the HA MAY treat that as an authorization failure ๐Ÿ’€

6.3. MIP-MN-AAA-SPI AVP ๐ŸŒธ

the MIP-MN-AAA-SPI AVP (AVP Code 341) is an Unsigned32 holding a Security Parameter Index (SPI) code, pulled from the Mobility Message Authentication Option in the received BU message ๐Ÿ“ this one is reused from [RFC4004], so no drama ๐Ÿซถ

when the MIP6-Auth-Mode AVP is set to MIP6_AUTH_MN_AAA, this AVP MUST be present in the MIR message ๐Ÿ”ฅ

6.4. MIP-MN-HA-SPI AVP ๐Ÿ’œ

the MIP-MN-HA-SPI AVP (AVP Code 491) is an Unsigned32 with an SPI value ๐Ÿ” it works together with other parameters to identify the security association needed to validate the Mobile IPv6 MN-HA Authentication Option โœจ

when the MIP6-Auth-Mode AVP is set to MIP6_AUTH_MN_AAA, and the Diameter server sends back a valid MIP-MN-HA-MSA AVP in the MIA message, this AVP MUST be present inside the MIP-MN-HA-MSA AVP ๐Ÿ‘‘

6.5. MIP-Mobile-Node-Address AVP ๐Ÿฆ‹

the MIP-Mobile-Node-Address AVP (AVP Code 333) is an Address type that holds the HA assigned IPv6 or IPv4 home address of the mobile node ๐ŸŒˆ

if the MIP-Mobile-Node-Address AVP has the unspecified IPv6 address (0::0) or the all-zeroes IPv4 address (0.0.0.0) in a request, then the HA expects the Diameter server to assign the home address in a later answer message ๐Ÿงš and if the Diameter server only assigns an IPv6 home network prefix to the mobile node, the lower 64 bits of the address in the MIP-Mobile-Node-Address AVP MUST be set to zero ๐Ÿ™ˆ

this AVP is reused from [RFC4004] โœจ

6.6. MIP6-Agent-Info AVP ๐ŸŒŸ

the MIP6-Agent-Info AVP (AVP Code 486) is defined in Section 4.2.1 of [RFC5447] and holds the IPv6 or IPv4 address info of the HA ๐Ÿ’– the HA address in a request is the same one from the received BU message that kicked off the authentication and authorization procedure towards the Diameter server. one use case is, e.g., telling the Diameter server about the dynamically assigned HA ๐Ÿซถ

if the MIP6-Agent-Info AVP shows up in an answer and the Result-Code AVP is DIAMETER_SUCCESS_RELOCATE_HA, the Diameter server is telling the HA it MUST start an HA switch procedure towards the MN (e.g., using the procedure defined in [RFC5142]) ๐Ÿ”ฅ if the Result-Code AVP is any other value, the HA SHOULD start the HA switch procedure towards the MN ๐Ÿ’… the address info of the assigned HA lives in the MIP6-Agent-Info AVP ๐Ÿงš

6.7. MIP-Careof-Address AVP ๐ŸŒธ

the MIP-Careof-Address AVP (AVP Code 487) is an Address type holding the IPv6 or IPv4 care-of address of the mobile node ๐Ÿ“ the HA grabs this IP address from the received BU message ๐Ÿฆ‹

6.8. MIP-Authenticator AVP ๐Ÿ’œ

the MIP-Authenticator AVP (AVP Code 488) is an OctetString with the Authenticator Data from the received BU message ๐Ÿ” the HA pulls this data out of the MN-AAA Mobility Message Authentication Option in that BU message โœจ

when the MIP6-Auth-Mode AVP is set to MIP6_AUTH_MN_AAA, this AVP MUST be present in the MIR message ๐Ÿ‘‘

6.9. MIP-MAC-Mobility-Data AVP ๐Ÿงฎ

okay so the MIP-MAC-Mobility-Data AVP (AVP Code 489) is an OctetString ๐Ÿ’œ and it carries the MAC_Mobility_Data that the HA calculates as defined in [RFC4285] for the MN-AAA Mobility Message Authentication Option. the HA does the math and this AVP is where the result lands.

when the MIP6-Auth-Mode AVP is set to the value MIP6_AUTH_MN_AAA, this AVP MUST be present in the MIR message ๐Ÿ”ฅ

6.10. MIP-Session-Key AVP ๐Ÿ”‘

the MIP-Session-Key AVP (AVP Code 343) is an OctetString, and it holds the MN-HA shared secret (aka the session key) for the matching Mobile IPv6 MN-HA authentication option. when the Diameter server computes the session key, that's where it gets placed โœจ

how the Diameter server actually computes the session key is not defined in this specification ๐Ÿ™ˆ the session key derivation is deployment specific and needs to be defined in a respective deployment-specific system specification. so it's a "check your deployment's own spec" moment bestie.

this AVP is reused from [RFC4004] ๐ŸŽ€

6.11. MIP-MSA-Lifetime AVP โณ

the MIP-MSA-Lifetime AVP (AVP Code 367) is an Unsigned32, and it represents how long (in seconds) the session key (see Section 6.10) is valid. the lifetime is the timer, and the associated session key MUST NOT be used if the lifetime has expired ๐Ÿ’€

this AVP is reused from [RFC4004] ๐Ÿฆ‹

6.12. MIP-MN-HA-MSA AVP ๐ŸŒธ

the MIP-MN-HA-MSA AVP (AVP Code 492) is Grouped, and it bundles up the session-related info for the Mobile IPv6 Authentication Protocol. here's the shape of it:

MIP-MN-HA-MSA ::= < AVP Header: 492 >
                  { MIP-Session-Key }
                  { MIP-MSA-Lifetime }
                  [ MIP-MN-HA-SPI ]
                  [ MIP-Algorithm-Type ]
                  [ MIP-Replay-Mode ]
                * [ AVP ]

the MIP-MN-HA-SPI sub-AVP inside the MIP-MN-HA-MSA grouped AVP is the one that identifies the security association needed to validate the Mobile IPv6 MN-HA Authentication Option. quick rule: if the MIP-Replay-Mode AVP is absent, that MUST be treated as no replay protection was selected ๐Ÿ™…โ€โ™€๏ธ

6.13. MIP-Algorithm-Type AVP ๐Ÿง 

the MIP-Algorithm-Type AVP (AVP Code 345) is Enumerated, and it has the Algorithm identifier for the Mobile IPv6 MN-HA Authentication Option. the Diameter server is the one that picks the algorithm type. the existing algorithm types are defined in [RFC4004], and those also fulfill the current RFC 4285 requirements. this AVP is reused from [RFC4004] ๐ŸŽ€

when the MIP6-Auth-Mode AVP is set to MIP6_AUTH_MN_AAA, and the Diameter server returns a valid MIP-MN-HA-MSA AVP in the MIA message, this AVP MUST be present inside the MIP-MN-HA-MSA AVP โœจ

6.14. MIP-Replay-Mode AVP ๐Ÿ”

the MIP-Replay-Mode AVP (AVP Code 346) is Enumerated, and it has the replay mode of the HA for authenticating the mobile node. out of all the possible replay modes defined in [RFC4004], this spec only supports these two:

       1   None
       2   Timestamp

this AVP is reused from [RFC4004] ๐Ÿ’œ

6.15. MIP6-Feature-Vector AVP ๐ŸŒˆ

the MIP6-Feature-Vector AVP (AVP Code 124) is defined in [RFC5447]. however, this specification does not define any Mobile IPv6 split scenario bootstrapping specific capability flag. so nothing new here, it's giving "already handled elsewhere" ๐Ÿ™ƒ

6.16. MIP-Timestamp AVP โฐ

the MIP-Timestamp AVP (AVP Code 490) is an OctetString, and it contains an 8-octet timestamp value (i.e., a 64-bit timestamp) from the Mobility message replay protection option, defined in [RFC4285]. the HA pulls this value out of the received BU message, if it's available ๐Ÿซถ

the HA includes this AVP in the MIR message when the MN-AAA Mobility Message Authentication Option is available in the received BU, and the Diameter server is expected to return the key material needed for calculating and validating the Mobile IPv6 MN-HA Authentication Option (and the MIP6-Auth-Mode AVP is set to the value MIP6_AUTH_MN_AAA). it's a whole chain of "if this, then that" ๐Ÿ˜ญ

6.17. QoS-Capability AVP ๐Ÿ’…

the QoS-Capability AVP is defined in [RFC5777], and it contains a list of supported Quality of Service profiles ๐ŸŒŸ

6.18. QoS-Resources AVP ๐ŸŽ€

the QoS-Resources AVP is also defined in [RFC5777], and it provides QoS and packet filtering capabilities ๐Ÿฆ‹

6.19. Chargeable-User-Identity AVP ๐Ÿงพ

the Chargeable-User-Identity AVP (AVP Code 89) is an OctetString, and it contains a unique temporary handle of the user. the Chargeable-User-Identity is defined in [RFC4372] โœจ

6.20. MIP6-Auth-Mode AVP ๐Ÿšฆ

the MIP6-Auth-Mode (AVP Code 494) is Enumerated, and it tells you which Mobile IPv6 Authentication Protocol mode is being used. this spec only defines one value, MIP6_AUTH_MN_AAA, along with the matching AAA interactions for when the MN-AAA security association is used to authenticate the Binding Update, as described in [RFC4285] ๐Ÿ‘‘

when the MIP6-Auth_Mode AVP is set to the value MIP6_AUTH_MN_AAA, the Auth-Request-Type AVP MUST be set to the value AUTHORIZE_AUTHENTICATE ๐Ÿ™Œ

if the Diameter server does NOT support the Mobile IPv6 Authentication Protocol usage mode the HA proposed, then the Diameter server MUST fail the authentication/authorization and MUST set the Result-Code AVP to the value DIAMETER_ERROR_AUTH_MODE ๐Ÿ’€

6.21. Accounting AVPs ๐Ÿ“Š

Diameter Mobile IPv6 applications, either MIP6I or MIP6A, are used in the case of the coupled account model ๐Ÿซง the Diameter Mobile IPv4 application accounting AVPs from [RFC4004] are reused in this document. the following AVPs SHOULD be included in the accounting request message:

  • Accounting-Input-Octets: Number of octets in IP packets received from the mobile node.
  • Accounting-Output-Octets: Number of octets in IP packets sent by the mobile node.
  • Accounting-Input-Packets: Number of IP packets received from the mobile node.
  • Accounting-Output-Packets: Number of IP packets sent by the mobile node.
  • Acct-Multi-Session-Id: Used to link together multiple related accounting sessions, where each session would have a unique Session-Id, but the same Acct-Multi-Session-Id AVP.
  • Acct-Session-Time: Indicates the length of the current session in seconds.
  • MIP6-Feature-Vector: The supported features for this mobility service session.
  • MIP-Mobile-Node-Address: The home address of the mobile node.
  • MIP-Agent-Info: The current home agent of the mobile node.
  • Chargeable-User-Identity: The unique temporary identity of the user. This AVP MUST be included if it is available in the home agent.
  • Service-Selection: Currently selected mobility service.
  • QoS-Resources: Assigned Quality-of-Service (QoS) resources for the mobile node.
  • QoS-Capability: The QoS capability related to the assigned QoS-Resources.
  • MIP-Careof-Address: The current care-of address of the mobile node.

7. Result-Code AVP Values โœจ

this section defines new Result-Code [RFC3588] values that MUST be supported by all Diameter implementations that conform to this specification ๐Ÿ‘‘

7.1. Success ๐Ÿฅณ

errors that fall in the Success category are used to tell a peer that a request has been successfully completed ๐ŸŽ‰

DIAMETER_SUCCESS_RELOCATE_HA (Status Code 2009)

this result code is used by the Diameter server to inform the HA that the MN MUST be switched to another HA ๐Ÿƒโ€โ™€๏ธ

7.2. Permanent Failures ๐Ÿšซ

errors in the Permanent Failures category are used to tell the peer that the request failed, and it SHOULD NOT be attempted again. bestie, don't keep knocking on that door ๐Ÿ™…โ€โ™€๏ธ

DIAMETER_ERROR_MIP6_AUTH_MODE (Status Code 5041)

this error code is used by the Diameter server to inform the peer that the requested Mobile IPv6 Authentication Protocol usage mode is not supported ๐Ÿ’”


8. AVP Occurrence Tables ๐Ÿ“‹

the following tables show the AVPs defined in this document and how often they show up in Diameter messages. AVPs that can only be present within a Grouped AVP are not in these tables, so don't look for them there ๐Ÿ™ˆ

the tables use these symbols:

  • 0: The AVP MUST NOT be present in the message.
  • 0+: Zero or more instances of the AVP MAY be present in the message.
  • 0-1: Zero or one instance of the AVP MAY be present in the message.
  • 1: One instance of the AVP MUST be present in the message.

8.1. DER, DEA, MIR, and MIA AVP/Command-Code Table ๐Ÿ’–

                                  +-----------------------+
                                  |     Command-Code      |
                                  |-----+-----+-----+-----+
   AVP Name                       | DER | DEA | MIR | MIA |
   -------------------------------|-----+-----+-----+-----+
   MIP6-Feature-Vector            | 0-1 | 0-1 | 0-1 | 0-1 |
   MIP-Mobile-Node-Address        | 1-2 | 0-2 | 1-2 | 0-2 |
   MIP-MN-AAA-SPI                 |  0  |  0  | 0-1 |  0  |
   MIP-MN-HA-SPI                  |  0  |  0  | 0-1 |  0  |
   MIP6-Agent-Info                |  1  | 0-1 |  1  | 0-1 |
   MIP-Careof-Address             |  0  |  0  | 0-1 |  0  |
   MIP-Authenticator              |  0  |  0  | 0-1 |  0  |
   MIP-MAC-Mobility-Data          |  0  |  0  | 0-1 |  0  |
   MIP-MSA-Lifetime               |  0  |  0  |  0  |  1  |
   MIP-MN-HA-MSA                  |  0  |  0  |  0  | 0-1 |
   MIP-Timestamp                  |  0  |  0  | 0-1 | 0-1 |
   User-Name                      | 0-1 | 0-1 |  1  | 0-1 |
   Service-Selection              | 0-1 | 0-1 | 0-1 | 0-1 |
   QoS-Resources                  |  0+ |  0+ |  0+ |  0+ |
   QoS-Capability                 | 0-1 |  0  | 0-1 |  0  |
   Chargeable-User-Identity       | 0-1 | 0-1 | 0-1 | 0-1 |
   MIP6-Auth-Mode                 |  0  |  0  |  1  |  0  |
                                  +-----+-----+-----+-----+

8.2. Coupled Accounting Model AVP Table ๐Ÿง

the table in this section shows which AVPs defined in this document should be present in the Accounting messages, as defined in [RFC3588] ๐ŸŽ€

                                           +-------------+
                                           | Command-Code|
                                           |------+------+
      Attribute Name                       |  ACR |  ACA |
      -------------------------------------|------+------+
      Accounting-Input-Octets              | 0-1  |  0-1 |
      Accounting-Input-Packets             | 0-1  |  0-1 |
      Accounting-Output-Octets             | 0-1  |  0-1 |
      Accounting-Output-Packets            | 0-1  |  0-1 |
      Acct-Multi-Session-Id                | 0-1  |  0-1 |
      Acct-Session-Time                    | 0-1  |  0-1 |
      MIP6-Feature-Vector                  | 0-1  |  0-1 |
      MIP6-Agent-Info                      | 0-1  |  0-1 |
      MIP-Mobile-Node-Address              | 0-2  |  0-2 |
      Event-Timestamp                      | 0-1  |   0  |
      MIP-Careof-Address                   | 0-1  |   0  |
      Service-Selection                    | 0-1  |   0  |
      QoS-Capability                       |  0+  |   0+ |
      QoS-Resources                        |  0+  |   0+ |
      Chargeable-User-Identity             | 0-1  |   0  |
      -------------------------------------|------+------+

9. IANA Considerations ๐ŸŒท

this section contains the namespaces that were either created in this specification or had their values assigned to existing namespaces managed by IANA ๐Ÿฆ‹

9.1. Command Codes ๐Ÿ’œ

IANA has allocated a command code value for the following new command from the Command Code namespace defined in [RFC3588]. see Section 5 for the assignment of the namespace in this specification ๐Ÿ”ฅ

Command Code                       | Value
-----------------------------------+------
MIP6-Request/Answer (MIR/MIA)      | 325

9.2. AVP Codes โœจ

IANA has registered the following new AVPs from the AVP Code namespace defined in [RFC3588]. ๐Ÿ’–

  • MIP-Careof-Address
  • MIP-Authenticator
  • MIP-MAC-Mobility-Data
  • MIP-Timestamp
  • MIP-MN-HA-SPI
  • MIP-MN-HA-MSA
  • Service-Selection
  • MIP6-Auth-Mode

The AVPs are defined in Section 6. ๐ŸŽ€


9.3. Result-Code AVP Values ๐ŸŒธ

IANA has allocated new values to the Result-Code AVP (AVP Code 268) namespace defined in [RFC3588]. Go to Section 7 to see how the namespace gets assigned in this spec. ๐Ÿซถ

Result-Code                                   | Value
----------------------------------------------+------
DIAMETER_SUCCESS_RELOCATE_HA                  | 2009
DIAMETER_ERROR_MIP6_AUTH_MODE                 | 5041

9.4. Application Identifier ๐Ÿฆ‹

IANA has allocated two new values, "Diameter Mobile IPv6 IKE" and "Diameter Mobile IPv6 Auth", from the Application Identifier namespace defined in [RFC3588]. Two new app IDs, bestie, we're so back! ๐Ÿ”ฅ

Application Identifier             | Value
-----------------------------------+------
Diameter Mobile IPv6 IKE   (MIP6I) |  7
Diameter Mobile IPv6 Auth  (MIP6A) |  8

9.5. Namespaces ๐Ÿงš

IANA has created a brand new registry, "MIP6 Authentication Mode Registry", for use with the enumerated MIP6-Auth-Mode AVP. It starts out with just one value, so it's giving minimalist queen energy ๐Ÿ‘‘:

Token                                        | Value    | Description
---------------------------------------------+----------+------------
MIP6_AUTH_MN_AAA                             | 1        | RFC 5778

New values get handed out using the example policies described in [RFC5226]. Specifically, new values for the MIP6-Auth-Mode AVP are assigned under the "Specification Required" policy. Value 0 (zero) is reserved, and the maximum value is 4294967295 (i.e., 2^32-1). The number line has rules, iykyk. ๐Ÿ’…


10. Security Considerations ๐Ÿ’€

Okay, bestie, this section is seriously important, so pay attention. ๐Ÿšจ

The security considerations for the Diameter interaction needed to pull off the split scenario are described in [RFC5026]. On top of that, the security considerations of the Diameter base protocol [RFC3588] and the Diameter EAP application [RFC4072] also apply to this document. Read all three or you're gonna be cooked ๐Ÿ˜ญ.

The Diameter messages might travel between the HA and the Diameter server through one or more AAA brokers or Diameter agents. When that happens, the HA-to-Diameter-server AAA communication depends on the security properties of the intermediate AAA inter-connection networks, AAA brokers, and Diameter agents (like proxies). So every middleman in that chain is part of your security story, periodt. ๐Ÿ™ˆ

Now for the Authentication Protocol for Mobile IPv6 [RFC4285]. In that case, this specification expects that the Diameter server derives the MN-HA Security Association and returns the associated session key (i.e., the MN-HA shared session key) to the HA. ๐Ÿ”‘ Here's the tea though: this specification doesn't define how the Diameter server actually derives the required keys, and neither do other IETF specifications. The details of key derivation depend on the deployment where this specification is used, so the security properties of the system depend on how that's done. Main character energy for whoever handles the keys! ๐Ÿฆ‹


11. Acknowledgements ๐Ÿซถ

The authors want to give a massive shoutout to Jari Arkko, Tolga Asversen, Pasi Eronen, Santiago Zapata Hernandez, Anders Kristensen, Avi Lior, John Loughney, Ahmad Muhanna, Behcet Sarikaya, Basavaraj Patil, Vijay Devarapalli, Lionel Morand, Domagoj Premec, Semyon Mizikovsky, and Yoshihiro Ohba for all the useful discussions. ๐Ÿ’œ Ahmad Muhanna gave a detailed review of the document in August 2007. Pasi Eronen dropped detailed comments and text proposals during the IESG review, which helped improve this document a ton. โœจ

They also want to thank their Area Director, Dan Romascanu, for his support. ๐ŸŒˆ

Hannes Tschofenig wants to thank the European Commission for co-funding the ENABLE project, where this work was partly developed. ๐Ÿ‡ช๐Ÿ‡บ

Julien Bournelle wants to thank GET/INT, since he started this work while he was working for them. ๐Ÿ“

Madjid Nakhjiri wants to thank Huawei USA, since most of his contributions to this document happened while he was working for them. ๐ŸŒธ


12. References โœจ

12.1. Normative References

  • [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.
  • [RFC3775] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in IPv6", RFC 3775, June 2004.
  • [RFC4004] Calhoun, P., Johansson, T., Perkins, C., Hiller, T., and P. McCann, "Diameter Mobile IPv4 Application", RFC 4004, August 2005.
  • [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, "Diameter Network Access Server Application", RFC 4005, August 2005.
  • [RFC4072] Eronen, P., Hiller, T., and G. Zorn, "Diameter Extensible Authentication Protocol (EAP) Application", RFC 4072, August 2005.
  • [RFC4283] Patel, A., Leung, K., Khalil, M., Akhtar, H., and K. Chowdhury, "Mobile Node Identifier Option for Mobile IPv6 (MIPv6)", RFC 4283, November 2005.
  • [RFC4285] Patel, A., Leung, K., Khalil, M., Akhtar, H., and K. Chowdhury, "Authentication Protocol for Mobile IPv6", RFC 4285, January 2006.
  • [RFC4306] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, December 2005.
  • [RFC4372] Adrangi, F., Lior, A., Korhonen, J., and J. Loughney, "Chargeable User Identity", RFC 4372, January 2006.
  • [RFC4877] Devarapalli, V. and F. Dupont, "Mobile IPv6 Operation with IKEv2 and the Revised IPsec Architecture", RFC 4877, April 2007.
  • [RFC5026] Giaretta, G., Kempf, J., and V. Devarapalli, "Mobile IPv6 Bootstrapping in Split Scenario", RFC 5026, October 2007.
  • [RFC5142] Haley, B., Devarapalli, V., Deng, H., and J. Kempf, "Mobility Header Home Agent Switch Message", RFC 5142, January 2008.
  • [RFC5149] Korhonen, J., Nilsson, U., and V. Devarapalli, "Service Selection for Mobile IPv6", RFC 5149, February 2008.
  • [RFC5447] Korhonen, J., Bournelle, J., Tschofenig, H., Perkins, C., and K. Chowdhury, "Diameter Mobile IPv6: Support for Network Access Server to Diameter Server Interaction", RFC 5447, February 2009.
  • [RFC5777] Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., Ed., and A. Lior, "Traffic Classification and Quality of Service (QoS) Attributes for Diameter", RFC 5777, February 2010.

12.2. Informative References

  • [DIME-APP] Fajardo, V., Asveren, T., Tschofenig, H., McGregor, G., and J. Loughney, "Diameter Applications Design Guidelines", Work in Progress, July 2009.
  • [RFC4640] Patel, A. and G. Giaretta, "Problem Statement for bootstrapping Mobile IPv6 (MIPv6)", RFC 4640, September 2006.
  • [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
  • [RFC5555] Soliman, H., "Mobile IPv6 Support for Dual Stack Hosts and Routers", RFC 5555, June 2009.
  • [RFC5637] Giaretta, G., Guardini, I., Demaria, E., Bournelle, J., and R. Lopez, "Authentication, Authorization, and Accounting (AAA) Goals for Mobile IPv6", RFC 5637, September 2009.

Authors' Addresses ๐Ÿ’–

Here are the squad's contact details, so you can slide into their DMs ๐Ÿ“ฌ:

Jouni Korhonen (editor)
Nokia Siemens Networks
Linnoitustie 6
Espoo  FIN-02600
Finland

EMail: jouni.nospam@gmail.com
Hannes Tschofenig
Nokia Siemens Networks
Linnoitustie 6
Espoo  FIN-02600
Finland

Phone: +358 (50) 4871445
EMail: Hannes.Tschofenig@gmx.net
URI:   http://www.tschofenig.priv.at
Julien Bournelle
Orange Labs
38-4O rue du general Leclerc
Issy-Les-Moulineaux  92794
France

EMail: julien.bournelle@orange-ftgroup.com
Gerardo Giaretta
Qualcomm
5775 Morehouse Dr
San Diego, CA  92121
USA

EMail: gerardo.giaretta@gmail.com
Madjid Nakhjiri
Motorola
USA

EMail: madjid.nakhjiri@motorola.com
๐Ÿ“ฆ where this page comes from