Main Page

Open Diameter Sample Configuration

Version1.0.7

Author:
Victor I. Fajardo
Date:
June 25, 2004
This document provides example configuration for the diameter base protocol. Additional documentation is also given for each configuration entry. This sample currently applies only to release 1.0.7.

<?xml version="1.0" encoding="UTF-8"?>

<!-- Sample configuration file, version 1.0.3 and above. -->
<!-- Configuration table starts always starts with "configuration"
     element as root -->

<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:noNamespaceSchemaLocation='configuration.xsd'>

   <!-- General configuration has a fixed list of elements. Note
        that information in the general section includes to info 
        announced by this nodes to it's peers during capabilities
        exchange. -->
   <general>

      <!-- Product, version and vendor ID information specified
           here will be embedded in the CER message -->
      <product>Open Diameter</product>

      <!-- Software revision number. For Open Diameter
           this is equivalent to the Firmware-Revision AVP
           in the CER -->
      <version>1</version>

      <!-- Vendor id of diameter entity broadcast to 
           peers in the CER -->
      <vendor_id>0</vendor_id>

      <!-- List of locally supported vendor id's. Note
           that advertisement of supported vendor id's
           is needed when routing messages with vendor
           specific application id's -->
      <supported_vendor_id>0</supported_vendor_id>
      <supported_vendor_id>1</supported_vendor_id>

      <!-- List of locally supported auth application 
           id's. This contains one or more auth application
           id's that will be broadcasted to peers. -->
      <auth_application_id>1</auth_application_id>
      <auth_application_id>2</auth_application_id>

      <!-- List of locally supported acct application
           id's. This contains one or more auth application
           id's that will be broadcasted to peers. -->
      <acct_application_id>3</acct_application_id>
      <acct_application_id>4</acct_application_id>

      <!-- List of locally supported vendor specific application
           id's. This contains one or more vendor specific application
           id's that will be broadcasted to peers.  Each vendor
           specifc application id will contain one or more vendor
           id's (RFC 3588) and exactly one auth or acct application
           id -->
      <vendor_specific_application_id>

          <!-- List of vendor id's advertized by this diameter
               entity -->
          <vendor_id>31</vendor_id>
          <vendor_id>32</vendor_id>
          <vendor_id>33</vendor_id>

          <!-- Exactly one instance of the
               vendor's auth application id -->  
          <auth_application_id>1</auth_application_id>

          <!-- Or Exactly one instance of the
               vendor's acct application id -->  
          <acct_application_id>4</acct_application_id>
      </vendor_specific_application_id>
      <vendor_specific_application_id>
          <vendor_id>41</vendor_id>
          <vendor_id>42</vendor_id>
          <vendor_id>43</vendor_id>
          <auth_application_id>5</auth_application_id>
          <acct_application_id>6</acct_application_id>
      </vendor_specific_application_id>
   </general>

   <parser> 
      <!-- Path and filename of dictionary file. The path MUST be
           a full path or relative to the location of this configuration
           file -->
      <dictionary>..\..\..\configfiles\dictionary.xml</dictionary>
   </parser>

   <!-- Transport management section. This section contains 
        to local diameter transport information, peer table
        and route table -->
   <transport_mngt>

      <!-- Diameter entity identity. Note that a running open
           diameter application will use the identity string 
           instead of calling OS dependent gethostname functions
           to determine it's identity. Hence, users MUST enter
           a valid resovable entry for this string -->
      <identity>nas_server</identity>

      <!-- Diameter realm. As with identity, a running open
           diameter application uses the realm string to
           identify its domain of reponsibility. This allows
           virtual domains to exists within a single host
           where multiple open diameter entities are running
           with different realm configuration --> 
      <realm>research.org</realm>

      <!-- Diameter TCP listening port. Port number to listen
           to for peer connection request. When using virtual
           domains, make sure each entity listens to different
           port numbers -->
      <tcp_port>1812</tcp_port>

      <!-- Diameter TLS listening port. Port number to listen
           to for peer connection request. When using virtual
           domains, make sure each entity listens to different
           port numbers -->
      <tls_port>1912</tls_port>

      <!-- Peer table lists peers that this open diameter 
           application will attempt to connect to on startup.
           Each peer entry contains host, port and tls
           enabled information.  Internally, the peer table 
           are currently configure statically using this section. 
           No dynamic learning is currently available -->
      <peer_table>
          <! -- This defines the expiration time for dynamically
                learned peers -->
          <expiration_time>1</expiration_time>
          <peer>
              <hostname>tari-dhcp163.research.telcordia.com</hostname>
              <port>1812</port>
              <tls_enabled>0</tls_enabled>
          </peer>
      </peer_table>

      <!-- Route table list the realm entries that this peer
           will use to resolve message paths. Each entry
           contains the realm name, the peer to send the
           messaage to, the application id of the peer and
           it role (whether a proxy, local .. etc). Note that
           peer_reference element MUST point to an existing
           peer in the peer_table else this route will be
           in-active. Also, a default_route flag can be added
           to a route entry to set the default route. If more
           than one route has a default_route flag set then
           the last entry with this flag set becomes the
           default route -->
      <route_table>
          <!-- Defines the expiration time for dynamically
               learned routes. A value of 0 means no expiration -->
          <expire_time>0</expire_time>

          <!-- A route entry defines a lookup information
               for a diameter message containing destination
               realm AVP's. For more information on diameter
               routing, pls see "Open Diameter Routing Architecture" -->
          <route>
             <! -- Realm that this route serves. MUST be unique to
                   this table --> 
             <realm>other.research.org</realm>

             <!-- The role that this diameter entity will play in
                  resolving messages matching this realm. Valid 
                  values for this elements are:
                   0 (local)    - application acting as local servers
                   1 (relay)    - application acting as relay agent                  
                   2 (proxy)    - application acting as proxy server
                   3 (redirect) - application acting as redirect agent -->
             <role>0</role> 

             <!-- For each route, there is a set of applications
                  that are supported. This is used by the base
                  protocol library as the second index to resolving
                  a route for a message --> 
             <application>

                  <!-- Application Id is used as a second key for 
                       routing queries. See details above -->
                  <application_id>1</application_id>

                  <!-- For vendor specific application id's. As
                       per RFC this should be 0 for standard
                       track applications. Otherwise, this
                       value is used in conjunction with
                       application_id as a second search key -->
                  <vendor_id>0</vendor_id>

                  <!-- For each application, there can be a set
                       of servers support it. Each server has
                       a metric associated with it and the 
                       routing engine chooses the server in
                       metric order (0 being highest) -->
                  <peer_entry>

                      <!-- Diameter peer serving this realm and
                           application id. This server name
                           MUST exits in the peer table for
                           this route to be active.
                      <server>server1.research.org</server>
 
                      <!-- Metric value for this server entry.
                           The higher the value, the lower the
                           preference. 0 is the highest value
                           and entries with equal value will 
                           be resolve in the order they are
                           defined in this configuration file -->
                      <metric>1</metric>  
                  </peer_entry>
                  <peer_entry>
                      <server>server2.research.org</server>
                      <metric>5</metric>  
                  </peer_entry>
             </application>
             <application>
                  <application_id>
                       <id>1</id>
                       <type>1</type>
                  </application_id> 
                  <peer_entry>
                      <server>server1.research.org</server>
                      <metric>1</metric>  
                  </peer_entry>
                  <peer_entry>
                      <server>server6.research.org</server>
                      <metric>5</metric>  
                  </peer_entry>
             </application>
          </route>

          <! -- The definition of a default route is the same
                as for any other route. The existance of a
                default route means that all no-match queries
                will result in a default route return -->
          <default_route>
             <realm>research.telcordia.com</realm>
             <role>full</role> 
             <application>
                  <application_id>
                       <id>1</id>
                       <type>1</type>
                  </application_id> 
                  <peer_entry>
                      <server>server1.research.org</server>
                      <metric>1</metric>  
                  </peer_entry>
                  <peer_entry>
                      <server>server2.research.org</server>
                      <metric>5</metric>  
                  </peer_entry>
             </application>
             <application>
                  <application_id>
                       <id>5</id>
                       <type>1</type>
                  </application_id> 
                  <peer_entry>
                      <server>server1.research.org</server>
                      <metric>1</metric>  
                  </peer_entry>
                  <peer_entry>
                      <server>server6.research.org</server>
                      <metric>5</metric>  
                  </peer_entry>
             </application>
          </route>
      </route_table>
   </transport_mngt>

   <!-- Session manager configuration table. This section
        consist of fixed elements that MUST exists -->
   <session_mngt>

      <!-- Dictates the maximum number of concurrent
           sessions that will be maintained by open
           diameter. -->
      <max_sessions>10000</max_sessions>

      <!-- Stateful session flag. If set to 1, then
           server will enforce stateful sessions and
           clients will hint for stateful sessions. If
           set to 0 or if missing then stateless sessions -->
      <stateful>1</stateful>

      <!-- The following are default timers that are
           maintained for each active session. -->
      <timers>

         <!-- Timeout in seconds before a session requires 
              re-authentication -->
         <session>30</session>

         <!-- Timeout in seconds before a session is 
              terminated regardless of wether it has
              been re-authenticated -->
         <lifetime>360</lifetime>

         <!-- Grace period after lifetime timeout before
              full termination -->
         <grace>30</grace>

         <!-- Timeout before subsequent ASR messages
              are sent if the inital attempt fails -->
         <abort_retry>20</abort_retry>
      </timers>
   </session_mngt>

   <!-- Log section dictates the verbose levels that
        the library generates as well as target outputs -->
   <log>

      <!-- The following are the available log levels
           that can be "enabled" or "disabled" -->
      <flags>
         <debug>disabled</debug>
         <trace>disabled</trace>
         <info>disabled</info>
      </flags>

      <!-- The following are the target outputs of
           the logs. It can be a combination of
           each entry -->
      <target>
         <!-- enables or disables terminal output -->
         <console>enabled</console>
         <!-- enables or disables syslog output -->
         <syslog>disabled</syslog>
      </target>
   </log>
</configuration>

Generated on Fri Jun 25 23:37:53 2004 for Open Diameter Base Protocol Sample Configuration by doxygen 1.3.5