⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nasreq.txt

📁 Diameter协议栈
💻 TXT
字号:
/*! \mainpage Diameter NASREQ Project\author Rafael Marin Lopez and Victor Fajardo\date July 29, 2003The focus of this paper is provide a general documentation for theimplementation of the Diameter NASREQ application. It encompassesthe goals as well as the overall architecture of the software. Theintended audience are developers as well as decision makers for which this document provides a focal point of discussion and notations of agreed upon decisions.This document contains three major (3) sections [TBD]. The firstsection describes the goals of the project. As of this writing,the topics in this section are generalized pending the outcome of the discussion concerning implementation coverage. Note thatdetails in these section will increase in granularity as furtherdecisions are made. The second section details software architectureand components as well as development environment and tool sets.The third section contains miscellaneous topics concerning thestate of the project, licensing, etc.\section tagGoals Project Goals[TBD]\subsection tagGoalsCoverage Implementation Coverage\subsection tagGoalsFutureWork Future Work\section tagArchitecture Software ArchitectureThis section is divided into two (2) parts. The developmentenvironment which includes platforms, toolsets, test bedetc. and implementation architecture which defines theactual software design.\subsection tagArchitectureEnvironment Development EnvironmentThe following are initial development environment proposals:- The initial development platform will be linux. The implementation  MUST be portable to all distribution of linux. The next targeted  system would most likely be FreeBSD and windows. It is beneficial  to eventually deploy a heterogeneouz set of machines in the test bed   to fully test the implementation. For the initial effort, however,  a mix set of linux distribution would suffice.- Source code control will be CVS. It has been agreed upon that  the implementation is under the Open Diameter umbrella which is  hosted by sourceforge.net. This provides the benefit of having  globally secured access for source code modification. - Autoconf and Automake utilities will be used for generating Makefiles  and build scripts. Note that since the implementation is under  Open Diameter, these toolsets are necessary. - Bug tracking software will be provided by sourceforge.net under   the Open Diameter project space. The web based bug tracking  software is sufficient for supporting the implementation.- Programming language is C++ and Java. This is subject to further  discussion. The initial intent depending on the complexity of  the interface. Issues relevant to this discussion includes the  introduction of JNI interfaces to the current diameter library.  It is also possible to use C++ exclusively to decrease development  time. However, this gives up the programming extendibility provided   by Java.- The defacto source code documentation tool utilized in Open Diameter  is Doxygen [DOXYGEN]. It is recommended that this applies also to this  project. - Configuration file is recommeded to be XML based. It is also recommended  that the Open Diameter XML configuration file be made extendible to  accomodate addition of application configuration data. This would   provide the benefit of having a singular configuration source and scheme  to both diameter and it's application. In such a case, it is recommended  that the Xerces C++/Java XML parser [XERCES] be used to load the configuration  into run-time values.- It is recommended that we use ACE (Adaptive Communication Environment) [ACE]  to provide basic data structures, programming frameworks and coding   methology in the implementation. This saves time and effort in providing   abstracted system support like logging, basic data types, threading, etc.   to the programming effort.  \subsection tagArchitectureSoftwareArchitecture Software ArchitectureThe software architecture employed by this implementation is motivated bythe netgraph architecture in the FreeBSD networking module [NETGRAPH].The design is simple and works very well is dis-joined development whereplug in modules are key to the design.The idea is derived from a graph model where the basic components arenodes, edges and hooks. Each node implements a specific functionality orencapsulates a feature. Every node exposes a set of hooks in which dataor control message can pass through. Nodes passes packets to each othervia these hooks. Two hooks connected to each other constitute an edge.The management of nodes are made by a control entity. This is similarto COM/DCOM objects in windows (or ORB's in Java) where a system entityloads and unload an object. The biggest difference is that nodes do not expose a callable interface which makes the implementation much simplier.For this implementation, these edges are static and well defined whichmakes implementation easier. Because of this, there is no need for aglobal control entity that manages creation of nodes and edges (as wellas thier deletion). This is the one major departure from the netgraphbased architecture. From an programming standpoint, an abstract classdefinition can be made that describes generic features of a node. Thesefeatures includes hook lists, instance reference counts, control anddata message handling events, etc. Implementors of a node need only toderive from this class to become a node. Details of this classes are TBD.The feature coverage implemented by a single node depends on the complexityof the feature or judgement made by the developer. Note that nodes SHOULD notencapsulate a functionality so large that it becomes un-tenable. Programmingpractices of breaking down a problem set SHOULD be applied. As an example,a single node can be used as configuration data loader and repository. However,a node implementing an more than one protocol stack is not recommended sinceit increases the complexity of that node without reason.There is a well defined topology for nodes and edges. However, some nodesneeds to be dynamically created. It becomes the responsibility of staticnodes which are persistent through out the lifetime of the software to createinstances of these dynamic nodes. Therefore, the node class factory islocalized as a feature of a static node. It is of course a matter of followingclassical software pattern that this class factory feature be implemented by a that node. The software architecture depicted in the succeding diagramsapplies this functionality. This is a departure from the FreeBSD netgrapharchitecture. The benefit of which is implementation simplicity. Additional global base classes needs to be defined that describes orenacpsulates control messages or data passed between nodes. A source basedclass library defining all these classes as well as framework classesfor control entity SHOULD be implemented. Details of these classes are TBD.The following diagrams depict the INITAL node distribution of the DiameterNASREQ translation agent [See Project Goals]:\image html nasreq.jpeg\image latex nasreq.eps<B> Fig. 1., Functional Architecture </B>The diagram above depicts an initial architecture of the Diameter NASREQ translation agent. The translation agent is logically divided into DIAMETER->RADIUS and RADIUS->DIAMETER translation. The functionality of each is described in [NASREQ] Sec. 9.1 and 9.2 respectively. A brief description of each node in the diagram is as follows:- Configuration Node: This node is responsible for loading configuration  information from non-volatile storage into run-time data. All or most   nodes MAY require configuration information but the diagram will be   incomprehensable if all edges are shown. Hence, the depiction above is   incomplete in terms of edge association of other nodes with the configuration   node. Further details of this node is [TBD].- NAS Call Manager: This node is responsible for managing incomming RADIUS  message as well as delivery of outgoing RADIUS messages. It MUST support   appropriate transport mechanisms that the NAS server requires. In addition,  it needs to provide validation for incomming request message as specified  in [NASREQ] Sec. 9.1. This node has an edge association with the transaction  database node and forwards incomming message which has passed validation to  that node. It may also employ scalability techiniques such as prioritized   queing and threshold management to protect the software from heavy traffic.   Note also that multiple nodes of this type MAY exists in a distributed fashion   to increase load/request capacity. This is part of the RADIUS->DIAMETER  translation. Further details of this node is [TBD].- Transaction Database: This node is responsible for run-time storage of  references to RADIUS transaction nodes. These transaction nodes contain  transaction state and other supporting information. This node needs to  query its reference tables for all incomming traffic so that messages  are associated with an existing transaction. If no such association is  found, it is the database nodes responsibility to create instances of   transaction nodes for validated RADIUS request comming from the call   manager node. This is part of the RADIUS->DIAMETER translation. Further   details of this node is [TBD].- Transaction Nodes: These nodes are dynamically created by the transaction   database nodes in response to a valid RADIUS request. They stores transaction   state and other information associated with each request (See [NASREQ] Sec. 9.1).  In addition, diameter client session instances (authentication/authorization,   accounting or proxy sessions) are created within each node. That allows each  nodes to have session access to the diameter network as well as associate  each RADIUS request to a diameter session. As of this writing, there are three   (3) types of transaction nodes. Authorization/Authentication, Accounting and  proxy session nodes. The first two (2) are provides general AAA support. The   proxy nodes provides support for RADIUS request with the state attribute   present and has a pre-defined diameter session in it's data prefixed with   the "\Diameter" string. Majority of the desicion making process for the  transaction is made within these node. It uses other auxillary nodes to  parse and re-format the message to an appropriate form but these node will  decide the outcome of the transaction. These nodes are part of the RADIUS->DIAMETER  translation. Note that for reply messages, these node has an edge association  with the call manager which has a transport connection with the RADIUS entity.  Further details of this node is [TBD].- RADIUS->DIAMETER Aux Node: These are axuillary node use to parse and process  RADIUS message and convert them into an appropriate diameter message. There  are two (2) instances of this node, one is for ingress request and the other  is for egress replys. It follows the guidelines in [NASREQ] Sec. 9.1. These  nodes has edge association only with transaction nodes since it assist those  nodes in the translation process. Internally, these node are managed by a generic   parser which has convertion specific plugins implemented as objects/classes.  These plugins acts as converters for AVP->attribute or attribute->AVP. Others  act on the entire message. This is part of the RADIUS->DIAMETER translation.   Further details of this node is [TBD].- Diameter Server Nodes: This is the core node for DIAMETER->RADIUS convertion.  This is a class factory node that generates diameter server sessions nodes  as specified in the Open Diameter API. The open diameter library provides  traffic management as well as pre-processing of incomming diameter request   which allows us the luxury of simply creating a server session class factory.  The objects generated by the factory have diameter server sessions for  a base class. Hence, we can define the derived class to be a transaction  node which contain transaction state and other supporting information for  DIAMETER to RADIUS translation. Further details of this node is [TBD].- Diameter Server Transaction Node: As noted above, these nodes are dynamically  created by the diameter server node and are derived from open diameter server  session base class. These contains transaction state information as well as  supporting data to aid in the translation of messages from DIAMETER to RADIUS.   This has the same responsibility as the Transaction nodes noted above except  if follows [NASREQ] Sec. 9.2. It contains the decision making capacity for   such translation. It is assisted by auxillary classes DIAMETER->RADIUS Aux   nodes which are symetrical opposites of RADIUS->DIAMETER Nodes. Note that for   reply messages, these node has an edge association with the call manager which   has a transport connection with the RADIUS entity. Further details of this   node is [TBD].- DIAMETER->RADIUS Node: As with the RADIUS->DIAMETER node, these are also   auxillary nodes for assisting in converting DIAMETER messages. It is comprised  of two (2) instances, one is for ingress request and the other is for egress   replys. It follows the guidelines stated in [NASREQ] Sec. 9.2. They have   edge associations only with the Diameter Server Nodes. These follows the same  implemenation as RADIUS->DIAMETER node in converting AVP->attribute and  attribute->AVP. Further details of this node is [TBD].\section tagBibliography Bibliography- [ACE] Douglas C. Schmidt, The ADAPTIVE Communications Environment, An Object-Oriented Network Programming Toolkit for Developing Communications Software, June 1993- [DOXYGEN] Dimitri Van Heesch, Doxygen, http://www.doxygen.org, July 2003- [XERCES] Apache Software, Xerces C++ Parser, http://xml.apache.org, July 2003- [NETGRAPH] FreeBSD Kernel Interface Manual, Netgraph(4)- [NASREQ] Calhoun, Zorn, etc, Diameter Network Access Server Application, June 2003*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -