<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css"> <title>Erlang -- Introduction</title> </head> <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container"> <script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript"> <!-- function getWinHeight() { var myHeight = 0; if( typeof( window.innerHeight ) == 'number' ) { //Non-IE myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myHeight = document.body.clientHeight; } return myHeight; } function setscrollpos() { var objf=document.getElementById('loadscrollpos'); document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2; } function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, true); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } addEvent(window, 'load', setscrollpos); //--></script><div id="leftnav"><div class="innertube"> <img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/diameter-0.9.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>Diameter</strong><br><strong>User's Guide</strong><br><small>Version 0.9</small></p> <br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Chapters</strong></small></p> <ul class="flipMenu" imagepath="../../../../doc/js/flipmenu"> <li id="loadscrollpos" title="Introduction" expanded="true">Introduction<ul><li><a href="diameter_intro.html"> Top of chapter </a></li></ul> </li> <li id="no" title="Using the stack" expanded="false">Using the stack<ul><li><a href="diameter_using.html"> Top of chapter </a></li></ul> </li> <li id="no" title="Examples" expanded="false">Examples<ul><li><a href="diameter_examples.html"> Top of chapter </a></li></ul> </li> <li id="no" title="Standards Compliance" expanded="false">Standards Compliance<ul> <li><a href="diameter_soc.html"> Top of chapter </a></li> <li title="RFC 3588"><a href="diameter_soc.html#id193216">RFC 3588</a></li> <li title="RFC 3539"><a href="diameter_soc.html#id192596">RFC 3539</a></li> </ul> </li> </ul> </div></div> <div id="content"> <div class="innertube"> <h1>1 Introduction</h1> <p> The diameter application is an implementation of the Diameter protocol as defined by RFC 3588. It supports arbitrary Diameter applications by way of a <strong>dictionary</strong> interface that allows messages and AVP's to be defined and input into diameter as configuration. It has support for all roles defined in the RFC: client, server and agent. This chapter provides a short overview of the application.</p> <p> A Diameter peer is implemented by configuring a <strong>service</strong> and one or more <strong>transports</strong> using the interface module <span class="bold_code"><a href="diameter.html">diameter</a></span>. The service configuration defines the Diameter applications to be supported by the peer and, typically, the capabilities that it should send to remote peers at capabilities exchange upon the establishment of transport connections. A transport is configured on a service and provides protocol-specific send/receive functionality by way of a transport interface defined by diameter and implemented by a transport module. The diameter application provides two transport modules: <span class="bold_code"><a href="diameter_tcp.html">diameter_tcp</a></span> and <span class="bold_code"><a href="diameter_sctp.html">diameter_sctp</a></span> for transport over TCP (using <span class="code">gen_tcp</span>) and SCTP (using <span class="code">gen_sctp</span>) respectively. Other transports can be provided by any module that implements diameter's <span class="bold_code"><a href="diameter_transport.html">transport interface</a></span>.</p> <p> While a service typically implements a single Diameter peer (as identified by an Origin-Host AVP), transports can themselves be associated with capabilities AVP's so that a single service be used to implement more than one Diameter peer.</p> <p> Each Diameter application defined on a service is configured with a callback module that implements the <span class="bold_code"><a href="diameter_app.html">application interface</a></span> through which diameter communicates the connectivity of remote peers, requests peer selection for outgoing requests, and communicates the reception of incoming Diameter request and answer messages. An application using diameter implements these application callback modules to provide the functionality of the Diameter peer(s) it implements.</p> <p> Each Diameter application is also configured with one or more dictionary modules that provide encode/decode functionality for outgoing/incoming Diameter messages. A module is generated from a <span class="bold_code"><a href="diameter_dict.html">specification file</a></span> using the <span class="bold_code"><a href="diameterc.html">diameterc</a></span> utility. Dictionaries for the RFC 3588 Diameter Common Messages, Base Accounting and Relay applications are provided by the diameter application.</p> </div> <div class="footer"> <hr> <p>Copyright © 2011-2011 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>