1 |
Internet Draft HTTP-based SNMP and CMIP Network Management Nov. 19, 1996 |
2 |
|
3 |
|
4 |
HTTP-based SNMP and CMIP Network Management |
5 |
|
6 |
Luca Deri |
7 |
IBM Zurich Research Laboratory |
8 |
lde@zurich.ibm.com |
9 |
|
10 |
November 19, 1996 |
11 |
|
12 |
|
13 |
Status of this Memo |
14 |
|
15 |
|
16 |
This document is an Internet-Draft. Internet-Drafts are working |
17 |
documents of the Internet Engineering Task Force (IETF), its areas, |
18 |
and its working groups. Note that other groups may also distribute |
19 |
working documents as Internet-Drafts. |
20 |
|
21 |
Internet-Drafts are draft documents valid for a maximum of six months |
22 |
and may be updated, replaced, or obsoleted by other documents at any |
23 |
time. It is inappropriate to use Internet-Drafts as reference material |
24 |
or to cite them other than as ''work in progress.'' |
25 |
|
26 |
To learn the current status of any Internet-Draft, please check the |
27 |
''1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow |
28 |
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), |
29 |
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or |
30 |
ftp.isi.edu (US West Coast). |
31 |
|
32 |
|
33 |
1. Abstract |
34 |
|
35 |
This document describes the application of the HyperText Transfer |
36 |
Protocol (HTTP) [HTTP] for the purpose of SNMP [SNMP] and CMIP [CMIP] |
37 |
management. It shows how SNMP and CMIP resources can be managed by |
38 |
using the standard HTTP protocol by defining a mapping between |
39 |
SNMP/CMIP protocols and HTTP. The mapping is very simple and based on |
40 |
strings which can easily be handled by any programming and scripting |
41 |
language. This will allow light and simple HTTP-based applications to |
42 |
be created, since they have not to include any management service like |
43 |
encoding/decoding nor to handle complex data types. |
44 |
|
45 |
This document does not cover management of HTTP [Hazewinkel]. |
46 |
|
47 |
|
48 |
2. World Wide Web and Network Management |
49 |
|
50 |
The World Wide Webarchitecture is depicted below: |
51 |
|
52 |
------> |
53 |
HTTP client HTTP HTTP Server |
54 |
<------ |
55 |
Figure 1: World Wide Web architecture |
56 |
|
57 |
HTTP servers provide information which can be retrieved by WWW |
58 |
browsers using the HTTP protocol. The HTTP protocol is a simple, |
59 |
stateless information retrieval protocol based on TCP/IP. The |
60 |
retrieved information can be specified in several formats including |
61 |
graphics, text, binary and HTML (Hyper Text Markup Language) [HTML]. |
62 |
|
63 |
|
64 |
Expires May 19, 1997 [Page 1] |
65 |
|
66 |
Internet Draft HTTP-based SNMP and CMIP Network Management Nov. 19, 1996 |
67 |
|
68 |
In order to manage network resources using HTTP it is necessary to |
69 |
have an application which speaks both HTTP and SNMP/CMIP. This can be |
70 |
achieved in two ways by: |
71 |
1. extending standard HTTP servers |
72 |
2. creating a proxy application which allows to issue SNMP/CMIP |
73 |
protocol requests using HTTP. |
74 |
|
75 |
The first solution has the following advantages: |
76 |
1. it is relatively easy to implement since the HTTP server |
77 |
transparently handles the HTTP protocol |
78 |
2. existing character-based network management applications can |
79 |
easily become Web-aware since it is straightforward to enrich |
80 |
the textual output with HTML tags. |
81 |
|
82 |
The second solution requires the implementation of the HTTP protocol |
83 |
but it offers better performance. In fact, HTTP servers usually offer |
84 |
standard interfaces such as CGI (Common Gateway Interface) which |
85 |
allows external applications to be executed when a certain URL [URL] |
86 |
(Uniform Resource Locator: a physical address of an object which is |
87 |
retrievable using network protocols such as HTTP) is requested. Since |
88 |
launching applications requires some system resources, the performance |
89 |
is degraded proportionally to the complexity of the CGI application |
90 |
that has to be executed. Apart from offering a better performance, |
91 |
this second solution allows network events (SNMP traps and CMIP |
92 |
notifications) to be handled without the need to rely on another |
93 |
application. This is because the proxy can receive network events and |
94 |
store them. In the case of a CGI-based solution, an external |
95 |
application has to receive the network events which can then be |
96 |
retrieved through a CGI application. |
97 |
|
98 |
In both cases, users communicate with an HTTP application regardless |
99 |
of the nature of this application, either HTTP server extended with |
100 |
CGI applications or proxy. |
101 |
|
102 |
|
103 |
3. URL Convention for SNMP/CMIP Management |
104 |
|
105 |
In order to manage network resources using HTTP, a mapping between |
106 |
management operations and URLs has to be defined. The proposed mapping |
107 |
is compliant with the standard URL syntax and therefore it can be |
108 |
handled by conventional HTTP servers and WWW browsers. The URL is |
109 |
composed of 5 elements, |
110 |
http://<host>/<protocol>/<operation>/<context>?<parameters>, where: |
111 |
1. <host> identifies the host where the HTTP server runs; |
112 |
2. <protocol> specifies the protocol used; |
113 |
3. <operation> specifies the protocol operation; |
114 |
4. <context> specifies the context to use, if any; |
115 |
5. <parameters> contain the operation parameters, if any. |
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
Expires May 19, 1997 [Page 2] |
123 |
|
124 |
Internet Draft HTTP-based SNMP and CMIP Network Management Nov. 19, 1996 |
125 |
|
126 |
Although this mapping is quite general and can be used for instance with |
127 |
protocols like SQL, our interest focuses on SNMP and CMIP: |
128 |
1. SNMPv1 |
129 |
<protocol>: SNMP |
130 |
<operation>: GET, GETNEXT, SET, WALK, TRAP(used to retrieve traps) |
131 |
<context>: object identifier which identifies the MIB attribute |
132 |
<parameters>: additional operation-dependent values (for instance the value |
133 |
to be used for the SET) |
134 |
|
135 |
2. CMIP |
136 |
<protocol>: CMIP |
137 |
<operation>: GET, SET, CREATE, DELETE, ACTION, EVR (used to retrieve |
138 |
event reports) |
139 |
<context>: Agent AE-Title/managed object instance |
140 |
<parameters>: additional operation-dependent values (for instance the value |
141 |
to be used for the SET) |
142 |
|
143 |
Since this mapping is supposed to be used not only by software |
144 |
applications (for instance CGI scripts) but also by human operators |
145 |
from within their WWW browsers, it is very important to have a clean |
146 |
and simple syntax. All the ASN.1 values have to be expressed in string |
147 |
format and binary values (BER) are not allowed since they cannot be |
148 |
handled by humans. The object identifiers contained inside the URL can |
149 |
be both in numeric and symbolic form. |
150 |
|
151 |
ASN.1 values for SNMP are fairly simple hence their conversion to |
152 |
string is straightforward: |
153 |
|
154 |
+------------------------------------------------------------------+ |
155 |
| INTEGER | '1996' | |
156 |
+------------------------------------------------------------------+ |
157 |
| OCTET STRING | 'Luca' | |
158 |
+------------------------------------------------------------------+ |
159 |
| OBJECT IDENTIFIER | '1.3.6.1.2' or 'mgmt' | |
160 |
+------------------------------------------------------------------+ |
161 |
| IpAddress | '9.4.33.33' or 'kis.zurich.ibm.com' | |
162 |
+------------------------------------------------------------------+ |
163 |
| Counter32 | '4294967294' | |
164 |
+------------------------------------------------------------------+ |
165 |
| Gauge32 | '3265532231' | |
166 |
+------------------------------------------------------------------+ |
167 |
| TimeTicks | '2645533545' | |
168 |
+------------------------------------------------------------------+ |
169 |
| Opaque | '<BER-encoded data>' | |
170 |
+------------------------------------------------------------------+ |
171 |
|
172 |
|
173 |
In the case of CMIP, ASN.1 values can be very complex hence it is |
174 |
necessary to identify a mapping from ASN.1 to strings and |
175 |
vice-versa. For this purpose, a mapping such as the one defined in |
176 |
[CMIPRun] can be used. |
177 |
|
178 |
The following examples show how to use the mapping between SNMP/CMIP |
179 |
and URL. Supposing we have an HTTP server (or the proxy) running on |
180 |
host kis.zurich.ibm.com: |
181 |
1. SNMP |
182 |
get the value of sysDescr.0 contained in the SNMP agent running |
183 |
on host bal.zurich.ibm.com: |
184 |
|
185 |
http://kis.zurich.ibm.com/SNMP/GET/sysDescr.0?Host=bal.zurich.ibm. |
186 |
com&Community=public |
187 |
Example 1: SNMP Request |
188 |
|
189 |
Expires May 19, 1997 [Page 3] |
190 |
|
191 |
Internet Draft HTTP-based SNMP and CMIP Network Management Nov. 19, 1996 |
192 |
|
193 |
2. CMIP |
194 |
set the administrativeState attribute to 'enabled' of the managed |
195 |
object instance systemId=(name IBM) contained on the agent whose |
196 |
AE-title is abc: |
197 |
|
198 |
http://kis.zurich.ibm.com/CMIP/SET/abc/systemId=(name+IBM)?administrative |
199 |
State=enabled&timeout=30 |
200 |
Example 2: CMIP Request |
201 |
|
202 |
|
203 |
In the case CGI is used, the HTTP server has to be configured in such |
204 |
a way that it recognises the protocol name and then starts CGI |
205 |
applications whose names correspond to the value of <operation>. For |
206 |
the previous examples, a possible configuration file for an HTTP |
207 |
server is: |
208 |
|
209 |
ScriptAlias /CMIP/ /usr/local/httpd/CMIP-bin/ |
210 |
ScriptAlias /SNMP/ /usr/local/httpd/SNMP-bin/ |
211 |
Figure 2: Sample HTTP configuration for CGI applications |
212 |
|
213 |
where on every -bin directory the CGI applications are contained. For |
214 |
instance, in the Example 1., inside the directory |
215 |
/usr/local/httpd/SNMP-bin/ there is a CGI application called GET. |
216 |
|
217 |
|
218 |
4. SNMP/CMIP requests over HTTP |
219 |
|
220 |
Once the mapping between SNMP/CMIP and URLs is defined, it is now |
221 |
necessary to specify what the format of the information returned by |
222 |
the HTTP protocol is. Supposing the URL shown in the Example 1 is |
223 |
selected, an HTTP client will send the following data to the HTTP |
224 |
server running on kis.zurich.ibm.com: |
225 |
|
226 |
GET SNMP/GET/sysDescr.0?Host=bal.zurich.ibm.com&Community=public HTTP/1.0 |
227 |
[empty line] |
228 |
Figure 3: Data sent by an HTTP client in order to issue |
229 |
the request shown in Example 1 |
230 |
|
231 |
The HTTP response, returned by the HTTP server, is always positive |
232 |
(HHTP wise) unless the requested URL cannot be found or if some other |
233 |
problem arose (for instance authentication problems). In case the HTTP |
234 |
response is positive, it will contain the SNMP response which can be |
235 |
either positive or negative. The HTTP response contains a set of pairs |
236 |
(<identifier>, <value>) separated with carriage return. In case the |
237 |
SNMP response is negative, the last pair is (<empty line>, <error |
238 |
code>) where <error code> contains the error code corresponding to the |
239 |
SNMP request in numeric or string format (for instance "noSuchName" or |
240 |
"2" as defined in the SNMP RFC). Identifiers are object identifiers, |
241 |
usually in symbolic form, whereas values are strings encoded using the |
242 |
encode scheme used by the HTTP protocol. Each line part of the HTTP |
243 |
response is encoded using the URL encoding. This is necessary to avoid |
244 |
that characters like '\n' or '\r', which may be part of the response, |
245 |
interfere with the carriage return used to separate the |
246 |
lines. Multipart MIME encoding can be used as well but it is much more |
247 |
complicated than URL encoding. |
248 |
|
249 |
|
250 |
|
251 |
|
252 |
Expires May 19, 1997 [Page 4] |
253 |
|
254 |
Internet Draft HTTP-based SNMP and CMIP Network Management Nov. 19, 1996 |
255 |
|
256 |
A positive response for the previous requests is the following: |
257 |
|
258 |
HTTP/1.0 200 OK |
259 |
Server: IBM ZRL Proxy Server |
260 |
Date: Fri, 28 Jun 1996 12:30:16 GMT |
261 |
Content-type: text/x-www-form-urlencoded |
262 |
Content-length: 35 |
263 |
|
264 |
sysDescr.0 |
265 |
IBM+RISC+System%2F6000 |
266 |
|
267 |
The proposed solution allows to return both a single response or to |
268 |
return multiple responses encapsulated in a single HTTP response. In |
269 |
the case of SNMP Walk for instance, the response contains multiple |
270 |
pairs, one for each element of the MIB. HTTP responses can contain |
271 |
additional fields, like the value type (for instance 'TimeTicks'), |
272 |
which can be used by the client application (for instance the WWW |
273 |
browser) to display the returned value properly. |
274 |
|
275 |
Similar considerations can be done for CMIP. The only difference with |
276 |
respect to SNMP is that CMIP scoped requests can return multiple CMIP |
277 |
responses where each CMIP response contains multiple attributes |
278 |
relative to a specific object instance. In this case CMIP responses |
279 |
are separated with a (<empty line>, <empty line>). Please note that if |
280 |
the first line of the HTTP response is an <empty line> when the |
281 |
response is negative otherwise it is positive. Due to this there is |
282 |
not ambiguity between (<empty line>, <empty line>) and (<empty line>, |
283 |
<error code>) in case <error code> is empty. |
284 |
|
285 |
|
286 |
5. Conclusion |
287 |
|
288 |
The network management world can significantly benefit from the use of |
289 |
the WWW. This document proposes a way to issue network management |
290 |
requests using the HTTP protocol. Major characteristics of the |
291 |
proposed solutions are: |
292 |
* use of the standard HTTP protocol; |
293 |
* use of symbolic strings which are handled efficiently by common tools |
294 |
such as awk, sed, and perl and (almost) any programming language; |
295 |
* ability to manage SNMP/CMIP resources located across firewalls using |
296 |
the HTTP protocol. |
297 |
|
298 |
This work puts the emphasis on the communication aspect rather the |
299 |
programming aspect. In order to create systems manageable using HTTP, |
300 |
it is necessary to specify the format of the request/response leaving |
301 |
freedom to the developers to select the most appropriate way to issue |
302 |
requests and to handle responses. |
303 |
|
304 |
6. Acknowledgements |
305 |
|
306 |
The author gratefully acknowledges Robert Akolk, Bela Ban, Benjamin |
307 |
Reed and Bert Wijnen for all their comments and suggestions. |
308 |
|
309 |
|
310 |
7. References |
311 |
|
312 |
[CMIP] ISO/IEC, CCITT, "Information Technology-OSI, Common Management |
313 |
Information Protocol (CMIP)-Part 1": Specification ISO/IEC 9596-1, |
314 |
CCITT Recommendation X.711, 1991. |
315 |
|
316 |
|
317 |
|
318 |
Expires May 19, 1997 [Page 5] |
319 |
|
320 |
Internet Draft HTTP-based SNMP and CMIP Network Management Nov. 19, 1996 |
321 |
|
322 |
[CMIPRun] Wade Allen, "An Alternate API for Representing ASN.1 |
323 |
Values", CMIP Run! Magazine, Volume 2, Number 4, 4Q93. |
324 |
|
325 |
[Hazewinkel] H. Hazewinkel, E. van Hengstum and A. Pras, "Definitions |
326 |
of Managed Objects for HTTP", draft-hazewinkel-httpmib-00.txt, |
327 |
University of Twente, April 1996. |
328 |
|
329 |
[HTML] D. Raggett, "HyperText Markup Language Specification Version |
330 |
3.0 (HTML)", Internet Draft, April 1995. |
331 |
|
332 |
[HTTP] T. Berners-Lee, R. Fielding and H. Frystyk, "Hypertext Transfer |
333 |
Protocol HTTP/1.0", RFC 1945, May 1996. |
334 |
|
335 |
[SNMP] J. Case, M. Fedor, M. Schoffstall and C. Davin, "The Simple |
336 |
Network Management Protocol (SNMP)", RFC 1157, May 1990. |
337 |
|
338 |
[URL] T. Berners-Lee, "Uniform Resource Locators (URL)", Internet |
339 |
Draft, March 1994. |
340 |
|
341 |
|
342 |
|
343 |
|
344 |
|
345 |
|
346 |
|
347 |
|
348 |
|
349 |
|
350 |
|
351 |
|
352 |
|
353 |
|
354 |
|
355 |
|
356 |
|
357 |
|
358 |
|
359 |
|
360 |
|
361 |
|
362 |
|
363 |
|
364 |
|
365 |
|
366 |
|
367 |
|
368 |
Expires May 19, 1997 [Page 6] |
369 |
|