NOTE-HTTP-NG-testbed-19980710
18.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
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
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/4.05 [en] (X11; I; Linux 2.0.34 i686) [Netscape]">
<TITLE>Design of HTTP-NG Testbed</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" lang="en">
<DIV ALIGN=right>
<H3>
<A HREF="http://www.w3.org/"><IMG SRC="../../../../../Icons/WWW/w3c_home"
ALT="W3C" BORDER=0 ALIGN=LEFT></A>NOTE-HTTP-NG-testbed-980710
</H3>
</DIV>
<CENTER>
<H1>
Design of HTTP-NG Testbed
</H1>
</CENTER>
<CENTER>
<H3>
W3C Note 10 July 1998
</H3>
</CENTER>
<DL>
<DT>
This version:
<DD>
<A HREF="http://www.w3.org/TR/1998/NOTE-HTTP-NG-testbed-980710">http://www.w3.org/TR/1998/NOTE-HTTP-NG-testbed-980710</A>
<DT>
Latest Released Version:
<DD>
<A HREF="http://www.w3.org/TR/NOTE-HTTP-NG-testbed">http://www.w3.org/TR/NOTE-HTTP-NG-testbed</A>
<DT>
Author:
<DD>
<A HREF="mailto:veillard@w3.org">Daniel Veillard</A>,
<<A HREF="mailto:veillard@w3.org">veillard@w3.org</A>>
</DL>
<p><small><A href='http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright'>Copyright</A> © 1998 <A href='http://www.w3.org'>W3C</A> (<A href='http://www.lcs.mit.edu'>MIT</A>, <A href='http://www.inria.fr/'>INRIA</A>, <A href='http://www.keio.ac.jp/'>Keio</A> ), All Rights Reserved. W3C <A href='http://www.w3.org/Consortium/Legal/ipr-notice.html#Legal Disclaimer'>liability,</A> <A href='http://www.w3.org/Consortium/Legal/ipr-notice.html#W3C Trademarks'>trademark</A>, <A href='http://www.w3.org/Consortium/Legal/copyright-documents.html'>document use </A>and <A href='http://www.w3.org/Consortium/Legal/copyright-software.html'>software licensing </A>rules apply.</small></p>
<H2>
Status of this Document
</H2>
<P>
This is a note published by the
<A HREF="http://www.w3.org/Protocols/HTTP-NG/">HTTP-NG</A> Protocol Design
Working Group describing the goals, current state and future development
of the HTTP-NG testbed..
<P>
This document has been produced as part of the
<A HREF="http://www.w3.org/Protocols/HTTP-NG/Activity">W3C HTTP-NG
Activity</A>. This is work in progress and does not imply endorsement by,
or the consensus of, either W3C or members of the
<A HREF="http://www.w3.org/Protocols/HTTP-NG/Group/PDG/">HTTP-NG Protocol
Design</A> and <A HREF="http://www.w3.org/Protocols/HTTP-NG/Group/WCG/">HTTP-NG
Web Characterization</A> Working Groups. This document is subject to change,
check the reference to the latest version.
<P>
The goal of the testbeds are to evaluate the feasibility of the
<A HREF="http://www.w3.org/Protocols/HTTP-NG/">HTTP-NG</A> model, its
performances, its extendibility, and the ability to integrate the HTTP-NG
model in he existing Web architecture. Building higher level demonstration
exhibiting the extra benefits of the HTTP-NG model is also planned. The suggested
experiments are of three kinds:
<OL>
<LI>
<A HREF="#Performanc">A base testbed infrastructure</A>
<LI>
<A HREF="#Extra">Higher level functionalities demonstrations</A>
<LI>
<A HREF="#Compatibil">Transition strategy evaluation</A>
<LI>
<A HREF="#software">Available tools and codebases</A>
<LI>
<A HREF="#Status">Current status</A>
</OL>
<P>
This document describes the expected architecture for each kind of testbed,
the main pieces of code used, the expected experiments and way to evaluate
the results.
<P>
This document is part of a suite of documents describing the HTTP-NG design
and prototype implementation:
<UL>
<LI>
<A HREF="http://www.w3.org/TR/1998/WD-HTTP-NG-goals">HTTP-NG Short- and Longterm Goals</A>, WD
<LI>
<A HREF="http://www.w3.org/TR/WD-HTTP-NG-architecture">HTTP-NG Architectural Model</A>, WD
<LI>
<A HREF="http://www.w3.org/TR/WD-HTTP-NG-wire">HTTP-NG Wire Protocol</A>, WD
<LI>
<A HREF="http://www.w3.org/TR/WD-HTTP-NG-wire">The Classic Web Interfaces in HTTP-NG</A>, WD
<LI>
<A HREF="http://www.w3.org/TR/WD-mux">The MUX Protocol</A>, WD
<LI>
<A HREF="http://www.w3.org/TR/NOTE-HTTP-NG-testbed">Description of the HTTP-NG Testbed</A>, Note
</UL>
<P>
Please send comments on this specification to
<<A HREF="mailto:www-http-ng-comments@w3.org">www-http-ng-comments@w3.org</A>>.
<H2>
<A NAME="Performanc"></A>The base testbed infrastructure
</H2>
<P>
The purpose is to evaluate the suitability one can expect from HTTP-NG when
running basic HTTP interfaces using HTTP-NG protocol on both the client side
and the server. The architecture is a client issuing HTTP-NG requests, a
server answering these requests using a realistic set of Web pages. The requests
can either be generated by the SURGE URI generator tuned to reflect various
kind of common HTTP usage, or hand coded to reflect more specific uses. The
client may either run in "one shot" mode fetching a page and the related
inlined objects for the purpose of analyzing a complete trace of a session,
or in robot mode to produce a realistic load on the server. One goal is to
be able to run the exact same tests in a similar enviroment but using the
HTTP/1.1 protocol, in order to compare the characteristics of both stacks.
<P>
<IMG SRC="base.gif" ALT="image: base.gif" >
<P>
The first goal of this base testbed experiment is to verify that the HTTP-NG
specification can actually handle the functionalities used by HTTP 1.x users.
The output of the Web Characterization Working Group will be a set of scenarios
exhibiting common HTTP 1.x practices. The SURGE program will then be used
to generate a realistic set of URI and time stamps, which in turn will be
used by the HTTP-NG robot client as requests to the HTTP-NG server. One will
also need to verify that not so current practices - the top 10 kludge usage
of HTTP - can also be served and this will be handled in a more specific
fashion, either generating the URI by hand or modify the client/server software
(for example when running another protocol on top of HTTP).
<P>
The second goal of this series of experiments is to analyze the behavior
and performances of HTTP-NG under different qualities of services. One should
at least try to reproduce the following commonly found network conditions:
<UL>
<LI>
LAN: high bandwidth, low latencies.
<LI>
WAN: medium bandwidth, high latencies
<LI>
Dialup: low bandwidth, high latencies
<LI>
Satellite links (asymetric), wireless, etc.
</UL>
<P>
The following metrics are of interest:
<UL>
<LI>
latency: time between client start of the request, at the API level, and
the availability of the beginning of the user level data
<LI>
throughput: this can be expressed using various different metrics, especially
the size of the user data transferred by unit of time for one shot tests
and the number of requests processed per second in robot mode.
<LI>
number of packets used
<LI>
average size of packets
<LI>
number of operating system calls needed
<LI>
load induced on the machines (system/user/io)
</UL>
<P>
This requires at least two machines and it may also be extremely useful to
get a dedicated piece of hardware sitting between the client and the server
which allows to simulate in a reproducible manner various network quality
of Services (bandwidth and latency tweaking). This may also be done using
an extra dedicated machine and a tunneling software.
<P>
Considering the software, one can be worried with the actual performances
of a Java, even if things may improve a lot in a not so distant future. Currently
is sound more reasonable to do the performance evaluation using a C code
base, and use ILU for both the client and server side. One should also try
to estimate the induced cost of genericity - ILU being a very generic system
supporting a lot of protocols and offering stubs for various languages.
<P>
Considering the server side, one need to implement some sample code sitting
behind the stubs generated from the interfaces by the ILU stubber. For this
purpose, ILU has been integrated into the Apache server.
<P>
The result of the tests should be compared with
<A HREF="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">the
actual numbers obtained for the HTTP 1.1</A> . Getting half an order of magnitude
faster on latencies for LAN should not be too difficult, but we have to compare
with the full range of network Quality of Service all the metrics and check
that it's at least as good on each points before considering the results
a success.
<P>
The next goal of this testbed is to test the ability of HTTP-NG specification
to support proxies and caching. The base testbed will then be extended by
adding a proxy/cache for HTTP-NG between the client and the server.
<CENTER>
<IMG SRC="proxy.gif" ALT="image: proxy.gif" >
</CENTER>
<P>
The analysis of the results on this configuration will probably a bit more
difficult to establish, here are a few points to look at:
<UL>
<LI>
performances in term of both throughput and CPU time usage.
<LI>
support for expiration time, content negotiation
<LI>
feasibility of differential updates and Push schemes for update of a set
of caches
</UL>
<P>
One should keep in mind that caching in the Web is still in its infancy and
the HTTP-NG specification must be able to handle the big changes in Web caching
technology which are likely to occur within the next few years. Extendibility
is a key point of HTTP-NG design from the proxying and caching point of view.
<H2>
<A NAME="Extra"></A>Higher level functionalities
</H2>
<P>
This testbed is really where we want to exhibit the extra capabilities of
HTTP-NG over HTTP 1.x . At this time it's somewhat difficult to predict how
extended this testbed will be, but a simple core experiment is definitely
needed to demonstrate the concepts behind HTTP-NG.
<P>
Here is an example based on existing W3C testbeds:
<OL>
<LI>
A <A HREF="http://www.w3.org/DOM/">DOM</A> (Document Object Model) demonstration,
where the Web client exports via HTTP-NG it's internal documents structure
and the associated interfaces as defined by the DOM WG document.
<CENTER>
<IMG SRC="DOM.gif" ALT="image: DOM.gif" >
</CENTER>
<P>
This testbed will demonstrate how the general interface of the Web based
on the "fetch then display" metaphor could shift onto a cooperative environment
relying on distributed structured documents.
<P>
A DOM implementation on top of Amaya/Thot is likely to occur, and adding
the support from HTTP-NG should be fairly trivial. This would provide a good
framework for demonstration of extra capabilities made possible by HTTP-NG,
here is a few suggestions:
<UL>
<LI>
push like demo, where content is inserted using the DOM API from a server
to the client.
<LI>
distributed authoring, based on WebDav semantics but achieved by the way
of direct remote access
<LI>
shared HTML white board
<LI>
etc...
</UL>
<P>
On such a framework, ideas to build demos come easily, the problem is mainly
related to the manpower needed to achieve them, not the capabilities of the
underlying platform.
<LI>
On the server side, adding WebDav APIs on top of and existing HTTP-NG server
would be a good example of extensibility mechanism provided by HTTP-NG. Even
without full support for the WebDav functionalities, a simple extension of
Jigsaw providing access to
</OL>
<H2>
<A NAME="Compatibil"></A>Transition strategy
</H2>
<P>
This testbed is needed to get a proof that the HTTP-NG can actually be deployed
on a large scale basis within the existing Web framework. We must show that
the HTTP-NG can actually be deployed even if a huge amount of software is
not currently able to support HTTP-NG protocol natively. The experience of
the migration from HTTP 1.0 to HTTP 1.1 showed that it's far easier to get
the server pool to implement new features (support for HTTP 1.1 is actually
available in most Web servers), than the client software, namely the browsers.
<P>
The goal of this testbed is to prove that it is actually possible to deploy
HTTP-NG on servers with an existing base of HTTP/1.* clients by implementing
translation proxies. It consist on designing and implementing an HTTP 1.*
to HTTP-NG proxy. We don't seek performances here and the cheapest implementation
will be the best one. This is purely a proof of concept with an actual
implementation:
<CENTER>
<IMG SRC="compat.gif" ALT="image: compat.gif" >
</CENTER>
<P>
The test should be conducted using several, commercial grade, HTTP clients
accessing an HTTP-NG server. Successful experiment will not exhibit any loss
of usability from the client side. One should take care of testing all the
common HTTP services, at least GET, POST, PUT and HEAD.
<P>
Considering the software, on the client side the choice is wide open, one
should just tried the most popular browsers and editing tools, running a
1.1 robot may prove useful too to stress the proxy. Since performances is
not the goal of this testbed, one should go to the cheapest solution in term
of development costs and it seems that extending Jigsaw to get an HTTP-NG
client side is the way to go. Once done, one just need to tweak the existing
proxy code in Jigsaw to have client and server side using different stacks.
The HTTP -NG server could be the same as for the base testbed, or Jigsaw
if the HTTP-NG server side is implemented.
<H2>
<A NAME="software"></A>Available tools and codebases
</H2>
<P>
One should probably have two different implementations of the HTTP-NG stack,
possibly using different languages. Most of the existing software we will
rely on is written in C or Java, and we will probably end up with a C/ILU
and a Java/Jigsaw implementations.
<P>
Here are the basic main pieces of software that will be used to to build
the HTTP-NG testbed::
<H3>
<A HREF="ftp://ftp.parc.xerox.com/pub/ilu/ilu.html">ILU</A>:
</H3>
<P>
The Inter-Language Unification system (ILU) is a multi-language object interface
system. The object interfaces provided by ILU hide implementation distinctions
between different languages, between different address spaces, and between
operating system types.
<P>
ILU latest implementation contains HTTP-NG experimental code, a
<A HREF="http://www.w3.org/Protocols/HTTP-NG/Group/PDG/wire-protocol/WD-HTTP-NG-wire-971103.html">wire
format</A>, <A HREF="http://www.w3.org/Protocols/MUX/">MUX</A> channel
multiplexing implementation, and all the glue needed to link with stubs generated
from an Interface Definition Language (IDL). Since it is currently the most
advanced HTTP-NG framework, now it will serve to validate the first versions
of the drafts.
<H3>
<A HREF="http://www.w3.org/Jigsaw/">Jigsaw</A>:
</H3>
<P>
Jigsaw is W3C's sample implementation of HTTP, the project constitutes an
ongoing W3C Activity . Jigsaw is a full blown HTTP server entirely written
in Java.
<P>
The HTTP-NG jigsaw code while not as advanced yet as ILU implementation will
provide a second piece of code, allowing to debug compatibility problems.
Being written in Java this also mean a different environment (virtual machine)
and hence a good test of operating system portability. Moreover the java
code gives access to two full featured testbed, Amaya and the Jigsaw server.
<H3>
<A HREF="http://www.w3.org/Amaya">Amaya</A>:
</H3>
<P>
Amaya is a Web client that acts both as a browser and as an authoring tool.
It has been designed with the primary purpose of being a testbed for
experimenting and demonstrating new specifications and extensions of Web
protocols and standards.
<P>
An experimental version of Amaya embed Jigsaw Java HTTP stack, so it is possible
to get a browser and HTML editor using the Java HTTP-NG code. This will prove
useful for higher level functionalities demonstration, especially since
<A HREF="http://www.w3.org/PICS/">PICS</A> and
<A HREF="http://www.w3.org/DOM/">DOM</A> support are being added to Amaya.
<H3>
<A HREF="http://www.apache.org/">Apache</A>:
</H3>
<P>
Apache is the most popular Web server, it is available freely with source
code.
<P>
A modified version of Apache embedding the ILU library has been produced
for the Testbed. It allows testing of the HTTP-NG stack within a full featured
Web server and provides a solid framework for tests, especially to compare
HTTP/1.1 and HTTP-NG respective performances.
<H3>
Surge:
</H3>
<P>
SURGE (Scalable URI Reference Generator) is a WWW workload generator which
is based on analytical models of WWW use. The goal of SURGE is to provide
a scalable framework which, from the server's perspective, makes document
requests which mimics a set of real users.
<P>
The various common Web access pattern which result from the Web Characterization
Working Group will be described as SURGE analytical models, allowing to produce
realistic simulations of actual Web traffic for the base testbed infrastructure.
<H2>
<A NAME="Status"></A>Current status
</H2>
<P>
The current status is that ILU library provides the core implementation of
HTTP-NG protocols, i.e. the MUX protocol, the wire encoding, the basic HTTP
interfaces stubs. Other pieces of software, namely Apache, Jigsaw, Surge,
Amaya have been modified to some extent to embed the ILU library. Currently
the base testbed is mostly functional, but more work is needed to test
performances, solve existing bottlenecks and cleanup the installation process
before a public release of the testbed. Advanced functionalities like proxy
testing and extensibility showcase are still waiting for more complete
specifications before upgrading the corresponding tools. <BR>
Here is a more detailed description of the current status of each piece of
software:
<OL>
<LI>
ILU : support for MUX, wire protocol, basic HTTP and HTTP-NG interfaces,
test implementation for a robot and a server.
<LI>
Apache : ILU support integrated, the server serves a similar set of pages
with Apache HTTP/1.1 implementation and a dynamically configurable ILU based
protocol stack (can be HTTP or HTTP-NG experimental stacks) using the
standard HTTP interfaces (GET, HEAD, POST).
<LI>
Amaya : versions embedding ILU and a Java interpreter are available. Currently
the DOM API is not stable enough for testing but it already export the Thot
APIs via ILU.
<LI>
Jigsaw : experiments with Jigsaw using ILU and the basic HTTP interface for
serving pages has been conducted. The latest releases of Jigsaw provide specific
extensions needed when exporting a resource using different protocol stacks,
this should ease the design of HTTP-NG specific extensions. Jigsaw also provide
an HTTP/1.1 proxy implementation, and seems the best candidate for test on
an HTTP/1.1 <-> HTTP-NG proxy
<LI>
Surge : version 1.0 of Surge has been integrated with ILU.
<LI>
various other small software pieces are also available.
</OL>
<P>
Most of the software base is available in a CVS repository (except Amaya
and Jigsaw available independently) and we intend to make this publicly available
during the continuous design phase. <BR>
</BODY></HTML>