Network management (SNMP) for sipd Internet telephony server

Yanchen Qi
Computer Science Department
Columbia University
New York, NY 10027
USA
yqi@cs.columbia.edu

Abstract

The goal of this project is to add the SNMP SIP-MIB support for the sipd Internet Telephony Server. With the SNMP SIP-MIB support, the server administrator can monitor the sipd server at any remote location using the Network Management Station client. He/She can get information about the current sipd server's transaction status, as well as change some of the sipd server's parameters defined as writable by the SIP-MIB.

Introduction

This documentation describes the implementation of adding the SNMP MIB support to the sipd Internet Telephony Server. With the SNMP SIP-MIB support, the server administrator can monitor the sipd server at any remote location using the Network Management Station client.

The rest of this document is laid out as follows: We first briefly mention related work in the field. We then provide some background on the system. After this we describe the architecture of the system. This is followed by the program documentation, Measurements and the test cases Screen Shots. Finally we describe future work and extensions to the system.

Related Work

The sipd Internet Telephony server was developed by Internet Real-Time Lab, at Columbia University. sipd is a redirect, proxy and registration server use Session Initiation Protocol (SIP) as signaling protocol. However, it does not have SNMP support built in.

Background

SNMP Overview

When network becomes operational and mature, people start to realize the importance of the network management protocol. As a result of this, simple network management protocol (SNMP) was born for TCP/IP, with consideration based on the framework of the OSI model [RFC 1157].

Network management system contains two primary elements: a manager and agents. The Manager is the console through which the network administrator performs network management functions. Agents are the entities that interface to the actual device being managed. Bridges, Hubs, Routers or network servers are examples of managed devices that contain managed objects. These managed objects might be hardware, configuration parameters, performance statistics, and so on, that directly relate to the current operation of the device in question. These objects are arranged in what is known as a virtual information database, called a management information base, also called MIB. SNMP allows managers and agents to communicate for the purpose of accessing these objects.

The model of network management architecture looks like this:

A typical agent usually:

A typical manager usually:

Managment Information Base

Managment information bases (MIBs) are a collection of definitions, which define the properties of the managed object within the device to be managed. Every managed device keeps a database of values for each of the definitions written in the MIB. It is not the actual database itself - it is implementation dependant. Definition of the MIB conforms to the SMI given in RFC 1155. Latest Internet MIB is given in RFC 1213 sometimes called the MIB-II. Click here to see MIB architecture. You can think of a MIB as an information warehouse.

Architecture

The SNMP for sipd architecture layout looks like this: Click here to get a more clear picture

The Network Management System for sipd server contains the following components:

In this implementation, I choose the MIB Browser from MG-SOFT as the NMS. This software package also comes with a visual MIB compiler which can build MIB tree using MIB definition files.

The UCD-SNMP agent is built and installed with agentx support turned on.

A little more about the Agentx :

Within the SNMP framework, a managed node contains a processing entity, called an agent, which has access to management information. Within the AgentX framework, an agent is further defined to consist of

    1. a single processing entity called the master agent (listening @ port 12345 at this application), which sends and receives SNMP protocol messages in an agent role but typically has little or no direct access to management information - SIP-MIB.
    2. The other processing entities called subagents(listening @port 99999 at this application), which are "shielded" from the SNMP protocol messages processed by the master agent, but which have access to management information.

The master and subagent entities communicate via AgentX protocol messages.

The internal operations of AgentX are invisible to an SNMP entity operating in a manager role. From a manager's point of view, an extensible agent behaves exactly as would a non-extensible (monolithic) agent that has access to the same management instrumentation.

As the above section described, the subagent is actually the one "get things done". After get the SNMP request from the master agent. It gets the requested data from the sipd server if it is a "GET" request, or changes the appropriate sipd parameter if it is a "SET" request. The subagent communicates with the master agent via Agentx protocol.

To fulfil the functionality of the subagent, subagent should have direct access to the sipd data. In this implementation, subagent is the third thread of the sipd server. Previous, sipd server has two threads which are UDP Thread which processes UDP requests and TCP Thread which processes the TCP requests. As the third thread of the sipd server, subagent will share the data with all the other threads of the sipd server and have real-time access to all the sipd server's data.

Program Documentation

The program documentation is available as a "man" page.

Measurements

All implemented variables in SIP-COMMON-MIB was tested using the test client in the original sipd distribution. The directory of the test client is "./sipd/test/". The name of the test client is "siptc". The SIP requests used in conducting the tests were in "./sipd/test/" directory.

Screen Shots

The screen shots of some of the test cases using MG-SOFT MIB Browser as NMS :

Future Work and Extensions

  1. Finish the rest of the variables in SIP-COMMON-MIB.
  2. Implement the variables in SIP-SERVER-MIB.
  3. Implement the variables in SIP-REGISTRAR-MIB.

References


Last updated: 2001-02-16 by Yanchen Qi