INTERNET-DRAFT                                            Ivan Lovric
ICP Working Group                                      France Telecom
October 21, 1999
Expires: April 22, 2000
draft-lovric-icp-ext-02.txt



                 Internet Cache Protocol Extension



Status of this Memo

This document is an Internet-Draft and is in full conformance with
all the provisisions of Section 10 of RFC2026.

Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time.  It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in progress".

The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt


The list of Internet-Drafts Shadow Directories can be accessed at
http://www.ietf.org/shadow.html .



Abstract

ICP (see [RFC2186]) is a protocol allowing standardized communication
management between caches.
This document describes an extension to the ICP protocol whose aim is
to reach the following three goals :

  - locating requested data more efficiently among a cache hierarchy,
  - reducing network traffic between caches by exchanging compressed
  data over different protocols,
  - offering a suitable protocol for the forthcoming techniques of
  push and intelligent prefetching.



Table of contents

1. Introduction......................................................2

2. Terminology.......................................................3


Lovric                                                     [Page 1]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


3. New OP codes......................................................4

3.1 ICP_OP_SET_INF...................................................4

3.2 ICP_OP_SET.......................................................5

3.3 ICP_OP_SET_OBJ...................................................6

3.4 ICP_OP_SET_TAB_INF...............................................7

3.5 ICP_OP_SET_TAB...................................................8

3.6 ICP_OP_SET_TAB_OBJ...............................................9

3.7 ICP_OP_GET_INF..................................................10

3.8 ICP_OP_INF......................................................10

4. New ICP Option Flags.............................................11

5. Security.........................................................13

6. Format of a list of URLs file ...................................13

6.1 Format description..............................................13

6.2 Example.........................................................14

7. Conclusion.......................................................14

8. References.......................................................15

9. Authors' Address.................................................15


1. Introduction

The ICP protocol allows communication between a hierarchy of caches by
transmitting messages between the different caches making up this
hierarchy.
First of all, the messages transmitted by a cache to locate a specific
object are sent to sibling caches which are placed at the same level
in the hierarchy. Then, the caches placed at the upper level are
queried if the replies from sibling caches did not succeed.
The disadvantage of this communication system between caches resides
in the large number of messages sent to sibling and upper level caches
in order to find a particular object, but without being sure to find
it among the whole hierarchy. This large number of messages generates
a supplemental network load which reduces network capabilities.
In order to limit the amount of query messages, it should be more
convenient for each cache to know all or part of the content of other
caches, thus permitting a faster way to locate the requested
information.

Lovric                                                     [Page 2]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


Furthermore, the broadcasting technologies are evolving very fast.
Satellite and multicast techniques make possible the emission of a
unique information which will reach a lot of different receivers.
Also, the recent arrival of artificial intelligence technologies on
the net enables new intelligent prefetching solutions to be
developped, so that information will be placed near the end users even
before their request.
The actual version of ICP does not offer a convenient way to push
information between caches, and to take advantage of the forthcoming
technologies.
To be able to push data between caches, it should be useful to
remotely command a cache in order to modify its content, and to take
advantage of compression techniques, so that the amount of network
traffic necessary to push objects could be limited.

All these elements work towards the necessity to extend the ICP
protocol in order to permit better interactivity between the different
caches that cooperate within the hierarchy . For each cache, this
interactivity must result firstly in the knowledge of the content of
other caches so that requested information could be efficiently
located. Secondly, this interactivity must also result in the
acceptance of commands from other caches which must be able to
remotely update the content of a given cache. In order to optimize
data transfer rates and to minimize network traffic, the hierarchical
cache system built over ICP must be able to use the most efficient
protocol for data transmission over a specific link, and must allow
data compression.
To reach these goals, new operation codes have been created that reuse
the initial structure of ICP messages, thus preserving compatibility
with protocol ICP-v2.


2. Terminology

client cache:
In this document, client cache represents the cache which is asked to
process an insert or a delete command.

Server cache:
Server cache represents the cache which asks a client cache to process
an insert or a delete command.

URL :
An Uniform Ressource Locator is used to locate resources, by providing
an abstract identification of the resource location.
(see [RFC1738])

alias :
An alias is the duplication of a particular cached object.
A new URL name is given to the alias, and the protocol used for
accessing the alias can be different from the original protocol. The
alias can be compressed to minimize storage space and network traffic.


Lovric                                                     [Page 3]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999

object :
Any kind of text or binary data which can be cached.

Ressource :
In this document, a ressource is equivalent to an object.

MIME content-type :
The MIME (Multipurpose Internet Mail Extensions, see [RFC1341])
content-type describes the format of a type of content for an object.
In this document, the MIME content-type encoding is only used for
compressed objects, so that the format can only fit in the form
"application/subtype".


3. New Opcodes

The following table shows the new ICP opcodes :

Value   Name
-----   ------------------
   24   ICP_OP_SET_INF
   25   ICP_OP_SET
   26   ICP_OP_SET_OBJ
   27   ICP_OP_SET_TAB_INF
   28   ICP_OP_SET_TAB
   29   ICP_OP_SET_TAB_OBJ
   30   ICP_OP_GET_INF
   31   ICP_OP_INF


3.1 ICP_OP_SET_INF

This message informs the client cache that a cached URL is available
on the server cache. The client cache can update its internal tables
concerning the server cache content (similar to ICP_OP_ADVERTISE).

The information supplied with the message also describes the possible
existence of an alias and its compression method.

ICP_OP_SET_INF payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   / Null terminated URL           /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   / Null terminated URL for alias /
   / if flag ICP_FLAG_ALIAS        /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               +
   / Null terminated MIME          /
   / content-type if flag          /
   / ICP_FLAG_COMPRESSED_ALIAS     /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Lovric                                                     [Page 4]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999

If the flag ICP_FLAG_SET_DEL is set , then the server cache no longer
holds the URL specfified within the message payload (similar to
ICP_OP_UNADVERTISE).

If the flag ICP_FLAG_ALIAS is set , then the URL is followed by the
aliased URL within the payload.

If the flag ICP_FLAG_COMPRESSED_ALIAS is set , then the object pointed
to by the aliased URL is compressed. The compression method is
described by the MIME content-type following the URL of the alias.


3.2 ICP_OP_SET

This message is sent to ask the client cache for the delayed loading
of a specific URL or for the delayed deletion of this URL on the
client cache.


ICP_OP_SET payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          delay                +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / Null terminated URL           /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / Null terminated URL for alias /
   / if flag ICP_FLAG_ALIAS        /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               +
   / Null terminated MIME          /
   / content-type if flag          /
   / ICP_FLAG_COMPRESSED_ALIAS     /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The maximum delay before the client cache loads the given URL, is
indicated within the message as a 4-octet integer representing the
time expressed in milliseconds. The delay counting starts when the
client cache receives the message.
If a null delay is given, the URL has to be immediately loaded by the
client cache.

If an alias is given, the client cache must load the alias located at
the given URL for the alias. After loading, the alias is eventually
decompressed, and must be renamed with the name of the original URL.

If flag ICP_FLAG_SET_DEL is set, a delete command of the given URL
must be processed within the indicated delay.

Lovric                                                     [Page 5]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


If the client cache does not allow insert or delete commands to be
done, a message ICP_OP_DENIED must be sent with flags
ICP_FLAG_DENY_INSERT or ICP_FLAG_DENY_DELETE set.

If the client cache does not allow aliases to be processed, a message
ICP_OP_DENIED must be sent with flag ICP_FLAG_DENY_ALIAS set.

If the client cache does not allow compressed aliases to be processed,
a message ICP_OP_DENIED must be sent with flag
ICP_FLAG_DENY_COMPRESSION set.

If the client cache does not support processing of the aliased URL
protocol, or of the compression method, a message ICP_OP_ERR must be
sent with flags ICP_FLAG_ERR_PROTOCOL or ICP_FLAG_ERR_COMPRESSED set.



3.3 ICP_OP_SET_OBJ

This message is identical to ICP_OP_SET except that the object is
directly included within the payload. In order to preserve
compatibility with the previous version of ICP, the total size of the
message must not exceed 16384 octets.

ICP_OP_SET_OBJ payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          delay                +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / Null terminated URL           /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               +
   / Null terminated MIME          /
   / content-type if flag          /
   / ICP_FLAG_COMPRESSED_OBJ       /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / Object                        /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


If the flag ICP_FLAG_COMPRESSED_OBJ is set , then the object is
compressed with the compression method included within the payload,
located prior to the object.

If the client cache does not allow objects to be included within


Lovric                                                     [Page 6]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


payload, a message ICP_OP_DENIED must be sent with flag
ICP_FLAG_DENY_OBJ set.

If the client cache does not allow included objects to be compressed,
a message ICP_OP_DENIED must be sent with flag
ICP_FLAG_DENY_COMPRESSION set.


Remark :
Before sending a compressed object, the server cache should verify
that the client cache has enabled this functionnality to be processed,
and is able to decompress the object, by sending a message ICP_OP_INF.



3.4 ICP_OP_SET_TAB_INF

This message informs the client cache that a list of cached URLs is
available on the server cache. By requesting this list at the given
URL, the client cache can update its internal tables concerning the
server cache content.
An alias of the list, eventually compressed, may exist.

The list of URLs is a text formatted object described in 5. Its URL
is included within the message payload.


ICP_OP_SET_TAB_INF payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          delay                +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Required storage space (ko)   +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Number of URLs|               +
   +-+-+-+-+-+-+-+-+               +
   |                               |
   / Null terminated URL           /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / Null terminated URL for alias /
   / if flag ICP_FLAG_ALIAS        /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               +
   / Null terminated MIME          /
   / content-type if flag          /
   / ICP_FLAG_COMPRESSED_ALIAS     /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Lovric                                                     [Page 7]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


If the flag ICP_FLAG_SET_DEL is set , then the list contains at least
one URL that has been deleted on the server cache.

If the list contains at least one URL pointing to an alias, then the
flag ICP_FLAG_ALIAS_IN_LIST must be set.

If the list itself is not aliased, but contains compressed aliases
(flag ICP_FLAG_ALIAS unset, flag ICP_FLAG_ALIAS_IN_LIST set,
flag ICP_FLAG_ALIAS_COMPRESSED set), then the compression method for
aliases must be included within the payload.

If the list is aliased and the alias is compressed (flag
ICP_FLAG_ALIAS set and flag ICP_FLAG_COMPRESSED_ALIAS set), then the
compression method for eventual compressed aliases within the list
must be the same as the one used to compress the alias of the list.

The required storage space (unit expressed in kilo-octets) give
information to the client cache about the amount of space necessary to
store all the objects pointed to by the URLs indicated in the list
after decompression of compressed objects.

The number of URLs in the list is indicated in a 2-octet field within
the payload.



3.5 ICP_OP_SET_TAB

This message is sent to ask the client cache for the delayed loading
of a list of URLs and for the delayed loading of all the URLs within
the list.

ICP_OP_SET_TAB payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          delay                +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Required storage space (ko)   +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Number of URLs|               +
   +-+-+-+-+-+-+-+-+               +
   / Null terminated URL           /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / Null terminated URL for alias /
   / if flag ICP_FLAG_ALIAS        /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   / Null terminated MIME          /
   / content-type if flag          /
   / ICP_FLAG_COMPRESSED_ALIAS     /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Lovric                                                     [Page 8]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


If the flag ICP_FLAG_SET_DEL is set , then the list contains at least
one delete command to process on the client cache.
If this flag is not set, and the list nevertheless contains delete
commands, those commands must not be processed.

If the client cache does not allow aliases whose URL is placed either
in payload or in a list file to be processed, a message ICP_OP_DENIED
must be sent with flag ICP_FLAG_DENY_ALIAS set.


3.6 ICP_OP_SET_TAB_OBJ

This message is sent to ask the client cache for the delayed loading
of a list of URLs.

The list of URLs is included within the message and is formatted as
decribed in 5. It may be compressed.


ICP_OP_SET_TAB_OBJ payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          delay                +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Required storage space (ko)   +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Number of URLs|               +
   +-+-+-+-+-+-+-+-+               +
   |                               +
   / Null terminated MIME          /
   / content-type if flag          /
   / ICP_FLAG_COMPRESSED_OBJ       /
   / or flag                       /
   / ICP_FLAG_COMPRESSED_ALIAS     /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / List of URLs                  /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


If the flag ICP_FLAG_COMPRESSED_OBJ is set , then the list is
compressed using the compression method included within the payload.

If the flag ICP_FLAG_COMPRESSED_ALIAS is set , then the list contains
compressed aliases.

If the list contains compressed aliases and is itself compressed
(flag ICP_FLAG_COMPRESSED_OBJ set and flag ICP_FLAG_COMPRESSED_ALIAS


Lovric                                                     [Page 9]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


set), then the compression method for aliases must be the same as the
one used to compress the list.

If the list contains compressed aliases and is itself not compressed
(flag ICP_FLAG_COMPRESSED_OBJ unset and flag
ICP_FLAG_COMPRESSED_ALIAS set), then the compression method for
aliases is indicated within the payload format.



3.7 ICP_OP_GET_INF

This message is sent to a client cache in order to obtain information
about its capabilities and permitted commands.

If the flag ICP_FLAG_SRC_RTT is set then the performance
characteristics of the reply link need to be measured.
This feature is particurlary useful to improve the peer selection
algorithm even in the case of asymetrical links between two
siblings which is actually a known problem of ICP.
When receiving this message whith flag ICP_FLAG_SRC_RTT set, the
client cache MUST immediately reply by sending two separate
ICP_OP_INF messages with a transmit timestamp in the Option Data
field. This timestamp is the time the client cache last touched
the reply message on sending it. The message length of the second
reply message MUST be twice the length of the first one by filling
the payload with the appropriate number of spaces.
When the server cache receives the two ICP_OP_INF replies from the
client cache, it is then possible to calculate the latency and
bandwidth of the return link from the client cache. The appropriate
update of the peer selection algorithm SHOULD then be done.

Requirements :
To complete this feature, the ICP_OP_HIT message MUST be extended
in order to return the size of the requested object in the Option
Data field, so that the peer selection algorithm could choose the
closest peer depending on the link characteristics and the size of
the object.


3.8 ICP_OP_INF

This OP code can be sent by a client cache in reply to an
ICP_OP_GET_INF message, or directly, in order to inform other caches
about operations which are supported.


The different flags used for information are :

  - ICP_FLAG_ALLOW_INSERT
  - ICP_FLAG_ALLOW_DELETE
  - ICP_FLAG_ALLOW_COMPRESSION
  - ICP_FLAG_ALLOW_OBJ

Lovric                                                     [Page 10]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999

  - ICP_FLAG_ALLOW_ALIAS

ICP_OP_INF payload format :

   0       1       2       3       4
   012345678901234567890123456789012
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Max available space for insert|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   / NULL terminated list of       /
   / compression formats           /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   / NULL terminated list of       /
   / protocols                     /
   /                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


If the flag ICP_FLAG_ALLOW_INSERT is set , then the maximum available
space information (unit expressed in kilo-octets) indicates to the
server cache the largest amount of uncompressed object storage space
that can be currently inserted in the client cache.

If the flag ICP_FLAG_ALLOW_COMPRESSION is set, then a list of the MIME
content-types used for data compression that can be processed by the
client cache will be included within the message. The different
elements of this list are separated by a comma.

An example of a list of supported data compression types (null
terminated):
application/x-gzip,application/x-tar,application/x-zip-compressed


If the flag ICP_FLAG_ALLOW_ALIAS is set, then a list of the protocols
that can be processed by the client cache will be included within the
message. The different elements of this list are separated by a comma.

An example of a list of protocols (null terminated):
http,ftp,file


4. ICP Option Flags

0x00000010 ICP_FLAG_COMPRESSED_OBJ
This flag indicates that the object joined to the message is
compressed.

0x00000020 ICP_FLAG_SET_DEL
This flag indicates that the message contains at least one delete
command to process on the client cache.



Lovric                                                     [Page 11]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999

0x00000040 ICP_FLAG_ALIAS
This flag indicates that the message contains at least one alias.

0x00000080 ICP_FLAG_COMPRESSED_ALIAS
This flag indicates that the message or list of URLs contains
compressed aliases.

0x00000100 ICP_FLAG_ALIAS_IN_LIST
This flag indicates that the list of URLs contains at least one URL
pointing to an alias.

0x00000200 ICP_FLAG_ERR_PROTOCOL
This flag indicates that the client cache does not process the
protocol used for an URL or an aliased URL.

0x00000400 ICP_FLAG_ERR_COMPRESSED
This flag indicates that the client cache does not process the
compression method used for a compressed object.

0x00001000 ICP_FLAG_DENY_INSERT
This flag indicates that the client cache does not allow insert
commands from a server cache to be done.

0x00002000 ICP_FLAG_DENY_DELETE
This flag indicates that the client cache does not allow delete
commands from a server cache to be done.

0x00004000 ICP_FLAG_DENY_COMPRESSION
This flag indicates that the client cache allows neither aliases nor
payload included objects to be processed.

0x00008000 ICP_FLAG_DENY_OBJ
This flag indicates that the client cache does not allow the
server cache to include objects within messages ICP_SET_OBJ and
ICP_SET_TAB_OBJ.

0x00010000 ICP_FLAG_DENY_ALIAS
This flag indicates that the client cache does not allow aliases whose
URL is placed either in payload or in a list file to be processed.

0x04000000 ICP_FLAG_ALLOW_INSERT
This flag indicates that the client cache allows insert commands to be
processed.

0x02000000 ICP_FLAG_ALLOW_DELETE
This flag indicates that the client cache allows delete commands to be
processed.

0x01000000 ICP_FLAG_ALLOW_COMPRESSION
This flag indicates that the client cache allows compressed objects to
be processed.

0x00800000 ICP_FLAG_ALLOW_OBJ
This flag indicates that the client cache allows objects to be

Lovric                                                     [Page 12]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999

included within messages ICP_OP_SET_OBJ and ICP_OP_SET_TAB_OBJ.

0x00400000 ICP_FLAG_ALLOW_ALIAS
This flag indicates that the client cache allows aliases to be
processed.
When receiving an aliased URL, the client cache must, first of all
decompress the alias it if it was compressed, and then rename it
with the original name of the URL.

5. Security

To provide strong integrity and authentication mechanisms during
exchanges between server and client caches, the IP Security
Architecture must be used with the IP Authentication Header (see
[RFC1825] and [RFC1826]).

6. Format of a list of URLs file

6.1 Format description

In the list file, URLs are stored hierarchically respecting the
following tree:

  - protocol,
  - host,
  - port,
  - path,
  - file name

To accelerate the location of a particular URL within the list,
specfic weights have been applied to the different hierarchical
levels :

  - 1 for protocol,
  - 2 for host
  - 3 for port,
  - 4 for path,
  - 5 for file name

Each filename must be preceded by a command code :

  - N for No operation, is only used to inform the client cache about
  the content of the server cache
  - I to process an insert command on the client cache,
  - D to process a delete command on the client cache, or to inform it
  that a particular URL has been deleted on the server cache

The file name may be followed by an URL which indicates the location
of an alias. The alias may be compressed ; if so , the compression
method is the same as the one indicated in the message payload.
In the list file, the code to describe aliases is :

  - A for Alias
  - AC for Alias Compressed

Lovric                                                     [Page 13]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999

Assuming that the http is the default protocol, and port 80 is the
default port for http servers, the refering lines in the list file can
be omitted.

Remark :
By this format specification, it is possible to use a protocol of
type file:// for aliases. In this case, aliases can be directly
accessed from the file system of the client cache.

6.2 Example

To make the understanding of the format of a list of URLs file easier,
the following example explains how the four URLs listed below should
be formatted in the list file. A compressed alias of the object
pointed to by the URL http://www.url1.org/index.html exists and is
located at the URL ftp://ftp.url1.org/index.html.gz .

  - http://www.url1.org/index.html
  - http://www.url1.org/logo.gif
  - http://www.url2.com/dir2/file2.html
  - http://www.url2.com/dir2/file2.gif

The list of URLs file should be :
1,http
2,www.url1.org
3,80
4,/
5,I,index.html,AC,ftp://ftp.url1.org/index.html.gz
5,I,logo.gif
2,www.url2.com
3,80
4,/dir2/
5,I,file2.html
5,I,file2.gif


Refering to the fact that http is the default protocol and port 80 is
the default port for http servers, an other form for the list file
could be :

2,www.url1.org
4,/
5,I,index.html,AC,ftp://ftp.url1.org/index.html.gz
5,I,logo.gif
2,www.url2.com
4,/dir2/
5,I,file2.html
5,I,file2.gif


7. Conclusion

This draft has described the ICP protocol extensions necessary to
answer the current needs of network traffic management, and the next

Lovric                                                     [Page 14]


INTERNET-DRAFT    Internet Cache Protocol Extension       October 1999


needs of push technologies.
It also demonstrates that ICP protocol can be extended because of its
evolutional structure. So, new services will probably appear which
will rely on the capabilities of this protocol.


8. References

[RFC-1341]
   Borenstein,   N.,   and   N.   Freed,    "MIME (Multipurpose
   Internet  Mail  Extensions):  Mechanisms  for Specifying and
   Describing the  Format  of  Internet  Message Bodies",
   RFC 1341, Bellcore, June, 1992.

[RFC1738]
   Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform Resource
   Locators (URL)", RFC 1738, CERN, Xerox PARC, University of
   Minnesota, December 1994.

[RFC1825]
   Atkinson, R., "Security Architecture for the Internet Protocol",
   RFC 1825, NRL, August 1995.

[RFC1826]
   Atkinson, R., "IP Authentication Header", RFC 1826, NRL,
   August 1995.

[RFC2186]
   D. Wessels, K. Claffy,``Internet Cache Protocol (ICP), version 2,''
   RFC 2186, National Laboratory for Applied Network Research/UCSD,
   September 1997


9. Author's address

Ivan Lovric
France Telecom
Centre National d'Etudes en Telecommunications
42, rue Coutures
BP 6243 14066 Caen Cedex
France

Phone:  +33 2 31 75 91 25
Fax:    +33 2 31 73 56 26
E-mail: ivan.lovric@cnet.francetelecom.fr

























Lovric                                                    [Page 15]