diameter tutorial - ietf67 ietf67 – diameter tutorial diameter base protocol details victor...

34
Diameter Tutorial - IETF6 7 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc.

Upload: frederick-fitzgerald

Post on 16-Dec-2015

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

IETF67 – Diameter Tutorial

Diameter Base Protocol Details

Victor Fajardo and Yoshihiro OhbaToshiba America Research Inc.

Page 2: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Tutorial Outline

• Diameter – Basic Functionality– Message Format

• Protocol Details– Connection Management– Routing– Session Management

• Creating new applications• Improvements over RADIUS

– RADIUS to Diameter Transition Support• Recent Topics

Page 3: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

DiameterClient Application

DiameterServer Application

Routing Management

Connection Management

Connection Management

Diameter Client Node at somerealm.com

Base Protocol Base Protocol

Diameter Server Node at otherrealm.com

Session Management

Routing Management

Session Management

Diameter - Basic Functionality

Page 4: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Diameter - Basic Functionality

• Base Protocol– Connectivity: Peering and Routing– Application support: Application session management

• Applications– Purpose specific: NASREQ, MIPv4, SIP etc.– Identified by application Id

• Every application MUST have an IANA-assigned application identifier

• Used also for diameter message routing

Page 5: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Diameter - Message Format

Diameter Header AVP AVP AVP

• Diameter Message:

AVP Header AVP Data

• Each message must be defined using an ABNF grammar• Pre-defined AVP data types (Integer32, Float, OctetString etc.)

Version, Length, Flags, Code, AppId, H2H Id, E2E IdDiameter Header =

Code, Flag, Length, Vendor-Id (Opt)AVP Header =

Page 6: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Diameter ABNF Example

<CER> ::= < Diameter Header: 257, REQ > { Origin-Host } /* Required AVP, Occurrence: 1 */ { Origin-Realm } 1* { Host-IP-Address } /* Required AVP, Occurrence: 1+ */ { Vendor-Id } { Product-Name } [ Origin-State-Id ] /* Optional AVP, Occurrence: 0 or 1 */ * [ Supported-Vendor-Id ] /* Optional AVP, Occurrence: 0+ */ * [ Auth-Application-Id ] * [ Inband-Security-Id ] * [ Acct-Application-Id ] * [ Vendor-Specific-Application-Id ] [ Firmware-Revision ] * [ AVP ]

Note: /* */ is not part of ABNF

Page 7: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Connection Management

• Peer Discovery• Transport• Capabilities negotiation• Peer liveness and disconnection

Page 8: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Peer Discovery

• Peer discovery mechanisms (in order of preference)– Static configuration: mandatory– SLPv2 and DNS: optional

• DNS mechanisms to use (in order of execution)– NAPTR– Address of record

• Authorization of discovered peer is mandatory

Page 9: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Transport• Protocols

– Certain nodes MUST support at least SCTP or TCP (i.e. Diameter Client)

– Others MUST support SCTP and TCP (i.e. Diameter Servers and Agents)

• Security– TLS and IPSec

• Selection Process (in order of execution)– IPSec, SCTP, TCP, TLS

• SCTP or TCP is always attempted prior to capabilities exchange

• TLS tried after capability negotiation

• IPSec and TLS maybe used exclusively

Page 10: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Capabilities Negotiation

• Capabilities Exchange– Use of Capabilities-Exchange (CER/CEA) messages– Message exchange advertises:

• Peer Identity

• Security schemes – Indicates the use of TLS

• SCTP host addresses if used

– CER/CEA may or may not be protected

• Peer Table Creation– Lists all peers that passes capabilities negotiation

– Indicates the connection status of each peers– Also used for message routing

Page 11: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Peer Liveness and Disconnection

• Liveness Test– Use of Device-Watchdog exchange (DWR/DWA)– Aid in Failover performance: pro-active detection of failure

• Disconnection– Use of Disconnect-Peer exchange (DPR/DPA)– Provides hints for future reconnection attempts– Routing table updates

Page 12: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Routing

• Types of Diameter Nodes• Request Routing

– Realm Routing Table• Answer Routing• Loop Detection• Failover-Failback Procedure• Duplicate Detection

Page 13: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Types of Diameter Nodes

• Diameter Clients and Severs

– Request and Answer Originators• Where application normally reside

– Advertises supported applications only

• Diameter Agents– Request and Answer forwarders– Adds routing information to the message– Relay Agents

• Provides basic message forwarding

• Does not inspect content of the message other than Destination-Host and/or Realm and AppIds

• Advertises support all applications

Page 14: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Types of Diameter Nodes

– Proxy Agents• Inspects and possibly modifies contents of the request or answer it is

forwarding. – Useful in scenarios such policy enforcement, admission control,

provisioning etc– Can maintain session state

• Examples: Translation agents, RADIUS<->DIAMETER

– Re-Direct Agents• Does not forward messages but notifies the previous hop of the new

next-hop to use

• Advertises support all applications

Page 15: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

RedirectAgent

Client

1. Request

2. Request 3. Redirect Notification

4. Request

5. Answer6. Answer

Request/Answer Path:

• Normal Relay or Proxy: 1, 4, 5, 6

• Re-directed Agent: 1, 2, 3, 4, 5, 6

realmA.com realmB.com

Relay/ProxyAgent

Server

Diameter Agent Overview

Page 16: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Request Routing

• Information used for routing:• Application-Id: present is in the header

• Destination-Host OR Destination-Realm AVP

• Routing rules:1. If local identity == Destination-Host AVP then process locally,

otherwise

2. If peer identity == Destination-Host AVP then send that peer, otherwise

3. Lookup realm table with Destination-Realm and AppIda. If found send to the designated next-hop

b. Otherwise, send an UNABLE_TO_DELIVER answer

• Use of Request Queue– Successfully forwarded request are queued

Page 17: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Request Routing (Cont’d)

• Realm Routing Table– List of realm routing entries– Realm routing entry looks like:

Realm (*), AppId (**), Action, Next-hop Peer, isStatic, ExpireTime

• Realm: Primary key, matched with Destination-Realm Avp• AppId: Secondary key, matched with AppId in message header• Action: For each matching entry, possible actions are:

– LOCAL, RELAY, PROXY, REDIRECT

• isStatic: Indication of static or dynamic route• ExpireTime: Time before dynamic route are no longer valid

Page 18: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

1. Request (EAP, Server.RealmB.com)

3. Answer4. AnswerClient.RealmA.com Server.RealmB.com

Relay/ProxyAgent

Relay.RealmB.com

Example Realm Routing Table for Relay/Proxy Agent:

1. RealmB.coma. AppId=EAP, Action=PROXY, Next-Hop=Server.RealmB.com, isStatic=TRUEb. AppId=xxx, Action=RELAY, Next-Hop=Server.RealmB.com, isStatic=TRUE

2. RealmA.coma. AppId=xxx, Action=RELAY, Next-Hop=Client.RealmA.com, isStatic=TRUE

3. SomeOtherRealm.coma. AppId=EAP, Action=REDIRECT, Next-Hop=Server.RealmB.com, isStatic=FALSE,

ExpireTime=3600

Routing Overview

2. Request (EAP, Server.RealmB.com)

SomeOtherRealm.com

DiameterServer

DiameterClient

RequestQueue

RequestQueue

Page 19: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Answer Routing

• Information used for routing– Hop-by-Hop Id is used instead of Destination-Host or

Destination-Realm AVP– Hop-by-Hop Id is unique within each hop – Answer routing path is the reverse of the request path

• Routing Rules:– For answer originators:

• Use the same Hop-by-Hop Id found in the request

– For answer forwarders:• Lookup Hop-by-Hop Id in request queue

a. If found, forward answer to appropriate peer and remove request from the queue

b. Otherwise, discard

Page 20: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Loop Detection

• Recording the Routing Path– Forwarding agents add Route-Record AVPs

• Detection– Local host identity must not be present in the Route-Record AVP– Send LOOP_DETECTED answer

Page 21: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Failover-Failback Procedure

• Failover: Attempt to re-route pending request to an alternate peer in case of transport failure– ‘T’ bit is set for re-routed requests

• Failback: Switch back to the original next hop when connection is re-established

Client Relay

Relay

Server1. Request

4. Answer

2. Request T-bit set

3. Request T-bit set

4. Answer

5. Answer

2. Request

3. AnswerRequestQueue

RequestQueue

RequestQueue

Page 22: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Duplicate Detection

• Duplicates can occur– Due to Failover– Nodes re-sending un-answered requests: Due to reboot

• Detection– End-to-End Id is unique for a node– Re-sent request must have T-flag set– Therefore, use T-flag as a hint for possible duplication, then

• Use End-to-End Id and Origin-Host AVP to detect duplication

• Duplicate request SHOULD cause the same answer to be sent

• Other Considerations– Use of Session-Id for duplicate detection in accounting records– Time needed to wait for duplicate messages

Page 23: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Session Management

• Diameter Sessions - definitions

• Session types and statefulness

• Authentication and Authorization Sessions

• Accounting Sessions

Page 24: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Diameter Sessions – definitions

• What is a session? – A session is a related progression of events devoted to a

particular activity• Applications provide guidelines as to when a session

begins and ends• Sessions are identified by Session-Id

– Globally and eternally unique

<DiameterIdentity>;<high 32 bits>;<low 32 bits>[;<optional value>]

• DiameterIdentity: Senders identity in FQDN• High and Low 32 bits: Decimal representation of a 64-bit value,

monotonically increased• Optional value: Implementation specific, i.e. MAC address, timestamp etc

Page 25: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Session types and statefulness

• Two types of sessions by usage – Authorization session is used for authentication

and/or authorization – Accounting session is used for accounting

• A session can be stateful or stateless– Depending on whether the application requires the

session to be maintained for a certain duration– Stateful sessions normally spans multiple message

exchanges

Page 26: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Authentication and Authorization Sessions• Auth-Session-State indicates statefulness• For stateful session

– Session teardown uses Base Protocol messages ASR/ASA and STR/STA

– Support for Server-Initiated Re-Auth• Uses Base Protocol message RAR/RAA

• Authorization Session State Machines:– CLIENT/STATELESS– CLIENT/STATEFUL– SERVER/STATELESS– SERVER/STATEFUL

Page 27: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Accounting Sessions

• Uses Base Protocol messages ACR/ACA• Accounting Session State Machines:

– CLIENT– SERVER/STATELESS– SERVER/STATEFUL

Page 28: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Accounting-related AVPs

• Accounting-Record-Type AVP indicates type of accounting record:• Acct-Interim-Interval AVP specifies how and when to generate

accounting records• Accounting-Record-Number AVP identifies an accounting record• Acct-Session-Id AVP is used for RADIUS/Diameter translation• Acct-Multi-Session-Id AVP co-relates multiple accounting sessions• Acct-Sub-Session-Id sub-divides an accounting session• Accounting-Realtime-Required AVP specifies realtime accounting

behavior

Page 29: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Creating a new application

• Criteria: “New application is unable to fit within an existing application without requiring major changes to the specification”– Example major changes:

• Adding new “mandatory-to-support” AVPs• A command requires different round trips than what is

currently in the specification• Support for a new authentication method with new AVPs

• As a last resort• Advocates reuse of existing applications and

AVPs

Page 30: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Improvements over Basic RADIUS

• Features inherently offered by diameter– Reliable and secure transport– Failover– Agent support– Server-initiated messages– Capabilities negotiation– Peer discovery and configuration

RADIUS Extensions developed in RADEXT WG also provides most of these functionality, such as RFC3576

Page 31: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Interoperability with RADIUS

• Diameter is upwards compatible with RADIUS, so– Messages and AVPs

• AVP codes 1-255 is reused from RADIUS• Command codes 0-255 is reused from RADIUS• Diameter NASREQ (RFC4005) maps RADIUS messages

to/from Diameter AA-Request and AA-Answer message

– Use of RADIUS<->Diameter Translation Agents

Page 32: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Interoperability with RADIUS (Cont’d)

• Translations issues– Diameter messages can be larger than

maximum RADIUS packet• Ongoing work

– Mapping of new RADIUS extension types to Diameter

• Ongoing work

Page 33: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

Recent topics under discussion

• Usage of Nas-Port-Type and Service-Type vs. defining a new Application Id

• Use of zero(0) AppId for all base protocol messages

Page 34: Diameter Tutorial - IETF67 IETF67 – Diameter Tutorial Diameter Base Protocol Details Victor Fajardo and Yoshihiro Ohba Toshiba America Research Inc

Diameter Tutorial - IETF67

End of TutorialThank You