idnits 2.17.1 draft-mclaggan-wccp-v2rev1-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- -- The document has an IETF Trust Provisions (28 Dec 2009) Section 6.c(i) Publication Limitation clause. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (August 2, 2012) is 4282 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group D. McLaggan 3 Internet-Draft Cisco Systems 4 Intended status: Informational August 2, 2012 5 Expires: February 3, 2013 7 Web Cache Communication Protocol V2, Revision 1 8 draft-mclaggan-wccp-v2rev1-00 10 Abstract 12 This document describes version 2 of the Web Cache Communication 13 Protocol (WCCP). The WCCP V2 protocol specifies interactions between 14 one or more routers and one or more web-caches. The interaction may 15 take place within an IPv4 or IPv6 network. The purpose of the 16 interaction is to establish and maintain the transparent redirection 17 of selected types of traffic flowing through a group of routers (or 18 similar devices). The selected traffic is redirected to a group of 19 web-caches (or other traffic optimisation devices) with the aim of 20 optimising resource usage and lowering response times. 22 The protocol does not specify any interaction between the web-caches 23 within a group or between a web-cache and a web-server. 25 Status of this Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. This document may not be modified, 29 and derivative works of it may not be created, except to format it 30 for publication as an RFC or to translate it into languages other 31 than English. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at http://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on February 3, 2013. 45 Copyright Notice 47 Copyright (c) 2012 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (http://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 60 1.1. Protocol Overview . . . . . . . . . . . . . . . . . . . . 5 61 1.2. Contributing Authors . . . . . . . . . . . . . . . . . . . 6 62 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 7 63 2.1. Time Interval Definitions . . . . . . . . . . . . . . . . 9 64 3. Protocol Description . . . . . . . . . . . . . . . . . . . . . 10 65 3.1. Joining a Service Group . . . . . . . . . . . . . . . . . 10 66 3.2. Describing a Service Group . . . . . . . . . . . . . . . . 12 67 3.3. Establishing Two-Way Connectivity . . . . . . . . . . . . 13 68 3.4. Negotiating the Protocol Version Number . . . . . . . . . 14 69 3.4.1. Responsibilities of a web-cache during version 70 negotiation . . . . . . . . . . . . . . . . . . . . . 15 71 3.4.2. Responsibilities of a router during version 72 negotiation . . . . . . . . . . . . . . . . . . . . . 16 73 3.5. Negotiating Capabilities . . . . . . . . . . . . . . . . . 17 74 3.5.1. Negotiating the Forwarding Method . . . . . . . . . . 19 75 3.5.2. Negotiating the Assignment Method . . . . . . . . . . 19 76 3.5.3. Negotiating the Packet Return Method . . . . . . . . . 20 77 3.5.4. Negotiating the TRANSMIT_T Message Interval Value . . 20 78 3.5.5. Negotiating the TIMEOUT_SCALE and RA_TIMER_SCALE 79 values . . . . . . . . . . . . . . . . . . . . . . . . 21 80 3.6. Advertising Views of the Service Group . . . . . . . . . . 22 81 3.7. Security . . . . . . . . . . . . . . . . . . . . . . . . . 22 82 3.8. Distribution of Traffic Assignments . . . . . . . . . . . 23 83 3.8.1. Hash Tables . . . . . . . . . . . . . . . . . . . . . 23 84 3.8.2. Mask/Value Sets . . . . . . . . . . . . . . . . . . . 24 85 3.9. Electing the Designated Web-cache . . . . . . . . . . . . 25 86 3.10. Traffic Interception . . . . . . . . . . . . . . . . . . . 25 87 3.11. Traffic Redirection . . . . . . . . . . . . . . . . . . . 26 88 3.11.1. Redirection with Hash Assignment . . . . . . . . . . . 26 89 3.11.2. Redirection with Mask Assignment . . . . . . . . . . . 26 90 3.12. Traffic Forwarding . . . . . . . . . . . . . . . . . . . . 27 91 3.12.1. Forwarding using GRE Encapsulation . . . . . . . . . . 27 92 3.12.2. Forwarding using L2 Rewrite . . . . . . . . . . . . . 28 93 3.13. Packet Return . . . . . . . . . . . . . . . . . . . . . . 29 94 3.13.1. Packet Return using GRE Encapsulation . . . . . . . . 29 95 3.13.2. Packet Return using L2 Rewrite . . . . . . . . . . . . 29 96 3.13.3. Preventing redirection of returned packets . . . . . . 30 98 3.14. Querying Web-Cache Time-Out . . . . . . . . . . . . . . . 30 99 3.15. Sending additional WCCP2_HERE_I_AM messages . . . . . . . 31 100 3.16. Command and Status Information . . . . . . . . . . . . . . 31 101 4. Protocol Messages . . . . . . . . . . . . . . . . . . . . . . 32 102 4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 32 103 4.2. 'Here I Am' Message . . . . . . . . . . . . . . . . . . . 34 104 4.3. 'I See You' Message . . . . . . . . . . . . . . . . . . . 35 105 4.4. 'Redirect Assign' Message . . . . . . . . . . . . . . . . 36 106 4.5. 'Removal Query' Message . . . . . . . . . . . . . . . . . 36 107 4.6. WCCP Message Header . . . . . . . . . . . . . . . . . . . 37 108 4.7. Multiple Address family support . . . . . . . . . . . . . 38 109 4.7.1. Messages without an address table component . . . . . 39 110 4.7.2. Messages with an address table component . . . . . . . 39 111 5. Message Components . . . . . . . . . . . . . . . . . . . . . . 40 112 5.1. Components used in multiple message types . . . . . . . . 41 113 5.1.1. Security Info Component . . . . . . . . . . . . . . . 41 114 5.1.2. Service Info Component . . . . . . . . . . . . . . . . 42 115 5.1.3. Capabilities Info Component . . . . . . . . . . . . . 45 116 5.1.4. Command Extension Component . . . . . . . . . . . . . 46 117 5.1.5. Address Table Component . . . . . . . . . . . . . . . 47 118 5.2. 'Here I Am' message components . . . . . . . . . . . . . . 49 119 5.2.1. Web-Cache Identity Info Component . . . . . . . . . . 49 120 5.2.2. Web-Cache View Info Component . . . . . . . . . . . . 50 121 5.3. 'I See You' message components . . . . . . . . . . . . . . 52 122 5.3.1. Router Identity Info Component . . . . . . . . . . . . 52 123 5.3.2. Router View Info Component . . . . . . . . . . . . . . 54 124 5.3.3. Assignment Map Component . . . . . . . . . . . . . . . 56 125 5.3.4. Alternate Assignment Map Component . . . . . . . . . . 56 126 5.4. 'Redirect Assign' message components . . . . . . . . . . . 58 127 5.4.1. Assignment Info Component . . . . . . . . . . . . . . 58 128 5.4.2. Alternate Assignment Component . . . . . . . . . . . . 60 129 5.5. 'Removal Query' message components . . . . . . . . . . . . 62 130 5.5.1. Router Query Info Component . . . . . . . . . . . . . 62 131 6. Message Elements . . . . . . . . . . . . . . . . . . . . . . . 63 132 6.1. Router Identity Element . . . . . . . . . . . . . . . . . 63 133 6.2. Router Assignment Element . . . . . . . . . . . . . . . . 64 134 6.3. Assignment Key Element . . . . . . . . . . . . . . . . . . 64 135 6.4. Web-Cache Identity Element . . . . . . . . . . . . . . . . 65 136 6.5. Hash Buckets Assignment Element . . . . . . . . . . . . . 67 137 6.6. Hash Assignment Data Element . . . . . . . . . . . . . . . 68 138 6.7. Mask Assignment Data Element . . . . . . . . . . . . . . . 69 139 6.8. Alternate Mask Assignment Data Element . . . . . . . . . . 69 140 6.9. Assignment Weight and Status Element . . . . . . . . . . . 70 141 6.10. Extended Assignment Data Element . . . . . . . . . . . . . 71 142 6.11. Capability Element . . . . . . . . . . . . . . . . . . . . 72 143 6.11.1. Capability Type WCCP2_FORWARDING_METHOD . . . . . . . 73 144 6.11.2. Capability Type WCCP2_ASSIGNMENT_METHOD . . . . . . . 73 145 6.11.3. Capability Type WCCP2_PACKET_RETURN_METHOD . . . . . . 73 146 6.11.4. Capability Type WCCP2_TRANSMIT_T . . . . . . . . . . . 74 147 6.11.5. Capability Type WCCP2_TIMER_SCALE . . . . . . . . . . 75 148 6.12. Command Element . . . . . . . . . . . . . . . . . . . . . 76 149 6.12.1. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN . . . . . . . 77 150 6.12.2. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE . . 77 151 6.13. Mask/Value Set List . . . . . . . . . . . . . . . . . . . 78 152 6.14. Mask/Value Set Element . . . . . . . . . . . . . . . . . . 79 153 6.15. Mask Element . . . . . . . . . . . . . . . . . . . . . . . 80 154 6.16. Value Element . . . . . . . . . . . . . . . . . . . . . . 81 155 6.17. Alternate Mask/Value Set List . . . . . . . . . . . . . . 82 156 6.18. Alternate Mask/Value Set Element . . . . . . . . . . . . . 83 157 6.19. Web-Cache Value Element . . . . . . . . . . . . . . . . . 84 158 7. Interpreting Alternate Mask/value Set Elements . . . . . . . . 85 159 8. Security Considerations . . . . . . . . . . . . . . . . . . . 88 160 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 89 161 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 90 162 11. Normative References . . . . . . . . . . . . . . . . . . . . . 91 163 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 92 165 1. Introduction 167 1.1. Protocol Overview 169 WCCP V2 defines mechanisms to allow one or more routers enabled for 170 transparent redirection to discover, verify, and advertise 171 connectivity to one or more web-caches. 173 Having established connectivity the routers and web-caches form 174 Service Groups to handle the redirection of traffic whose 175 characteristics are part of the Service Group definition. 177 The protocol provides the means to negotiate the specific method used 178 for load distribution among web-caches and also the method used to 179 transport traffic between a router and a web-cache. 181 A single web-cache within a Service Group is elected as the 182 designated web-cache. It is the responsibility of the designated 183 web-cache to provide routers with the data which determines how 184 redirected traffic is distributed between the web-caches in the 185 Service Group. 187 Although its original purpose was for use with web-caches, the WCCP 188 V2 protocol is suitable for use with many types of network devices 189 that need to transparently intercept IP traffic. For the sake of 190 simplicity and to maintain consistency with the protocol name, the 191 device wishing to receive redirected IP traffic will be generically 192 referred to as the "web-cache" in this document. 194 Similarly, the device through which the IP traffic to be redirected 195 is flowing will generically be referred to in this document as the 196 "router", even though the protocol is suitable for use with several 197 types of network devices through which IP traffic may flow. 199 This document specifies WCCP V2 for use with multiple address 200 families, specifically including both IPv4 and IPv6. References here 201 to "IP" apply equally to both IPv4 and IPv6 and are used when the 202 discussion is not specific to a particular address family. 204 1.2. Contributing Authors 206 This document is derived from the work of the following authors who 207 wrote the original description of WCCP Version 2 in July 2000: 209 * Martin Cieslak (Cisco Systems) 210 * David Forster (Cisco Systems) 211 * Gurumukh Tiwana (Cisco Systems) 212 * Rob Wilson (Cisco Systems) 214 The protocol described in the current document is a fully backwards- 215 compatible extension of the originally described protocol, with 216 extensions added to support the IPv6 address family, configurable 217 message interval timing, more compact message formats and some 218 additional minor enhancements. 220 The work of the original authors represents a very significant 221 proportion of the current document and authorship of the majority of 222 the protocol remains with the four authors listed above. 224 2. Definitions 226 Assignment Method 228 The method by which redirected packets are distributed between 229 web-caches. Hash assignment or mask assignment can be used. 231 Designated Web-Cache 233 The web-cache in a web-cache farm responsible for dictating to the 234 router or routers how redirected traffic should be distributed 235 between the members of the farm. 237 Forwarding Method 239 The method by which redirected packets are transported from router 240 to web-cache. 242 Packet Return Method 244 The method by which packets redirected to a web-cache are returned 245 to a router for normal forwarding. 247 Redirection Hash Table 249 A 256-bucket hash table maintained by the router or routers when 250 using hash assignment. This table maps the hash index derived 251 from a packet to be redirected to the IP address of a destination 252 web-cache. 254 Reserved 256 Parts of a message defined as reserved must be set to zero by the 257 sender and must be ignored by the receiver. 259 Router 261 This term is used generically throughout this document to refer to 262 a network device that may use the protocol to establish 263 redirection of traffic flowing through it. 265 Service Group 267 A group of one or more routers plus one or more web-caches working 268 together in the redirection of traffic whose characteristics are 269 part of the Service Group definition. 271 Transparent Redirection 273 Transparent redirection is a technique used to deploy traffic 274 optimisation without the need for reconfiguration of clients or 275 servers. It involves the interception and redirection of traffic 276 to one or more intervening devices by a router or switch 277 transparently to the end points of the traffic flow. 279 Usable Web-Cache 281 From the viewpoint of a router a web-cache is considered a usable 282 member of a Service Group when it has sent that web-cache a 283 WCCP2_I_SEE_YOU message and has received in response a 284 WCCP2_HERE_I_AM message with a valid "Receive ID" and compatible 285 capabilities. 287 Web-cache 289 This term is used generically throughout this document to refer to 290 a network device that will receive redirected traffic. The term 291 comes from the protocol's original purpose of redirecting HTTP 292 requests to a caching device. 294 Web-Cache Farm 296 One or more web-caches associated with a router or routers. 298 2.1. Time Interval Definitions 300 TRANSMIT_T 302 The time interval at which a web-cache must send successive 303 WCCP2_HERE_I_AM messages. The default interval is 10 seconds. 305 TIMEOUT_BASE_T 307 A time interval used as the basis for calculating timeout values. 308 The default interval is 10 seconds. The value is calculated using 309 this formula: TIMEOUT_BASE_T = (TIMEOUT_SCALE * TRANSMIT_T). 311 RA_TIMER_BASE_T 313 A time interval used as the basis for calculating timeout values. 314 The default interval is 10 seconds. The value is calculated using 315 this formula: RA_TIMER_BASE_T = (RA_TIMER_SCALE * TRANSMIT_T). 317 TIMEOUT_SCALE 319 A multiplier used to calculate the value of TIMEOUT_BASE_T from 320 the value of TRANSMIT_T. The default value of the multiplier is 1. 322 RA_TIMER_SCALE 324 A multiplier used to calculate the value of RA_TIMER_BASE_T from 325 the value of TRANSMIT_T. The default value of the multiplier is 1. 327 3. Protocol Description 329 3.1. Joining a Service Group 331 A web-cache joins and maintains its membership of a Service Group by 332 transmitting a WCCP2_HERE_I_AM message to each router in the Group at 333 time intervals of TRANSMIT_T. This may be by unicast to each router 334 or multicast to the configured Service Group multicast address. The 335 Web-Cache Info Component in the WCCP2_HERE_I_AM message identifies 336 the web-cache by IP address. The Service Info Component of the 337 WCCP2_HERE_I_AM message identifies and describes the Service Group in 338 which the web-cache wishes to participate. 340 A router responds to a WCCP2_HERE_I_AM message with a WCCP2_I_SEE_YOU 341 message. If the WCCP2_HERE_I_AM message was unicast then the router 342 will respond immediately with a unicast WCCP2_I_SEE_YOU message. If 343 the WCCP2_HERE_I_AM message was multicast the router will respond 344 later via the scheduled multicast WCCP2_I_SEE_YOU message for the 345 Service Group. 347 A router responds to multicast web-cache members of a Service Group 348 using a multicast WCCP2_I_SEE_YOU message transmitted at time 349 intervals of 0.9 * TRANSMIT_T with a 10% jitter. 351 The Router Identity Component in a WCCP2_I_SEE_YOU message includes a 352 list of the web-caches to which the packet is addressed. A web-cache 353 not in the list should discard the WCCP2_I_SEE_YOU message. 355 The default value for the TRANSMIT_T interval is 10 seconds. A 356 change in this value is only permissible if a new value is negotiated 357 between a router and a web-cache via the WCCP2_TRANSMIT_T capability. 358 A router or web-cache must use the value for TRANSMIT_T specified in 359 the router's WCCP2_I_SEE_YOU message, or use the default value if a 360 specific value has not yet been given in a WCCP2_I_SEE_YOU message. 361 If a specific timer value has been negotiated between a web-cache and 362 a router, the web-cache must only send HERE_I_AM messages at the 363 negotiated interval. Support for the default 10 seconds TRANSMIT_T 364 interval is mandatory. Support for other values of TRANSMIT_T is 365 optional. The range of supported values may be chosen by the 366 implementation. 368 Before negotiation of a non-default TRANSMIT_T interval has taken 369 place, a web-cache may choose to send WCCP2_HERE_I_AM messages at a 370 shorter interval than the default TRANSMIT_T interval, provided that 371 all of the following conditions are met: 373 (1) all other timing calculations remain based on the default time 374 interval of 10 seconds, 376 (2) the web-cache has received a WCCP2_I_SEE_YOU message containing 377 a WCCP2_TRANSMIT_T capability describing the range of values 378 supported by the router, 380 (3) the web-cache's chosen interval falls within the range supported 381 by the router, and 383 (4) the negotiation of a specific WCCP2_TRANSMIT_T value has not yet 384 completed. 386 3.2. Describing a Service Group 388 The Service Info Component of a WCCP2_HERE_I_AM message describes the 389 Service Group in which a web-cache wishes to participate. A Service 390 Group is identified by its Service Type and Service ID. There are 391 two types of Service Group: 393 * Well Known Services 394 * Dynamic Services 396 Well Known Services are known by both routers and web-caches and do 397 not require a description other than the Service ID. The 398 characteristics of the traffic associated with a Well Known Service 399 are fixed and implicitly known to both router and web-cache. 401 The traffic characteristics associated with a Dynamic Service are not 402 known in advance to the router and must be described by each web- 403 cache. A router is configured to participate in a particular Dynamic 404 Service Group, identified by its Service ID, initially without any 405 knowledge of the characteristics of the traffic associated with the 406 Service Group. The traffic description is communicated to the router 407 in the WCCP2_HERE_I_AM message of the first web-cache to join the 408 Service Group. A web-cache describes a Dynamic Service using the 409 Protocol, Service Flags and Port fields of the Service Info 410 Component. Once a Dynamic Service has been defined, a router will 411 discard any subsequent WCCP2_HERE_I_AM message which contains a 412 conflicting description. The service definition is reset by the 413 router when all web-caches have left the Service Group. A router 414 will also discard any WCCP2_HERE_I_AM message which describes a 415 Service Group for which the router has not been configured. 417 3.3. Establishing Two-Way Connectivity 419 WCCP V2 uses a "Receive ID" to verify two-way connectivity between a 420 router and a web-cache. The Router Identity Info Component of a 421 WCCP2_I_SEE_YOU message contains a "Receive ID" within the Router 422 Identity Element. This value is maintained separately for each 423 Service Group and it is incremented each time the router sends a 424 WCCP2_I_SEE_YOU message for the Service Group. The router records 425 the "Receive ID" value it sends to each web-cache. 427 The "Receive ID" sent by a router is usually reflected back by a web- 428 cache using a Router Identity Element within the Web-Cache View Info 429 Component of a WCCP2_HERE_I_AM message. However, when a web-cache 430 first attempts to contact a router, no "Receive ID" will be available 431 and the router will not be listed in the Web-Cache View Info 432 Component. 434 A router checks the value given for its own "Receive ID" in each 435 WCCP2_HERE_I_AM message received from a web-cache. The "Receive ID" 436 is invalid if the value does not match the "Receive ID" in the most 437 recent WCCP2_I_SEE_YOU message sent to the web-cache, or the router 438 is not listed in Web-Cache View Info Component, or the router has not 439 previously sent a message to the web-cache. 441 When the "Receive ID" is found to be invalid, the router replies with 442 a WCCP2_I_SEE_YOU message to advertise the correct "Receive ID", but 443 the WCCP2_HERE_I_AM message is then discarded and it is not treated 444 as a validly received WCCP2_HERE_I_AM message. In this case most of 445 the WCCP2_HERE_I_AM message is ignored by the router. 447 A router can only begin to consider a web-cache as a potentially 448 usable member of a Service Group after it has sent that web-cache a 449 WCCP2_I_SEE_YOU message and subsequently received a WCCP2_HERE_I_AM 450 message from it containing the correct "Receive ID". 452 3.4. Negotiating the Protocol Version Number 454 WCCP V2 is an extensible protocol and may incorporate a number of 455 revisions to the message format. Higher revision levels may 456 introduce new message components, elements and formats that may not 457 be valid at a lower revision level. 459 The protocol version is specified within each WCCP V2 message and 460 consists of the major version number, which is always set to 2, 461 combined with the minor version number, which indicates the revision 462 level of the V2 protocol. In the context of this document, as the 463 major version number is fixed, references to different protocol 464 version numbers refer specifically to differences in the minor 465 protocol version number only. 467 A router or web-cache may use the protocol version within a WCCP 468 message to decide how to process or respond to an incoming message, 469 or to indicate via an outgoing message which protocol version it 470 supports. 472 A router or web-cache receiving a WCCP message should aim to process 473 the valid components and elements of the message even if other parts 474 of the message may not be understood or appear invalid. However, 475 unless performing protocol version negotiation, a router or web-cache 476 is permitted to ignore messages in which the protocol version number 477 is not recognised. 479 A router or web-cache may support a single protocol version or 480 multiple protocol versions. To support multiple versions, the router 481 or web-cache must support negotiation of the protocol version number. 482 The negotiation takes place per Service Group. Thus routers and web- 483 caches participating in several Service Groups may negotiate a 484 different protocol version for each Service Group. 486 A router and web-cache that communicate with each other must learn 487 which version of the protocol is supported by the intended recipient. 488 They should not send a message without knowing that the intended 489 recipient can understand the message format used. The version 490 supported by the intended recipient is determined from the protocol 491 version set within the message most recently received from it. 493 The format of a message must always conform to the protocol version 494 number set within the message header. 496 3.4.1. Responsibilities of a web-cache during version negotiation 498 When a web-cache sends the first WCCP2_HERE_I_AM message to a router, 499 the web-cache must decide the protocol version number to use in the 500 message without knowing which protocol versions the router is capable 501 of supporting or understanding. 503 In this situation, a web-cache not wishing to negotiate the protocol 504 version number should set the V bit to 0 within the Web-Cache 505 Identity Element in the first WCCP2_HERE_I_AM message and set the 506 protocol version number in the message header to the only version 507 number that the web-cache is able to support. 509 Alternatively, a web-cache wishing to negotiate the protocol version 510 should set the V bit to 1 within the Web-Cache Identity Element in 511 the first WCCP2_HERE_I_AM message and set the protocol version number 512 in the message header to the lowest version number that the web-cache 513 is able to support. The lowest version number is used in this case 514 to maximise the chance that a router will understand and respond to 515 the message. The web-cache should only set the V bit to 1 in a 516 WCCP2_HERE_I_AM message when it has not yet received a response from 517 the router. 519 When a web-cache receives a first WCCP2_I_SEE_YOU message from a 520 router, this provides it with information about the protocol version 521 the router is able to support. Even if the web-cache does not 522 support the version used by the router, the web-cache should set the 523 V bit to 0 in subsequent WCCP2_HERE_I_AM messages and use a version 524 number that is less than or equal to the version number the router 525 responded with. 527 A web-cache need not use the V bit to negotiate the protocol version 528 number, but using the V bit will increase the likelihood that 529 negotiation will be successful by increasing the chance that a 530 response will be received to the initial message. 532 If the V bit is not used, limited version negotiation may still take 533 place although successful negotiation is not guaranteed as some 534 routers may decide not to respond. In this situation the web-cache 535 begins negotiations by setting the protocol version number within the 536 first WCCP2_HERE_I_AM message to be the highest protocol version 537 number supported by the web-cache. If a router replies, the response 538 will contain either the same or a lower version number. The web- 539 cache must then use the version number set by the router, or ignore 540 the response from the router. 542 3.4.2. Responsibilities of a router during version negotiation 544 A router that finds the V bit set to 1 in an incoming WCCP2_HERE_I_AM 545 message must reply by setting the protocol version number in its 546 WCCP2_I_SEE_YOU message to the highest version it can support. In a 547 multicast service group when a router is responding to multiple 548 WCCP2_HERE_I_AM messages, the V bit must be set to 1 in all incoming 549 messages before it is acted upon. 551 When the V bit of an incoming message is set to 0, a router must 552 treat the protocol version number in a WCCP2_HERE_I_AM message as the 553 maximum version the web-cache is capable of supporting. In this case 554 a router has the option of replying using the same version number, 555 replying using a lower version number, or not replying at all. When 556 replying, the router responds with a version that is less than or 557 equal to the version the web-cache used. Therefore the router may 558 respond to the message even if it does not support the version set by 559 the web-cache. 561 3.5. Negotiating Capabilities 563 WCCP includes a number of optional features or capabilities that an 564 implementation may choose to support. To allow a router and web- 565 cache to agree on which optional capabilities can be used for a 566 particular Service Group, the capabilities are negotiated after a 567 router's "Receive ID" has been successfully echoed back from the web- 568 cache to the router. 570 For each defined capability, an implementation must support at least 571 one option from the range of possible options defined for that 572 particular capability. Negotiation of each capability is optional. 573 For each capability there is a default setting which is used if 574 negotiation of the capability does not take place. Negotiation takes 575 place independently for each Service Group. 577 Currently, the following capabilities can be negotiated: 579 * Forwarding Method (Default: GRE encapsulation) 581 The method by which packets are forwarded to a web-cache by a 582 router. 584 * Assignment Method (Default: Hash assignment) 586 The method by which packets are distributed between the web- 587 caches in a Service Group. 589 * Packet Return Method (Default: GRE encapsulation) 591 The method by which packets are returned from a web-cache to a 592 router for normal forwarding. 594 * TRANSMIT_T Message Interval (Default: 10 seconds) 596 The required interval between successive HERE_I_AM messages. 598 * TIMEOUT_SCALE and RA_TIMER_SCALE values (Default: 1 and 1) 600 Two scaling factors used in message timeout calculations. 602 Capability negotiation requires the router to advertise the options 603 that it currently supports for each capability of a Service Group 604 using the optional Capabilities Info Component of the WCCP2_I_SEE_YOU 605 message. The absence of this component implies the router supports 606 only the default option for all capabilities. Similarly, the absence 607 of an individual capability from within this component implies the 608 router supports only the default option for that capability. 610 Negotiation with a router takes place independently for each web- 611 cache, but the options advertised by the router may be influenced by 612 previous negotiations with other web-caches. So, for a given Service 613 Group, the router may permit different options to be negotiated by 614 different web-caches, or it may force all web-caches to agree on a 615 common option. A web-cache participating in several Service Groups 616 may negotiate different capability options for each Service Group. 618 A web-cache will inspect the capabilities advertisement in the first 619 WCCP2_I_SEE_YOU message received from a router for a particular 620 Service Group. If the router does not advertise an option supported 621 by the web-cache for every known capability then the web-cache will 622 abort its attempt to join the Service Group. Otherwise the web-cache 623 will pick one option from those advertised by the router for each 624 capability and specify them in the optional Capabilities Info 625 Component of its next WCCP2_HERE_I_AM message. The absence of this 626 component in a WCCP2_HERE_I_AM message implies the web-cache is 627 requesting the default option for all capabilities. Similarly, the 628 absence of an individual capability from within this component 629 implies the web-cache is requesting the default setting for that 630 capability. 632 A router will inspect the capability options selected by a web-cache 633 in a WCCP2_HERE_I_AM message, provided that the message contains a 634 valid "Receive ID". If all of the requested options are supported, 635 the router will accept the web-cache as usable and add it to the 636 Service Group. Otherwise, if any of the selected options are not 637 supported by the router, the router will not add the web-cache to the 638 Service Group and will instead decide that the web-cache is unusable. 639 In both cases the router will respond to the WCCP2_HERE_I_AM message, 640 either indicating the capability options that have been successfully 641 negotiated, or again advertising the capability options that are 642 available. 644 Note that, for each Service Group, the web-cache need not include a 645 Capabilities Info Component in a WCCP2_HERE_I_AM message until after 646 the first WCCP2_I_SEE_YOU message from the router has been received. 647 Following negotiation, both web-cache and router should continue to 648 include the negotiated capabilities in every WCCP2_HERE_I_AM and 649 WCCP2_I_SEE_YOU message. If a router or web-cache encounters an 650 unrecognised capability at any time it should simply be ignored to 651 allow the default setting for the capability to be selected. 653 3.5.1. Negotiating the Forwarding Method 655 A web-cache and router may negotiate the method by which packets are 656 forwarded to the web-cache by the router. 658 A router will advertise the supported forwarding methods for a 659 Service Group. The absence of such an advertisement implies the 660 router supports the default GRE encapsulation method only. 662 If the router does not advertise a packet return method supported by 663 the web-cache then the web-cache will abort its attempt to join the 664 Service Group. Otherwise the web-cache will select a packet return 665 method to be indicated in the next WCCP2_HERE_I_AM message. Absence 666 of an advertisement of the forwarding method in a WCCP2_HERE_I_AM 667 message implies the web-cache is requesting the default GRE 668 encapsulation method. 670 3.5.2. Negotiating the Assignment Method 672 A web-cache and router may negotiate the method by which packets are 673 distributed between the web-caches in a Service Group. 675 A router will advertise the supported assignment methods for a 676 Service Group. The absence of such an advertisement implies the 677 router supports the default Hash assignment method only. 679 If the router does not advertise an assignment method supported by 680 the web-cache then the web-cache will abort its attempt to join the 681 Service Group. Otherwise the web-cache will select an assignment 682 method to be indicated in the next WCCP2_HERE_I_AM message. Absence 683 of an assignment method advertisement in a WCCP2_HERE_I_AM message 684 implies the web-cache is requesting the default Hash assignment 685 method. 687 If the assignment method selected by a web-cache is supported and 688 other capabilities have been successfully negotiated, the router will 689 accept the web-cache as usable and add it to the Service Group. When 690 the first web-cache joins a Service Group, the router will set the 691 assignment method selected by the web-cache to be the only assignment 692 method supported by the Service Group. This assignment method will 693 remain selected until all web-caches are removed from the Service 694 Group. 696 3.5.3. Negotiating the Packet Return Method 698 A web-cache and router may negotiate the method by which packets are 699 returned from the web-cache to the router for normal forwarding. 701 A router will advertise the supported packet return methods for a 702 Service Group. The absence of such an advertisement implies the 703 router supports the default GRE encapsulation method only. 705 If the router does not advertise a packet return method supported by 706 the web-cache then the web-cache will abort its attempt to join the 707 Service Group. Otherwise the web-cache will select a packet return 708 method to be indicated in the next WCCP2_HERE_I_AM message. Absence 709 of an advertisement of the packet return method in a WCCP2_HERE_I_AM 710 message implies the web-cache is requesting the default GRE 711 encapsulation method. 713 3.5.4. Negotiating the TRANSMIT_T Message Interval Value 715 A web-cache and router may negotiate the TRANSMIT_T message interval 716 value used by the Service Group. 718 A router will advertise the range of supported TRANSMIT_T message 719 interval values. The range is given by specifying its upper and 720 lower limits, or by specifying a single value. 722 The absence of such an advertisement implies the router supports the 723 default TRANSMIT_T message interval of 10 seconds only. In this case 724 the web-cache must never attempt to specify or use an alternative 725 TRANSMIT_T message interval. 727 If the router does not advertise a TRANSMIT_T message interval 728 supported by the web-cache then the web-cache will abort its attempt 729 to join the Service Group. Otherwise the web-cache will select an 730 interval value either within the advertised range, or matching the 731 single advertised value. The selected value will be indicated in the 732 next WCCP2_HERE_I_AM message. Absence of a TRANSMIT_T message 733 interval advertisement in a WCCP2_HERE_I_AM message implies the web- 734 cache is requesting the default TRANSMIT_T message interval of 10 735 seconds. 737 If the interval selected by a web-cache is supported and other 738 capabilities have been successfully negotiated, the router will 739 accept the web-cache as usable and add it to the Service Group. When 740 the first web-cache joins a Service Group, the router will set the 741 TRANSMIT_T message interval value selected by the web-cache to be the 742 only value supported by the Service Group. This value will remain 743 selected until all web-caches are removed from the Service Group. 745 3.5.5. Negotiating the TIMEOUT_SCALE and RA_TIMER_SCALE values 747 A web-cache and router may negotiate the TIMEOUT_SCALE and 748 RA_TIMER_SCALE values used by the Service Group. Both values are 749 negotiated together as a pair. 751 A router will advertise the ranges of supported TIMEOUT_SCALE values 752 and the range of supported RA_TIMER_SCALE values for a Service Group. 753 Each range is given by specifying its upper and lower limits, or by 754 specifying a single value. 756 The absence of such an advertisement implies the router supports only 757 the default value of 1 for both the TIMEOUT_SCALE and RA_TIMER_SCALE 758 parameters. In this case the web-cache must never attempt to specify 759 or use alternative TIMEOUT_SCALE and RA_TIMER_SCALE values. 761 If the router does not advertise TIMEOUT_SCALE and RA_TIMER_SCALE 762 values supported by the web-cache then the web-cache will abort its 763 attempt to join the Service Group. Otherwise the web-cache will 764 select a TIMEOUT_SCALE value and an RA_TIMER_SCALE value, either 765 within the advertised range, or matching the single advertised value. 766 The selected values will be indicated in the next WCCP2_HERE_I_AM 767 message. Absence of an advertisement of TIMEOUT_SCALE and 768 RA_TIMER_SCALE values in a WCCP2_HERE_I_AM message implies the web- 769 cache is requesting the default value of 1 for both the TIMEOUT_SCALE 770 and RA_TIMER_SCALE parameters. 772 If the values selected by a web-cache are supported and other 773 capabilities have been successfully negotiated, the router will 774 accept the web-cache as usable and add it to the Service Group. When 775 the first web-cache joins a Service Group, the router will set the 776 TIMEOUT_SCALE and RA_TIMER_SCALE values selected by the web-cache to 777 be the only values supported by the Service Group. These values will 778 remain selected until all web-caches are removed from the Service 779 Group. 781 3.6. Advertising Views of the Service Group 783 Each router advertises its view of a Service Group via the Router 784 View Info Component in the WCCP2_I_SEE_YOU message it sends to web- 785 caches. This component includes a list of the useable web-caches in 786 the Service Group as seen by the router and a list of the routers in 787 the Service Group as reported in WCCP2_HERE_I_AM messages from web- 788 caches. A change number in the component is incremented if the 789 Service Group membership has changed since the previous 790 WCCP2_I_SEE_YOU message sent by the router. 792 Each web-cache advertises its view of the Service Group via the Web- 793 Cache View Info Component in the WCCP2_HERE_I_AM message it sends to 794 routers in the Service Group. This component includes the list of 795 routers that have sent the web-cache a WCCP2_I_SEE_YOU message and a 796 list of web-caches learnt from the WCCP2_I_SEE_YOU messages. The 797 Web-Cache View Info Component also includes a change number which is 798 incremented each time Service Group membership information changes. 800 3.7. Security 802 WCCP V2 provides a security component in each protocol message to 803 allow simple authentication. Two options are currently supported: 805 * No security (default) 806 * MD5 password security 808 MD5 password security requires that each router and web-cache wishing 809 to join a Service Group is configured with a matching Service Group 810 password. Each WCCP protocol packet sent by a router or web-cache 811 for that Service Group will contain in its security component the MD5 812 [RFC1321] checksum of the Service Group password and the WCCP 813 protocol message (including the WCCP message header). Each web-cache 814 or router in the Service Group will authenticate the security 815 component in a received WCCP message immediately after validating the 816 WCCP message header. Packets failing authentication, or lacking the 817 expected authentication option, will be discarded. 819 3.8. Distribution of Traffic Assignments 821 WCCP V2 allows the traffic assignment method to be negotiated. There 822 are two types of information to be communicated depending on the 823 assignment method selected: 825 * Hash Tables 826 * Mask/Value Sets 828 3.8.1. Hash Tables 830 When using hash assignment each router uses a 256-bucket Redirection 831 Hash Table to distribute traffic for a Service Group across the 832 member web-caches. It is the responsibility of the Service Group's 833 designated web-cache to assign each router's Redirection Hash Table. 835 The designated web-cache uses a WCCP2_REDIRECT_ASSIGNMENT message to 836 assign the routers' Redirection Hash Tables. This message is 837 generated following a change in Service Group membership and is sent 838 to the same set of addresses to which the web-cache sends 839 WCCP2_HERE_I_AM messages. The designated web-cache will wait for a 840 time period of 1.5 * RA_TIMER_BASE_T following a membership change 841 before generating the message in order to allow time for the Service 842 Group membership to stabilise. 844 The designated web-cache lists the web-caches to which traffic should 845 be distributed in either an Assignment Info Component or an Alternate 846 Assignment Component within a WCCP2_REDIRECT_ASSIGNMENT message. 847 Only those web-caches seen by every router in the Service Group are 848 included. 850 The Assignment Info Component or Alternate Assignment Component 851 within a WCCP2_REDIRECT_ASSIGNMENT message contains an Assignment 852 Key. This will be reflected back to the designated web-cache in 853 subsequent WCCP2_I_SEE_YOU messages from the routers in the Service 854 Group. A WCCP2_REDIRECT_ASSIGNMENT message may be repeated after 855 TRANSMIT_T time has elapsed if inspection of the Assignment Key 856 within a WCCP2_I_SEE_YOU message indicates that a router has not 857 received the assignment message. 859 A router will flush its Redirection Hash Table if a valid 860 WCCP2_REDIRECT_ASSIGNMENT message has not been received within a time 861 period of 5 * RA_TIMER_BASE_T following a Service Group membership 862 change. To be valid, the message must contain the correct "Receive 863 ID" and membership change number for the router. 865 Following successful receipt of a WCCP2_REDIRECT_ASSIGNMENT message, 866 each router advertises its assigned Redirection Hash Table in all 867 subsequent WCCP2_HERE_I_AM messages. The Redirection Hash Table can 868 be specified within an optional Alternate Assignment Map Component. 869 If that component is not present, the current assignments for each 870 web-cache are listed within the Web-Cache Identity Elements of the 871 Router View Info Component. 873 3.8.2. Mask/Value Sets 875 When using mask assignment each router uses masks and a table of 876 values to distribute traffic for a Service Group across the member 877 web-caches. It is the responsibility of the Service Group's 878 designated web-cache to assign each router's mask/value sets. 880 The designated web-cache uses a WCCP2_REDIRECT_ASSIGNMENT message to 881 assign the routers' mask/value sets. This message is generated 882 following a change in Service Group membership and is sent to the 883 same set of addresses to which the web-cache sends WCCP2_HERE_I_AM 884 messages. The designated web-cache will wait for a time period of 885 1.5 * RA_TIMER_BASE_T following a membership change before generating 886 the message in order to allow time for the Service Group membership 887 to stabilise. 889 The designated web-cache lists the web-caches to which traffic should 890 be distributed in the Alternate Assignment Component of the 891 WCCP2_REDIRECT_ASSIGNMENT message. Only those web-caches seen by 892 every router in the Service Group are included. 894 The Alternate Assignment Component within a WCCP2_REDIRECT_ASSIGNMENT 895 message contains an Assignment Key. This will be reflected back to 896 the designated web-cache in subsequent WCCP2_I_SEE_YOU messages from 897 the routers in the Service Group. A WCCP2_REDIRECT_ASSIGNMENT 898 message may be repeated after TRANSMIT_T time has elapsed if 899 inspection of the Assignment Key within a WCCP2_I_SEE_YOU message 900 indicates that a router has not received the assignment message. 902 A router will flush its mask/value sets if a valid 903 WCCP2_REDIRECT_ASSIGNMENT message has not been received within a time 904 period of 5 * RA_TIMER_BASE_T following a Service Group membership 905 change. To be valid, the message must contain the correct "Receive 906 ID" and membership change number for the router. 908 Following successful receipt of a WCCP2_REDIRECT_ASSIGNMENT message, 909 each router advertises its assigned mask/value sets in all subsequent 910 WCCP2_HERE_I_AM messages. The mask/value sets can be listed within 911 an optional Assignment Map Component or Alternate Assignment Map 912 Component. If neither of those components is present, the current 913 assignments for each web-cache are listed within the Web-Cache 914 Identity Elements of the Router View Info Component. 916 3.9. Electing the Designated Web-cache 918 Election of the designated web-cache will take place once the Service 919 Group membership has stabilised following a change. The designated 920 web-cache must be receiving a WCCP2_I_SEE_YOU message from every 921 router in the Service Group. 923 Election of the designated web-cache is not part of the WCCP 924 protocol. However it is recommended that the eligible web-cache with 925 the lowest IP address is selected as the designated web-cache for a 926 Service Group. 928 3.10. Traffic Interception 930 A router will check packets passing through it against its set of 931 Service Group descriptions. The Service Group descriptions are 932 checked in priority order. A packet which matches a Service Group 933 description is a candidate for redirection to a web-cache in the 934 Service Group. 936 A router will not redirect a packet with a source IP address matching 937 any web-cache in the Service Group. 939 3.11. Traffic Redirection 941 3.11.1. Redirection with Hash Assignment 943 To redirect a packet using hash assignment, a primary key is formed 944 from the packet and hashed to yield an index into the Redirection 945 Hash Table. The elements of the packet used to form the primary key 946 are determined by the Service Group description. 948 If the indexed Redirection Hash Table entry is unassigned the packet 949 is forwarded normally. If the entry contains only a web-cache index 950 then the packet is redirected to that web-cache. Alternatively, if 951 the entry is flagged as requiring an alternative hash then a 952 secondary key is formed from the packet and hashed to yield a 953 secondary index into the Redirection Hash Table. The elements of the 954 packet used to form the secondary key are determined by the Service 955 Group description. 957 If the secondary entry contains a web-cache index then the packet is 958 redirected to that web-cache. If the secondary entry is unassigned 959 the packet is forwarded normally. The alternative hashing flag in 960 the secondary entry is ignored. 962 3.11.2. Redirection with Mask Assignment 964 To redirect a packet using mask assignment, a bitwise AND operation 965 is performed between the mask from the first mask/value set assigned 966 to the Service Group and the corresponding contents of the packet. 968 The masking operation is applied to both the source and destination 969 IP addresses of the packet. For TCP and UDP packets, the masking 970 operation is also applied to both the source and destination port 971 numbers of the packet, when available. When port numbers are not 972 available from a packet, the source and destination port elements of 973 the result will be set to zero. 975 The output of this operation is compared against each entry in the 976 list of value elements within the mask/value set. If a match is 977 found the packet is redirected to the web-cache associated with the 978 matching value element. If no match is found the process is repeated 979 for each mask/value set defined for the Service Group. If no match 980 is found after trying all of the mask/value sets defined for the 981 Service Group, the packet is forwarded normally. 983 Mask/value sets are processed in the order in which they are 984 presented in the Alternate Assignment Component. Similarly, value 985 elements are compared in the order in which they are presented in a 986 mask/value set. 988 3.12. Traffic Forwarding 990 WCCP V2 allows the negotiation of the forwarding method between a 991 router and a web-cache (see Section 3.5.1). The currently defined 992 forwarding methods are: 994 * GRE encapsulation 995 * Unencapsulated with L2 rewrite 997 3.12.1. Forwarding using GRE Encapsulation 999 Using this forwarding method, redirected packets are encapsulated in 1000 a new IP packet with a GRE [RFC1701] header followed by a 4-octet 1001 Redirect Header. The information provided within the Redirect Header 1002 can be used only if the U bit in the Redirect Header is 0. If the U 1003 bit is 1, the redirected packet is valid and should be processed 1004 normally, but the rest of the information within the 4-octet Redirect 1005 Header is unavailable and must be ignored. 1007 The GRE encapsulation uses the simple 4-octet GRE header with the 1008 Flags and Version octets set to zero and a Protocol Type of 0x883E. 1010 The Redirect Header is defined as follows: 1012 0 1 2 3 1013 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1014 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1015 |T|A|U|Reserved | Service ID | Alt Bucket |Primary Bucket | 1016 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1018 T: Type of Service 1019 0: Standard (well known) service 1020 1: Dynamic service 1022 A: Alternative bucket used (only valid for hash assignment) 1023 0: Primary bucket used 1024 1: Alternative bucket used 1026 U: Unavailable 1027 0: Redirect Header contents are valid 1028 1: Redirect Header is present, 1029 but its contents (other than this bit) should 1030 be ignored and treated as being unavailable 1032 Reserved 1034 Must be zero. 1036 Service ID 1038 Service Group identifier of the service that redirected this 1039 packet. 1041 Alt Bucket 1043 Alternative bucket index used to redirect the packet. Only valid 1044 for hash assignment. 1046 Primary Bucket 1048 Primary bucket index used to redirect the packet. Only valid for 1049 hash assignment. 1051 3.12.2. Forwarding using L2 Rewrite 1053 Using this forwarding method, redirected packets are not 1054 encapsulated. The router replaces the packet's destination MAC 1055 address with the MAC address of the target web-cache. The packet's 1056 source MAC address is set to the router's MAC address. 1058 This forwarding method requires that the target web-cache is directly 1059 connected to the router at Layer 2. A router should not allow a web- 1060 cache to successfully negotiate this forwarding method unless it has 1061 been verified that the web-cache is directly connected. 1063 A packet should not be redirected using this method if the packet's 1064 source MAC address matches the MAC address of a web-cache in the 1065 Service Group. See Section 3.13.3 for further details. 1067 3.13. Packet Return 1069 WCCP V2 allows a web-cache to decline a redirected packet and return 1070 it to the router for normal forwarding without further redirection. 1071 The method by which packets are returned from a web-cache to a router 1072 can be negotiated (see Section 3.5.3). The currently defined packet 1073 return methods are: 1075 * GRE encapsulation 1076 * Unencapsulated with L2 rewrite 1078 3.13.1. Packet Return using GRE Encapsulation 1080 Using this packet return method, a web-cache sends returned packets 1081 to a router using GRE encapsulation. Returned packets are 1082 encapsulated in a GRE packet [RFC1701] with a Protocol Type of 0x883E 1083 and containing either the Redirect Header from the originally 1084 redirected packet, or a Redirect Header with the U bit set if a valid 1085 Redirect Header was not present in the originally redirected packet. 1086 If the U bit is set, all other parts of the Redirect Header should be 1087 zero. 1089 See Section 3.12.1 for the Redirect Header definition. 1091 The receiving router removes the GRE encapsulation from each returned 1092 packet and forwards it without attempting further redirection. 1094 3.13.2. Packet Return using L2 Rewrite 1096 Using this packet return method, returned packets are not 1097 encapsulated, so any encapsulation added by the router during 1098 redirection must be removed by the web-cache. The web-cache then 1099 replaces the packet's destination MAC address with the router's MAC 1100 address and sets the packet's source MAC address to the web-cache's 1101 own MAC address. 1103 The packet return method requires that the router receiving the 1104 return packet does not attempt to redirect it again, otherwise the 1105 packet will repeatedly loop between the router and the web-cache. 1107 3.13.3. Preventing redirection of returned packets 1109 When a router receives a returned packet it must not attempt to 1110 redirect the packet back to a web-cache. Three methods are available 1111 to prevent further redirection: 1113 * Encapsulation 1114 * Source MAC address check 1115 * Interface configuration 1117 The encapsulation method requires a web-cache to send returned 1118 packets to a router using GRE encapsulation, as described in 1119 Section 3.13.1. Returned packets are identified using the web- 1120 cache's source IP address and/or the GRE Protocol Type of 0x883E. 1121 Following removal of the GRE encapsulation these packets must be 1122 excluded from further redirection. 1124 The source MAC address check method requires a web-cache to return a 1125 packet unencapsulated to the router using L2 rewrite, as described in 1126 Section 3.13.2. The router must record the MAC address of each web- 1127 cache that has successfully negotiated the L2 rewrite packet return 1128 method. The router then excludes from redirection any packet 1129 received with a source MAC address belonging to one of the known web- 1130 caches. 1132 The interface configuration method requires that a router is 1133 configured to inhibit redirection of packets arriving on an interface 1134 connected to one or more web-caches. The suitability of this 1135 mechanism is dependant on the network topology. It is only required 1136 if the source MAC address check cannot be used in combination with 1137 the L2 rewrite return method. 1139 3.14. Querying Web-Cache Time-Out 1141 If a router does not receive a WCCP2_HERE_I_AM message from a Service 1142 Group member during a time period of 2.5 * TIMEOUT_BASE_T it will 1143 query the member by sending a unicast WCCP2_REMOVAL_QUERY message to 1144 it. The target Service Group member should respond by sending a 1145 series of three identical unicast WCCP2_HERE_I_AM messages to the 1146 router, each separated by a time interval of 0.1 * TRANSMIT_T. 1148 If a router does not receive a WCCP2_HERE_I_AM message from a Service 1149 Group member during a time period of 3 * TIMEOUT_BASE_T it will 1150 consider the member to be unusable and remove it from the Service 1151 Group. The web-cache will no longer appear in the Router View Info 1152 Component of the WCCP2_I_SEE_YOU message. The web-cache will also be 1153 purged from the assignment data for the Service Group. 1155 3.15. Sending additional WCCP2_HERE_I_AM messages 1157 If a web-cache does not receive a WCCP2_I_SEE_YOU message from a 1158 router in response to a unicast WCCP2_HERE_I_AM message after a time 1159 period of 0.5 * TRANSMIT_T has elapsed, the web-cache may optionally 1160 choose to transmit a new WCCP2_HERE_I_AM message at this moment 1161 instead of waiting for a full TRANSMIT_T time interval to elapse. 1163 This action is permitted only if, in response to the previous 1164 WCCP2_HERE_I_AM message unicast to the router, the web-cache 1165 successfully received a WCCP2_I_SEE_YOU message from the router in 1166 which the web-cache appeared in the Router View Info Component of the 1167 message. 1169 The web-cache may continue transmitting WCCP2_HERE_I_AM messages at 1170 time intervals of 0.5 * TRANSMIT_T until a WCCP2_I_SEE_YOU message is 1171 received from the router, or until a total of 6 WCCP2_HERE_I_AM 1172 messages have been transmitted since the last WCCP2_I_SEE_YOU message 1173 was received. 1175 3.16. Command and Status Information 1177 WCCP V2 includes a mechanism to allow web-caches to send commands to 1178 routers within a service group. The same mechanism can be used by 1179 the routers to provide status information to web-caches. 1181 The mechanism is implemented by the Command Extension Component. 1182 This component is included in the WCCP2_HERE_I_AM message from a web- 1183 cache passing commands to routers in a Service Group. 1185 If a router needs to send status information back to a web-cache it 1186 will include a command in the Command Extension Component within its 1187 own WCCP2_I_SEE_YOU message. That command will indicate the type of 1188 status information being carried. 1190 4. Protocol Messages 1192 4.1. Overview 1194 Each WCCP protocol message is carried within a UDP packet with source 1195 and destination ports of 2048. Every WCCP message begins with a 1196 fixed-length 8-octet header, followed by a number of additional 1197 variable-length components. 1199 The WCCP header specifies the message type, the major and minor 1200 protocol version numbers, and the length of the remainder of the 1201 message. Any contents of the UDP packet extending beyond this 1202 specified message length must be ignored. 1204 There are four WCCP V2 message types: 1206 * Here I Am 1207 * I See You 1208 * Redirect Assign 1209 * Removal Query 1211 Messages with a header containing an unrecognised type or the 1212 incorrect major version number must be ignored. Note that messages 1213 containing the correct major version number but an unrecognised minor 1214 version number should continue to be processed. 1216 Every component following the WCCP header conforms to a Type-Length- 1217 Value (TLV) format. Each component begins with a 2-octet type 1218 followed by a 2-octet length. The length specifies the number of 1219 octets remaining within the component following the length field. 1220 The specified length must be a multiple of 4 octets. Padding is 1221 allowed within each component, but no padding is allowed between 1222 components, therefore the length of a component must correctly 1223 specify the offset to the beginning of the subsequent component. 1225 The type of a component specifies the format of the data it contains. 1226 If the component type is not recognised by the receiver, the number 1227 of following octets specified in the length field must be ignored and 1228 message processing should resume at the beginning of the next 1229 component. 1231 Some components contain nested elements which also conform to a TLV 1232 format. In general, when the type of a nested TLV element is 1233 unrecognised, only the smallest unrecognised element should be 1234 ignored. 1236 If the length of a component extends beyond the end of the WCCP 1237 message (as specified in the WCCP header), the whole component must 1238 be ignored. 1240 If a message contains multiple components of the same type and only a 1241 single component of that type is expected, the first element of that 1242 type should be processed normally and any subsequent elements of the 1243 same type should be ignored. 1245 In general, receivers should be tolerant of unexpected components and 1246 elements within a message, being mindful of the fact that the 1247 protocol is extensible. Protocol extensions may be added with or 1248 without a minor version increment, depending on the nature of the 1249 extension. 1251 4.2. 'Here I Am' Message 1253 A 'Here I Am' message contains the following components: 1255 +--------------------------------------+ 1256 | WCCP Message Header | 1257 +--------------------------------------+ 1258 | Security Info Component | 1259 +--------------------------------------+ 1260 | Service Info Component | 1261 +--------------------------------------+ 1262 | Web-Cache Identity Info Component | 1263 +--------------------------------------+ 1264 | Web-Cache View Info Component | 1265 +--------------------------------------+ 1266 | Capability Info Component (optional) | 1267 +--------------------------------------+ 1268 |Command Extension Component (optional)| 1269 +--------------------------------------+ 1270 | Address Table Component (optional) | 1271 +--------------------------------------+ 1273 4.3. 'I See You' Message 1275 An 'I See You' message contains the following components: 1277 +--------------------------------------+ 1278 | WCCP Message Header | 1279 +--------------------------------------+ 1280 | Security Info Component | 1281 +--------------------------------------+ 1282 | Service Info Component | 1283 +--------------------------------------+ 1284 | Router Identity Info Component | 1285 +--------------------------------------+ 1286 | Router View Info Component | 1287 +--------------------------------------+ 1288 | Assignment Map Component (optional) | 1289 | OR | 1290 | Alternate Assignment Map Component | 1291 | (optional) | 1292 +--------------------------------------+ 1293 | Capability Info Component (optional) | 1294 +--------------------------------------+ 1295 |Command Extension Component (optional)| 1296 +--------------------------------------+ 1297 | Address Table Component (optional) | 1298 +--------------------------------------+ 1300 4.4. 'Redirect Assign' Message 1302 A 'Redirect Assign' message contains the following components: 1304 +--------------------------------------+ 1305 | WCCP Message Header | 1306 +--------------------------------------+ 1307 | Security Info Component | 1308 +--------------------------------------+ 1309 | Service Info Component | 1310 +--------------------------------------+ 1311 | Assignment Info Component | 1312 | OR | 1313 | Alternate Assignment Component | 1314 +--------------------------------------+ 1315 | Address Table Component (optional) | 1316 +--------------------------------------+ 1318 4.5. 'Removal Query' Message 1320 A 'Removal Query' message contains the following components: 1322 +--------------------------------------+ 1323 | WCCP Message Header | 1324 +--------------------------------------+ 1325 | Security Info Component | 1326 +--------------------------------------+ 1327 | Service Info Component | 1328 +--------------------------------------+ 1329 | Router Query Info Component | 1330 +--------------------------------------+ 1331 | Address Table Component (optional) | 1332 +--------------------------------------+ 1334 4.6. WCCP Message Header 1336 0 1 2 3 1337 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1339 | Type | 1340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1341 | Version | Minor Version | Length | 1342 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1344 Type 1346 Indicates the type of the WCCP message. The following types are 1347 defined: 1349 0x0A - WCCP2_HERE_I_AM (10) 1350 0x0B - WCCP2_I_SEE_YOU (11) 1351 0x0C - WCCP2_REDIRECT_ASSIGN (12) 1352 0x0D - WCCP2_REMOVAL_QUERY (13) 1354 Version 1356 Indicates the protocol version required to process the message. 1357 The value defined by this document is: 1359 0x02 - WCCP V2 1361 Minor Version 1363 Indicates a minor revision level of the protocol that the sender 1364 supports and which the message conforms to. The use of different 1365 protocol revision levels is described in Section 3.4. The values 1366 defined by the current revision of this document are: 1368 0x00 - Protocol Version 2.00 1369 0x01 - Protocol Version 2.01 1371 Length 1373 Length of the WCCP message not including the WCCP Message Header. 1375 4.7. Multiple Address family support 1377 By default, network addresses used within the protocol are IPv4 1378 addresses. However, with protocol version 2.01, alternative address 1379 families can be used whenever the optional address table component is 1380 present in a protocol message. 1382 All addresses and address masks used within a protocol message are 1383 referenced via a 4-octet address element. This element can contain: 1385 * the special value of 0 indicating an unspecified address, or 1386 * an IPv4 address or mask, or 1387 * the value of an address index. 1389 The address index is an indirect reference to an address or mask 1390 entry within the address table component which is contained within 1391 the same protocol message. Address indices are numbered from 1 1392 upwards. 1394 If an address table component is present in a message, every address 1395 element within the message contains either an address index or an 1396 unspecified address. 1398 When a WCCP message has a protocol version of 2.01, the correct 1399 interpretation of each non-zero address element requires knowledge of 1400 the presence of an address table component. Therefore, there is a 1401 requirement to check for the existence of an address table component 1402 before attempting to interpret any non-zero address elements within 1403 the message. 1405 If an address table component is not present in a message, every 1406 address element within the message contains an IPv4 address or mask. 1407 Address tables are not permitted when the protocol version is 2.00. 1409 4.7.1. Messages without an address table component 1411 When an address table component is not present, every network address 1412 (or mask) within the protocol message is specified as follows: 1414 Address Element: 1416 0 1 2 3 1417 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1418 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1419 | IPv4 Address (or mask) | 1420 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1422 4.7.2. Messages with an address table component 1424 When an address table component is present in a protocol message, 1425 every address element within the same message is specified as 1426 follows: 1428 Address Element: 1430 0 1 2 3 1431 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1432 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1433 | Reserved | Address Index | 1434 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1436 Reserved 1438 Must be zero. 1440 Address Index 1442 An index into the list of network addresses provided in the 1443 address table component defined in Section 5.1.5. The first 1444 address in the table is referenced using index 1, the second 1445 address is referenced using index 2, and so on. Address indices 1446 that would fall beyond the length of the address table component 1447 are invalid. A value of 0 is special and will be interpreted as 1448 an unspecified address (or an address mask with no bits set). 1450 5. Message Components 1452 Each WCCP message comprises a WCCP Message Header followed by a 1453 number of message components, some of which have a variable length. 1454 The defined components are: 1456 * Security Info 1457 * Service Info 1458 * Capabilities Info 1459 * Command Extension 1460 * Address Table 1461 * Web-Cache Identify Info 1462 * Web-Cache View Info 1463 * Router Identity Info 1464 * Router View Info 1465 * Assignment Map 1466 * Alternate Assignment Map 1467 * Assignment Info 1468 * Alternate Assignment 1469 * Router Query Info 1471 Note that components are padded to align on a 4-octet boundary. Each 1472 component has a 4-octet header specifying the component type and 1473 length. The length value does not include the 4-octet component 1474 header. 1476 5.1. Components used in multiple message types 1478 5.1.1. Security Info Component 1480 0 1 2 3 1481 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1482 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1483 | Type | Length | 1484 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1485 | Security Option | 1486 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1487 | Security Implementation | 1488 | . | 1489 | . | 1490 | . | 1491 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1493 Type 1495 0x00 - WCCP2_SECURITY_INFO (0) 1497 Length 1499 Length of the remainder of the component. 1501 Security Option 1503 The currently defined values are: 1505 0x00 - WCCP2_NO_SECURITY 1506 0x01 - WCCP2_MD5_SECURITY 1508 Security Implementation 1510 If Security Option has the value WCCP2_NO_SECURITY this field is 1511 not present. If Security Option has the value WCCP2_MD5_SECURITY 1512 this is a 16-octet field containing the MD5 [RFC1321] checksum of 1513 the WCCP message and the Service Group password. The maximum 1514 password length is 8 octets. 1516 Prior to calculating the MD5 checksum the password should be 1517 padded out to 8 octets with trailing zeros and the Security 1518 Implementation field of the Security Option set to zero. The MD5 1519 checksum is calculated using the 8-octet padded password followed 1520 by the WCCP message (including the WCCP Message Header). 1522 5.1.2. Service Info Component 1524 0 1 2 3 1525 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1526 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1527 | Type | Length | 1528 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1529 | Service Type | Service ID | Priority | Protocol | 1530 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1531 | Service Flags | 1532 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1533 | Port 1 | Port 2 | 1534 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1535 | Port 3 | Port 4 | 1536 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1537 | Port 5 | Port 6 | 1538 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1539 | Port 7 | Port 8 | 1540 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1542 Type 1544 0x01 - WCCP2_SERVICE_INFO (1) 1546 Length 1548 Length of the remainder of the component. 1550 Service Type 1552 The following service types are currently defined: 1554 0x00 - WCCP2_SERVICE_STANDARD 1556 The service is a well known service and is described by the 1557 Service ID. All service definition fields other than Service 1558 ID should be zero. 1560 0x01 - WCCP2_SERVICE_DYNAMIC 1562 The service is a dynamic service as is defined by the Protocol, 1563 Service Flags and Port fields. 1565 Service ID 1567 The service number which, in combination with the service type, 1568 uniquely identifies the service group. For services of type 1569 WCCP2_SERVICE_DYNAMIC, all values from 0 to 255 inclusive are 1570 valid. For services of type WCCP2_SERVICE_STANDARD, a single 1571 service number is currently defined: 1573 0x00 - HTTP (Protocol: TCP, Destination Port: 80) 1575 Priority 1577 Service priority. The lowest priority is 0, the highest is 255. 1578 Packets for redirection are matched against Services in priority 1579 order, highest first. Well known services have a priority of 240. 1581 Protocol 1583 IP protocol identifier. The protocol type of traffic to be 1584 redirected. A value of 0 indicates that all protocol types should 1585 be redirected, unless the "Redirect Only Protocol 0" flag is set 1586 (in which case only protocol 0 would be redirected). 1588 Service Flags 1590 0x0001 - Source IP Hash 1591 0x0002 - Destination IP Hash 1592 0x0004 - Source Port Hash 1593 0x0008 - Destination Port Hash 1594 0x0010 - Ports Defined 1595 0x0020 - Ports Source 1596 0x0040 - Redirect Only Protocol 0 (* see note) 1597 0x0100 - Source IP Alternative Hash 1598 0x0200 - Destination IP Alternative Hash 1599 0x0400 - Source Port Alternative Hash 1600 0x0800 - Destination Port Alternative Hash 1602 (* - requires minimum protocol version 2.01) 1604 The primary hash flags (Source IP Hash, Destination IP Hash, 1605 Source Port Hash, Destination Port Hash) determine which protocol 1606 header fields of a packet will be hashed to yield the Redirection 1607 Hash Table primary bucket index. The hash index is constructed by 1608 XORing each octet of the appropriate fields from the packet 1609 header. The hash index is a single octet and has an initial value 1610 of zero. 1612 If alternative hashing has been enabled for the primary bucket 1613 (see the bucket definition in Section 6.5), the alternate hash 1614 flags (Source IP Alternative Hash, Destination IP Alternative 1615 Hash, Source Port Alternative Hash, Destination Port Alternative 1616 Hash) determine which protocol header fields of a packet will be 1617 hashed to yield a secondary bucket index. The secondary hash 1618 index is constructed by XORing each octet of the appropriate 1619 fields from the packet header. The secondary hash index is a 1620 single octet and has an initial value of zero. 1622 The primary hash flags and alternate hash flags are valid only 1623 when the service group uses hash assignment, in which case at 1624 least one primary hash flag and one secondary hash flag must be 1625 set. 1627 Port 1 -> Port 8 1629 A list of UDP or TCP port numbers. The port list is active only 1630 if the service protocol is set to UDP or TCP and the service flag 1631 "Ports Defined" is set. 1633 If the "Ports Source" flag is set the port information refers to 1634 the source port within a packet to be redirected, if clear the 1635 port information refers to the destination port within a packet to 1636 be redirected. When the list is active, a packet can be 1637 redirected only if it uses one of the port numbers contained in 1638 this list. 1640 If less than eight ports are specified, the list is terminated 1641 with a port value of zero, in which case subsequent entries in the 1642 list are ignored. 1644 5.1.3. Capabilities Info Component 1646 0 1 2 3 1647 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1648 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1649 | Type | Length | 1650 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1651 | Capability Element 1 | 1652 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1653 | . | 1654 | . | 1655 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1656 | Capability Element n | 1657 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1659 Type 1661 0x08 - WCCP2_CAPABILITY_INFO (8) 1663 Length 1665 Length of the remainder of the component. 1667 Capability Element 1 -> Capability Element n 1669 Elements in TLV-format each describing a router or web-cache 1670 capability. Each element is defined in Section 6.11. 1672 5.1.4. Command Extension Component 1674 0 1 2 3 1675 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1676 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1677 | Type | Length | 1678 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1679 | Command Element 1 | 1680 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1681 | . | 1682 | . | 1683 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1684 | Command Element n | 1685 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1687 Type 1689 0x0F - WCCP2_COMMAND_EXTENSION (15) 1691 Length 1693 Length of the remainder of the component. 1695 Command Element 1 -> Command Element n 1697 Elements in TLV-format each containing a router or web-cache 1698 command. Each element is defined in Section 6.12. 1700 5.1.5. Address Table Component 1702 This component is valid from protocol version 2.01. It provides a 1703 list of network addresses that are referenced within the WCCP 1704 message. References to these addresses are made via address elements 1705 within other WCCP message components. The referencing address 1706 element is defined in Section 4.7.2. 1708 0 1 2 3 1709 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1710 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1711 | Type | Length | 1712 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1713 | Address Family Identifier | Address Length | 1714 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1715 | Number of Addresses | 1716 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1717 | Address 1 | 1718 | . | 1719 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1720 | . | 1721 | . | 1722 | . | 1723 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1724 | Address n | 1725 | . | 1726 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1728 Type 1730 0x11 - WCCP2_ADDRESS_TABLE (17) 1732 Length 1734 Length of the remainder of the component. 1736 Address Family Identifier 1738 Indicates the address family of all network addresses within the 1739 table. The values are defined by the Internet Assigned Numbers 1740 Authority (IANA) Address Family Numbers registry [IANA-AF]. 1741 Relevant values include: 1743 0x02 - IP version 6 (IPv6) 1745 As IPv4 addresses can be specified directly within a WCCP message 1746 without requiring an address table, the use of an IPv4 address 1747 table is unnecessary and therefore strongly discouraged. 1749 Address Length 1751 The length in octets of each entry within the list of network 1752 addresses. The length of each entry must be a multiple of 4 1753 octets. If this length is larger than the natural size of an 1754 address of the given address family, excess trailing octets in 1755 each entry should be set to zero by the sender and ignored by the 1756 receiver. 1758 Number of Addresses 1760 The number of addresses (n) contained within the following list. 1762 Address 1 -> Address n 1764 A list of network addresses that can be referenced via their index 1765 in this list. The first address is referenced using index 1 and 1766 the last address is referenced using index n, providing a list of 1767 n addresses. 1769 5.2. 'Here I Am' message components 1771 The following sub-sections describe components used only in 'Here I 1772 Am' messages. 1774 5.2.1. Web-Cache Identity Info Component 1776 0 1 2 3 1777 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1778 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1779 | Type | Length | 1780 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1781 | Web-Cache Identity Element | 1782 | . | 1783 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1785 Type 1787 0x03 - WCCP2_WC_ID_INFO (3) 1789 Length 1791 Length of the remainder of the component. 1793 Web-Cache Identity Element 1795 An element indicating the web-cache IP address and its redirection 1796 assignments. The element is defined in Section 6.4. 1798 5.2.2. Web-Cache View Info Component 1800 This component represents a web-cache's view of the Service Group. 1802 0 1 2 3 1803 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1804 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1805 | Type | Length | 1806 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1807 | Change Number | 1808 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1809 | Number of Routers | 1810 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1811 | Router Identity Element 1 | 1812 | . | 1813 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1814 | . | 1815 | . | 1816 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1817 | Router Identity Element n | 1818 | . | 1819 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1820 | Number of Web-Caches | 1821 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1822 | Web-Cache Address Element 1 | 1823 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1824 | . | 1825 | . | 1826 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1827 | Web-Cache Address Element m | 1828 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1830 Type 1832 0x05 - WCCP2_WC_VIEW_INFO (5) 1834 Length 1836 Length of the remainder of the component. 1838 Change Number 1840 A value incremented each time there is a change in the view. 1842 Number of Routers 1844 The number of routers (n) in the Service Group. 1846 Router Identity Element 1 -> Router Identity Element n 1848 Elements indicating the identifying IP address for each router in 1849 the Service Group and the last "Receive ID" obtained from each. 1850 Each element is defined in Section 6.1. 1852 Number of Web-Caches 1854 The number of web-caches (m) in the Service Group. 1856 Web-Cache Address Element 1 -> Web-Cache Address Element m 1858 Elements indicating the web-cache IP addresses learnt from 1859 WCCP2_I_SEE_YOU messages. Each address element is defined in 1860 Section 4.7. 1862 5.3. 'I See You' message components 1864 The following sub-sections describe components used only in 'I See 1865 You' messages. 1867 5.3.1. Router Identity Info Component 1869 0 1 2 3 1870 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1871 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1872 | Type | Length | 1873 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1874 | Router Identity Element | 1875 | . | 1876 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1877 | Sent To Address Element | 1878 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1879 | Number Received From | 1880 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1881 | Received From Address Element 1 | 1882 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1883 | . | 1884 | . | 1885 | . | 1886 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1887 | Received From Address Element n | 1888 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1890 Type 1892 0x02 - WCCP2_ROUTER_ID_INFO (2) 1894 Length 1896 Length of the remainder of the component. 1898 Router Identity Element 1900 Element indicating the router's identifying IP address and 1901 "Receive ID". The identifying IP address must be a valid, 1902 reachable address for the router. The element is defined in 1903 Section 6.1. 1905 Sent To Address Element 1907 Identifies the IP address to which the target web-cache sent the 1908 WCCP2_HERE_I_AM message. When this component is present in a 1909 unicast WCCP2_I_SEE_YOU message, this element identifies the IP 1910 address that the target web-cache used. When present in a 1911 multicast WCCP2_I_SEE_YOU message, this element identifies the 1912 Service Group multicast address. The address element is defined 1913 in Section 4.7. 1915 Number Received From 1917 The number of web-caches (n) to which this message is directed. 1918 When using multicast addressing it may be less than the number of 1919 web-caches which actually see the message. 1921 Received From Address Element 1 -> Received From Address Element n 1923 Elements identifying the IP addresses of web-caches to which this 1924 message is directed. When using multicast addressing it may be a 1925 subset of the web-caches which actually see the message. Each 1926 address element is defined in Section 4.7. 1928 5.3.2. Router View Info Component 1930 This component represents a router's view of the Service Group. 1932 0 1 2 3 1933 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1934 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1935 | Type | Length | 1936 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1937 | Member Change Number | 1938 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1939 | Assignment Key Element | 1940 | . | 1941 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1942 | Number of Routers | 1943 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1944 | Router ID Address Element 1 | 1945 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1946 | . | 1947 | . | 1948 | . | 1949 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1950 | Router ID Address Element n | 1951 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1952 | Number of Web-Caches | 1953 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1954 | Web-Cache Identity Element 1 | 1955 | . | 1956 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1957 | . | 1958 | . | 1959 | . | 1960 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1961 | Web-Cache Identity Element m | 1962 | . | 1963 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1965 Type 1967 0x04 - WCCP2_RTR_VIEW_INFO (4) 1969 Length 1971 Length of the remainder of the component. 1973 Member Change Number 1975 A value incremented each time there is a change in the Service 1976 Group membership. 1978 Assignment Key Element 1980 The Assignment Key Element received in the most recent valid 1981 WCCP2_REDIRECT_ASSIGNMENT message. This is used by the designated 1982 web-cache to verify that an assignment has been accepted by the 1983 router and that the assignment remains active. The element is 1984 defined in Section 6.3. 1986 Number of Routers 1988 The number of routers (n) in the Service Group. 1990 Router ID Address Element 1 -> Router ID Address Element n 1992 Elements identifying the Router IDs of routers in the Service 1993 Group. The list is constructed from routers reported by web- 1994 caches via WCCP2_HERE_I_AM messages. Note that a router does not 1995 include itself in the list unless it has also been reported via a 1996 WCCP2_HERE_I_AM message. Each element is defined in Section 4.7. 1998 Number of Web-Caches 2000 The number of useable web-caches (m) in the Service Group. 2002 Web-Cache Identity Element 1 -> Web-Cache Identity Element m 2004 Web-Cache Identity Elements of the useable web-caches in the 2005 Service Group. This list contains web-caches that have sent the 2006 router a WCCP2_HERE_I_AM message with a valid "Receive ID" and 2007 compatible capabilities. Each element is defined in Section 6.4. 2009 5.3.3. Assignment Map Component 2011 This component can only be used with Service Groups using mask 2012 assignment. 2014 0 1 2 3 2015 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2016 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2017 | Type | Length | 2018 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2019 | Mask/Value Set List | 2020 | . | 2021 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2023 Type 2025 0x0E - WCCP2_ASSIGNMENT_MAP (14) 2027 Length 2029 Length of the remainder of the component. 2031 Mask/Value Set List 2033 A list of mask/value sets. The list is defined in Section 6.13. 2035 5.3.4. Alternate Assignment Map Component 2037 This component is valid from protocol version 2.01. 2039 0 1 2 3 2040 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2041 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2042 | Type | Length | 2043 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2044 | Assignment Type | Assignment Length | 2045 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2046 | Assignment Body | 2047 | . | 2048 | . | 2049 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2051 Type 2053 0x10 - WCCP2_ALT_ASSIGNMENT_MAP (16) 2055 Length 2057 Length of the remainder of the component. 2059 Assignment Type 2061 Indicates the format of Assignment Body. The currently defined 2062 values are: 2064 0x00 - WCCP2_HASH_ASSIGNMENT 2065 0x01 - WCCP2_MASK_ASSIGNMENT 2066 0x02 - WCCP2_ALT_MASK_ASSIGNMENT 2068 Assignment Length 2070 Length of the remainder of the component (Assignment Body). 2072 Assignment Body 2074 The format of Assignment Body is specified by the value of 2075 Assignment Type, as follows: 2077 WCCP2_HASH_ASSIGNMENT: 2079 Hash Buckets Assignment Element (Section 6.5) 2081 WCCP2_MASK_ASSIGNMENT: 2083 Mask/Value Set List (Section 6.13) 2085 WCCP2_ALT_MASK_ASSIGNMENT: 2087 Alternate Mask/Value Set List (Section 6.17) 2089 5.4. 'Redirect Assign' message components 2091 The following sub-sections describe components used only in 'Redirect 2092 Assign' messages. 2094 5.4.1. Assignment Info Component 2096 This component can only be used with Service Groups using hash 2097 assignment. 2099 0 1 2 3 2100 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2101 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2102 | Type | Length | 2103 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2104 | Assignment Key Element | 2105 | . | 2106 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2107 | Number of Routers | 2108 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2109 | Router Assignment Element 1 | 2110 | . | 2111 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2112 | . | 2113 | . | 2114 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2115 | Router Assignment Element n | 2116 | . | 2117 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2118 | Hash Buckets Assignment Element | 2119 | . | 2120 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2122 Type 2124 0x06 - WCCP2_REDIRECT_ASSIGNMENT (6) 2126 Length 2128 Length of the remainder of the component. 2130 Assignment Key Element 2132 The designated web-cache expects this element to be returned by a 2133 router in subsequent WCCP2_I_SEE_YOU messages. The element is 2134 defined in Section 6.3. 2136 Number of Routers 2138 The number of routers (n) reachable by the designated web-cache. 2140 Router Assignment Element 1 -> Router Assignment Element n 2142 Elements indicating the identifying IP address, "Receive ID" and 2143 "Change Number" for each router. Each element is defined in 2144 Section 6.2. 2146 Hash Buckets Assignment Element 2148 A list of web-caches and hash bucket assignments. The element is 2149 defined in Section 6.5. 2151 5.4.2. Alternate Assignment Component 2153 0 1 2 3 2154 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2155 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2156 | Type | Length | 2157 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2158 | Assignment Type | Assignment Length | 2159 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2160 | Assignment Key Element | 2161 | . | 2162 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2163 | Number of Routers | 2164 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2165 | Router Assignment Element 1 | 2166 | . | 2167 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2168 | . | 2169 | . | 2170 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2171 | Router Assignment Element n | 2172 | . | 2173 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2174 | Assignment Body | 2175 | . | 2176 | . | 2177 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2179 Type 2181 0x0D - WCCP2_ALT_ASSIGNMENT (13) 2183 Length 2185 Length of the remainder of the component. 2187 Assignment Type 2189 Indicates the format of Assignment Body. The currently defined 2190 values are: 2192 0x00 - WCCP2_HASH_ASSIGNMENT 2193 0x01 - WCCP2_MASK_ASSIGNMENT 2194 0x02 - WCCP2_ALT_MASK_ASSIGNMENT (* see note) 2196 (* - requires minimum protocol version 2.01) 2198 Assignment Length 2200 Length of the remainder of the component (from Assignment Key 2201 Element onwards). 2203 Assignment Key Element 2205 The designated web-cache expects this element to be returned by a 2206 router in subsequent WCCP2_I_SEE_YOU messages. The element is 2207 defined in Section 6.3. 2209 Number of Routers 2211 The number of routers (n) reachable by the designated web-cache. 2213 Router Assignment Element 1 -> Router Assignment Element n 2215 Elements indicating the router ID address, "Receive ID" and 2216 "Change Number" for each router. Each element is defined in 2217 Section 6.2. 2219 Assignment Body 2221 The format of Assignment Body is specified by the value of 2222 Assignment Type, as follows: 2224 WCCP2_HASH_ASSIGNMENT: 2226 Hash Buckets Assignment Element (Section 6.5) 2228 WCCP2_MASK_ASSIGNMENT: 2230 Mask/Value Set List (Section 6.13) 2232 WCCP2_ALT_MASK_ASSIGNMENT: 2234 Alternate Mask/Value Set List (Section 6.17) 2236 5.5. 'Removal Query' message components 2238 The following sub-section describes a component used only in 'Removal 2239 Query' messages. 2241 5.5.1. Router Query Info Component 2243 0 1 2 3 2244 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2245 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2246 | Type | Length | 2247 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2248 | Router Identity Element | 2249 | . | 2250 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2251 | Sent To Address Element | 2252 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2253 | Target Address Element | 2254 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2256 Type 2258 0x07 - WCCP2_QUERY_INFO (7) 2260 Length 2262 Length of the remainder of the component. 2264 Router Identity Element 2266 Element indicating the router's identifying IP address and 2267 "Receive ID". The identifying IP address must be a valid, 2268 reachable address for the router. The element is defined in 2269 Section 6.1. 2271 Sent To Address Element 2273 Indicates the IP address to which the target web-cache sent its 2274 last received WCCP2_HERE_I_AM message. This will be the multicast 2275 address if the web-cache is multicasting its WCCP2_HERE_I_AM 2276 messages. The address element is defined in Section 4.7. 2278 Target Address Element 2280 Indicates the identifying IP address of the web-cache being 2281 queried. The address element is defined in Section 4.7. 2283 6. Message Elements 2285 The following sub-sections describe the message elements used within 2286 WCCP message components. 2288 6.1. Router Identity Element 2290 0 1 2 3 2291 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2292 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2293 | Router ID Address Element | 2294 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2295 | Receive ID | 2296 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2298 Router ID Address Element 2300 Indicates the router's identifying IP address. The identifying IP 2301 address must be a valid IP address by which the router is 2302 reachable. The address element is defined in Section 4.7. 2304 Receive ID 2306 A number maintained by the router for each Service Group. It is 2307 incremented each time the router sends a WCCP protocol message 2308 that includes a Router Identity Info Component. A router's 2309 Receive ID will never be zero. 2311 6.2. Router Assignment Element 2313 0 1 2 3 2314 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2315 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2316 | Router Identity Element | 2317 | . | 2318 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2319 | Change Number | 2320 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2322 Router Identity Element 2324 Indicates the router's identifying IP address and the last Receive 2325 ID obtained from it. The element is defined in Section 6.1. A 2326 router will ignore an assignment if the Receive ID is invalid. 2328 Change Number 2330 Last Member Change Number received from the router identified by 2331 the Router Identity Element. A router will ignore an assignment 2332 if Change Number is invalid. 2334 6.3. Assignment Key Element 2336 This element uniquely identifies a particular assignment. 2338 0 1 2 3 2339 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2341 | Key Address Element | 2342 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2343 | Key Change Number | 2344 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2346 Key Address Element 2348 Indicates the identifying IP address of the designated web-cache. 2349 The address element is defined in Section 4.7. 2351 Key Change Number 2353 A number maintained by the designated web-cache. It is 2354 incremented by the designated web-cache each time a change is made 2355 to the assignments for a Service Group. 2357 6.4. Web-Cache Identity Element 2359 0 1 2 3 2360 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2361 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2362 | Web-Cache Address Element | 2363 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2364 | Reserved | Flags | 2365 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2366 | Assignment Data | 2367 | . | 2368 | . | 2369 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2371 Web-Cache Address Element 2373 Indicates the identifying IP address of the web-cache. This must 2374 be a valid IP address by which the web-cache is reachable. The 2375 address element is defined in Section 4.7. 2377 Reserved 2379 Must be zero. 2381 Flags 2383 Bit 0 (U bit): 2385 If set, this bit indicates that the web-cache does not have an 2386 assignment in the current Service Group assignments and that 2387 the assignment data which follows is historical. Historical 2388 data may be used by the designated web-cache to re-assign the 2389 same assignment entries to a web-cache that left and 2390 subsequently rejoined a Service Group. 2392 Bit 1 & bit 2 (Type bits): 2394 Two bits indicating the format of the Assignment Data element 2395 immediately following. The meaning of the bit settings are 2396 shown in the following table: 2398 Bit 1 Bit 2 Meaning 2399 ----- ----- ------------------- 2400 0 0 Hash Assignment 2401 1 0 Mask Assignment 2402 0 1 No Assignment (* see note) 2403 1 1 Extended Assignment (* see note) 2405 (* - requires minimum protocol version 2.01) 2407 Bit 3 (V bit): 2409 If set, this bit indicates that the protocol version number in 2410 the message header is the minimum version supported by the web- 2411 cache. Otherwise, if clear, this bit indicates that the 2412 protocol version number in the message header is the maximum 2413 version supported by the web-cache. This is used as part of 2414 the protocol version negotiation (see Section 3.4). 2416 Bits 4 to 15: 2418 Reserved, must be zero. 2420 Assignment Data 2422 The format of Assignment Data is specified by the setting of the 2423 Type bits within the Flags field, as follows: 2425 Hash Assignment: 2427 Hash Assignment Data Element (Section 6.6) 2429 Mask Assignment: 2431 Mask Assignment Data Element (Section 6.7) 2433 No Assignment: 2435 The Assignment Data field is not present. 2437 Extended Assignment: 2439 Extended Assignment Data Element (Section 6.10) 2441 6.5. Hash Buckets Assignment Element 2443 0 1 2 3 2444 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2445 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2446 | Number of Web-Caches | 2447 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2448 | Web-Cache Address Element 0 | 2449 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2450 | . | 2451 | . | 2452 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2453 | Web-Cache Address Element (n-1) | 2454 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2455 | Bucket 0 | Bucket 1 | Bucket 2 | Bucket 3 | 2456 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2457 | . | 2458 | . | 2459 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2460 | Bucket 252 | Bucket 253 | Bucket 254 | Bucket 255 | 2461 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2463 Number of Web-Caches 2465 The number of useable web-caches (n) in the Service Group seen by 2466 all routers. 2468 Web-Cache Address Element 0 -> Web-Cache Address Element (n-1) 2470 Elements indicating the IP addresses of the useable web-caches in 2471 the Service Group. The position of a web-cache in this list is 2472 the web-cache index. The first entry in the list has an index of 2473 0. Each address element is defined in Section 4.7. 2475 Bucket 0 -> Bucket 255 2477 Contents of the Redirection Hash Table. The content of each 2478 bucket is a web-cache index value in the range 0 to 31. If set, 2479 the "A" flag indicates that alternative hashing should be used for 2480 this web-cache. The special value 0xFF indicates that no web- 2481 cache has been assigned to the bucket. 2483 0 1 2 3 4 5 6 7 2484 +-+-+-+-+-+-+-+-+ 2485 | Index |A| 2486 +-+-+-+-+-+-+-+-+ 2488 6.6. Hash Assignment Data Element 2490 0 1 2 3 2491 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2492 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2493 | Bucket Block 0 | 2494 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2495 | Bucket Block 1 | 2496 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2497 | Bucket Block 2 | 2498 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2499 | Bucket Block 3 | 2500 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2501 | Bucket Block 4 | 2502 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2503 | Bucket Block 5 | 2504 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2505 | Bucket Block 6 | 2506 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2507 | Bucket Block 7 | 2508 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2509 | Assignment Weight and Status Element | 2510 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2512 Bucket Block 0 -> Bucket Block 7 2514 A 256-bit vector. A set bit indicates that the corresponding 2515 Redirection Hash Table bucket is assigned to this web-cache. 2517 Assignment Weight and Status Element 2519 This element may be used to indicate to the designated web-cache 2520 how new assignments should be made. The element is defined in 2521 Section 6.9. 2523 6.7. Mask Assignment Data Element 2525 0 1 2 3 2526 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2527 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2528 | Mask/Value Set List | 2529 | . | 2530 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2531 | Assignment Weight and Status Element | 2532 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2534 Mask/Value Set List 2536 A list of mask/value sets. The list is defined in Section 6.13. 2538 Assignment Weight and Status Element 2540 This element may be used to indicate to the designated web-cache 2541 how new assignments should be made. The element is defined in 2542 Section 6.9. 2544 6.8. Alternate Mask Assignment Data Element 2546 This element provides a more compact representation of mask 2547 assignment data than the Mask Assignment Data Element. The Alternate 2548 Mask Assignment Data Element should be used in preference to the Mask 2549 Assignment Data Element whenever possible. 2551 0 1 2 3 2552 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2553 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2554 | Alternate Mask/Value Set List | 2555 | . | 2556 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2557 | Assignment Weight and Status Element | 2558 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2560 Alternate Mask/Value Set List 2562 A list of alternate mask/value sets. The list is defined in 2563 Section 6.17. 2565 Assignment Weight and Status Element 2567 This element may be used to indicate to the designated web-cache 2568 how new assignments should be made. The element is defined in 2569 Section 6.9. 2571 6.9. Assignment Weight and Status Element 2573 0 1 2 3 2574 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2575 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2576 | Assignment Weight | Assignment Status | 2577 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2579 Assignment Weight 2581 May be used to indicate to the designated web-cache how new 2582 assignments should be made. This information is generated by each 2583 web-cache to be associated with its identity information. It is 2584 received, stored and distributed by a router without modification. 2586 Assignment Status 2588 May be used to indicate to the designated web-cache how new 2589 assignments should be made. This information is generated by each 2590 web-cache to be associated with its identity information. It is 2591 received, stored and distributed by a router without modification. 2593 6.10. Extended Assignment Data Element 2595 0 1 2 3 2596 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2597 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2598 | Type | Length | 2599 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2600 | Assignment Data | 2601 | . | 2602 | . | 2603 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2605 Type 2607 Indicates the format of Assignment Data. The currently defined 2608 values are: 2610 0x00 - WCCP2_HASH_ASSIGNMENT 2611 0x01 - WCCP2_MASK_ASSIGNMENT 2612 0x02 - WCCP2_ALT_MASK_ASSIGNMENT 2613 0x03 - WCCP2_ASSIGNMENT_WEIGHT_STATUS 2615 Length 2617 Length of the remainder of the element (Assignment Data). 2619 Assignment Data 2621 The format of Assignment Data is specified by the value of Type, 2622 as follows: 2624 WCCP2_HASH_ASSIGNMENT: 2626 Hash Assignment Data Element (Section 6.6) 2628 WCCP2_MASK_ASSIGNMENT: 2630 Mask Assignment Data Element (Section 6.7) 2632 WCCP2_ALT_MASK_ASSIGNMENT: 2634 Alternate Mask Assignment Data Element (Section 6.8) 2636 WCCP2_ASSIGNMENT_WEIGHT_STATUS: 2638 Assignment Weight and Status Element (Section 6.9) 2640 6.11. Capability Element 2642 0 1 2 3 2643 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2644 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2645 | Type | Length | 2646 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2647 | Value | 2648 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2650 Type 2652 Currently defined types are: 2654 0x01 - WCCP2_FORWARDING_METHOD (Section 6.11.1) 2655 0x02 - WCCP2_ASSIGNMENT_METHOD (Section 6.11.2) 2656 0x03 - WCCP2_PACKET_RETURN_METHOD (Section 6.11.3) 2657 0x04 - WCCP2_TRANSMIT_T (Section 6.11.4) 2658 0x05 - WCCP2_TIMER_SCALE (Section 6.11.5) 2660 Routers and web-caches must ignore any Capability Element which 2661 has an unrecognised type. 2663 Length 2665 The length in octets of the following Capability Element Value. 2667 Value 2669 The format and length of the Value field is determined by the 2670 capability type. The following sub-sections describe the format 2671 of this field for each defined type. 2673 6.11.1. Capability Type WCCP2_FORWARDING_METHOD 2675 The Capability Element Value contains a 32-bit bitmask indicating the 2676 supported or selected forwarding methods. The currently defined 2677 values are: 2679 0x00000001 - WCCP2_FORWARDING_METHOD_GRE 2680 0x00000002 - WCCP2_FORWARDING_METHOD_L2 2682 6.11.2. Capability Type WCCP2_ASSIGNMENT_METHOD 2684 The Capability Element Value contains a 32-bit bitmask indicating the 2685 supported or selected assignment methods. The currently defined 2686 values are: 2688 0x00000001 - WCCP2_ASSIGNMENT_METHOD_HASH 2689 0x00000002 - WCCP2_ASSIGNEMNT_METHOD_MASK 2691 6.11.3. Capability Type WCCP2_PACKET_RETURN_METHOD 2693 The Capability Element Value contains a 32-bit bitmask indicating the 2694 supported or selected packet return methods. The currently defined 2695 values are: 2697 0x00000001 - WCCP2_PACKET_RETURN_METHOD_GRE 2698 0x00000002 - WCCP2_PACKET_RETURN_METHOD_L2 2700 6.11.4. Capability Type WCCP2_TRANSMIT_T 2702 The Capability Element Value contains two 16-bit values specifying 2703 the supported or selected TRANSMIT_T message interval in 2704 milliseconds. In a WCCP2_I_SEE_YOU message, a router can advertise 2705 either a range of permitted TRANSMIT_T values, or a single permitted 2706 TRANSMIT_T value. In a WCCP2_HERE_I_AM message, a web-cache can 2707 select only a single TRANSMIT_T value. 2709 When a single selected value is to be specified, the first 16-bit 2710 value is zero and the second 16-bit value is the selected TRANSMIT_T 2711 message interval value: 2713 0 1 2 3 2714 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2715 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2716 | 0 | TRANSMIT_T | 2717 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2719 When a supported range of permitted values is to be specified, the 2720 first 16-bit value contains the upper limit of the range and the 2721 second 16-bit value contains the lower limit of the range: 2723 0 1 2 3 2724 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2725 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2726 | TRANSMIT_T Upper Limit | TRANSMIT_T Lower Limit | 2727 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2729 The default TRANSMIT_T value is 10000 (10 seconds) and applies when 2730 the WCCP2_TRANSMIT_T capability is not present. The range of 2731 supported values may be chosen by the implementation, but a minimum 2732 value of 500 and a maximum value of 60000 are suggested. 2734 6.11.5. Capability Type WCCP2_TIMER_SCALE 2736 The Capability Element Value contains four 8-bit values specifying 2737 the supported or selected TIMEOUT_SCALE and RA_TIMER_SCALE values. 2738 In a WCCP2_I_SEE_YOU message, a router can advertise either a range 2739 of supported values for each parameter, or a single value for each 2740 parameter. In a WCCP2_HERE_I_AM message, a web-cache can select only 2741 a single value for each parameter. 2743 The first and second 8-bit values are used to specify the 2744 TIMEOUT_SCALE parameter. The third and fourth 8-bit values are used 2745 to specify the RA_TIMER_SCALE parameter. 2747 When a single selected value is to be specified for each parameter, 2748 the first 8-bit value is zero, the second 8-bit value is the selected 2749 TIMEOUT_SCALE value, the third 8-bit value is zero and the fourth 2750 8-bit value is the selected RA_TIMER_SCALE value: 2752 0 1 2 3 2753 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2754 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2755 | 0 | TIMEOUT_SCALE | 0 |RA_TIMER_SCALE | 2756 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2758 When a supported range of permitted values is to be specified for 2759 each parameter, the first 8-bit value contains the upper limit of the 2760 TIMEOUT_SCALE range, the second 8-bit value contains the lower limit 2761 of the TIMEOUT_SCALE range, the third 8-bit value contains the upper 2762 limit of the RA_TIMER_SCALE range and the fourth 8-bit value contains 2763 the lower limit of the TIMEOUT_SCALE range: 2765 0 1 2 3 2766 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2767 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2768 | TO_SCL Upper | TO_SCL Lower | RA_SCL Upper | RA_SCL Lower | 2769 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2771 TO_SCL Upper = TIMEOUT_SCALE Upper Limit 2772 TO_SCL Lower = TIMEOUT_SCALE Lower Limit 2773 RA_SCL Upper = RA_TIMER_SCALE Upper Limit 2774 RA_SCL Lower = RA_TIMER_SCALE Lower Limit 2776 The default TIMEOUT_SCALE and RA_TIMER_SCALE values are both 1 and 2777 apply when the WCCP2_TIMER_SCALE capability is not present. The 2778 range of supported values for each of these parameters may be chosen 2779 by the implementation, but a minimum value of 1 and a maximum value 2780 of 5 are suggested in both cases. The value 0 must not be within the 2781 supported range of either parameter. 2783 6.12. Command Element 2785 0 1 2 3 2786 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2787 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2788 | Command Type | Command Length ! 2789 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2790 | Command Data | 2791 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2793 Command Type 2795 Currently defined command types are: 2797 0x01 - WCCP2_COMMAND_TYPE_SHUTDOWN (Section 6.12.1) 2798 0x02 - WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE (Section 6.12.2) 2800 Routers and web-caches must ignore any Command Element which has 2801 an unrecognised type. 2803 Command Length 2805 The length in octets of the following Command Data field. 2807 Command Data 2809 The format and length of the Command Data field is determined by 2810 the value of the Command Type field. The following sub-sections 2811 describe the format of this field for each defined type. 2813 6.12.1. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN 2815 This command is used by a web-cache to indicate to the routers in a 2816 Service Group that it is shutting down and should no longer receive 2817 any redirected traffic. 2819 The Command Data for the WCCP2_COMMAND_TYPE_SHUTDOWN command is a 2820 Web-cache IP address element, as defined in Section 4.7. The length 2821 of the field is 4 octets. 2823 The format of the Command Data field is: 2825 0 1 2 3 2826 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2827 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2828 | Web-Cache Address Element | 2829 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2831 The address element value will be identical to that used in the Web- 2832 Cache Identity Element within the Web-Cache Identity Info Component. 2834 6.12.2. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE 2836 This command is used by a router to acknowledge receipt of a SHUTDOWN 2837 command received from the web-cache identified by the IP address 2838 element in the Command Data field. 2840 The Command Data for the WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE command 2841 is a Web-cache IP address element, as defined in Section 4.7. The 2842 length of the field is 4 octets. 2844 The format of the Command Data field is: 2846 0 1 2 3 2847 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2848 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2849 | Web-Cache Address Element | 2850 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2852 6.13. Mask/Value Set List 2854 0 1 2 3 2855 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2856 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2857 | Number of Mask/Value Set Elements | 2858 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2859 | Mask/Value Set Element 1 | 2860 | . | 2861 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2862 | . | 2863 | . | 2864 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2865 | Mask/Value Set Element m | 2866 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2868 Number of Mask/Value Set Elements 2870 The number of Mask/Value Set Elements (m) in the following list. 2872 Mask/Value Set Element 1 -> Mask/Value Set Element m 2874 A list of the Mask/Value Set Elements. Each element is defined in 2875 Section 6.14. 2877 6.14. Mask/Value Set Element 2879 0 1 2 3 2880 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2881 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2882 | Mask Element | 2883 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2884 | Number of Value Elements | 2885 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2886 | Value Element 1 | 2887 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2888 | . | 2889 | . | 2890 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2891 | Value Element n | 2892 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2894 Mask Element 2896 The Mask Element for this set. The element is defined in 2897 Section 6.15. 2899 Number of Value Elements 2901 The number of Value Elements (n) in this set. 2903 Value Element 1 -> Value Element n 2905 The Value Elements for this set. Each element is defined in 2906 Section 6.16. 2908 6.15. Mask Element 2910 0 1 2 3 2911 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2912 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2913 | Source Address Element | 2914 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2915 | Destination Address Element | 2916 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2917 | Source Port | Destination Port | 2918 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2920 Source Address Element 2922 Indicates the mask to be applied to the source IP address of the 2923 packet. A value of zero means "Don't care". The element is 2924 defined in Section 4.7. 2926 Destination Address Element 2928 Indicates the mask to be applied to the destination IP address of 2929 the packet. A value of zero means "Don't care". The element is 2930 defined in Section 4.7. 2932 Source Port 2934 The 16-bit mask to be applied to the TCP/UDP source port field of 2935 the packet. A value of zero means "Don't care". 2937 Destination Port 2939 The 16-bit mask to be applied to the TCP/UDP destination port 2940 field of the packet. A value of zero means "Don't care". 2942 6.16. Value Element 2944 0 1 2 3 2945 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2946 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2947 | Source Address Element | 2948 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2949 | Destination Address Element | 2950 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2951 | Source Port | Destination Port | 2952 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2953 | Web-Cache Address Element | 2954 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2956 Source Address Element 2958 Indicates the value to match against the source IP address of the 2959 packet after masking. The element is defined in Section 4.7. 2961 Destination Address Element 2963 Indicates the value to match against the destination IP address of 2964 the packet after masking. The element is defined in Section 4.7. 2966 Source Port 2968 The value to match against the TCP/UDP source port number of the 2969 packet after masking. 2971 Destination Port 2973 The value to match against the TCP/UDP destination port number of 2974 the packet after masking. 2976 Web-Cache Address Element 2978 Indicates the identifying IP address of the web-cache to which 2979 packets matching this Value Element should be sent. The address 2980 element is defined in Section 4.7. 2982 6.17. Alternate Mask/Value Set List 2984 0 1 2 3 2985 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2986 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2987 | Number of Alternate Mask/Value Set Elements | 2988 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2989 | Alternate Mask/Value Set Element 1 | 2990 | . | 2991 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2992 | . | 2993 | . | 2994 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2995 | Alternate Mask/Value Set Element m | 2996 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2998 Number of Alternate Mask/Value Set Elements 3000 The number of Alternate Mask/Value Set Elements (m) in the 3001 following list. 3003 Alternate Mask/Value Set Element 1 -> Alternate Mask/Value Set 3004 Element m 3006 A list of Alternate Mask/Value Set Elements. Each element is 3007 defined in Section 6.18. 3009 6.18. Alternate Mask/Value Set Element 3011 0 1 2 3 3012 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3013 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3014 | Mask Element | 3015 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3016 | Number of Web-Cache Value Elements | 3017 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3018 | Web-Cache Value Element 1 | 3019 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3020 | . | 3021 | . | 3022 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3023 | Web-Cache Value Element n | 3024 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3026 Mask Element 3028 The Mask Element for this set. The element is defined in 3029 Section 6.15. 3031 Number of Web-Cache Value Elements 3033 The number of Web-cache Value Elements in this set. 3035 Web-Cache Value Element 1 -> Web-Cache Value Element n 3037 The Web-cache Value Elements for this set. Each element is 3038 defined in Section 6.19. 3040 6.19. Web-Cache Value Element 3042 0 1 2 3 3043 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3044 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3045 | Web-Cache Address Element | 3046 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3047 | Number of Value Sequence Numbers | 3048 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3049 | Value Sequence Number 1 | 3050 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3051 | . | 3052 | . | 3053 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3054 | Value Sequence Number m | 3055 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3057 Web-Cache Address Element 3059 Indicates the identifying IP address of the web-cache to which 3060 packets matching this list of value sequence numbers should be 3061 sent. The address element is defined in Section 4.7. 3063 Number of Value Sequence Numbers 3065 The number of Value Sequence Numbers (m) in this element. 3067 Value Sequence Number 1 -> Value Sequence Number m 3069 An index (starting from 0) into an imaginary table that contains 3070 an entry for each possible value that could be matched against the 3071 result of applying the mask to the fields of the packet header. 3072 The size of the imaginary table is determined by the total number 3073 of bits set in the mask. For n bits set in the mask, the 3074 imaginary table contains 2^n (2 raised to the power n) entries. 3075 The minimum permitted index value is 0 and the maximum permitted 3076 index value is (2^n)-1. 3078 7. Interpreting Alternate Mask/value Set Elements 3080 As defined in Section 6.15, each mask consists of four elements: 3082 1. Source address mask (SAM) 3083 2. Destination address mask (DAM) 3084 3. Source port mask (SPM) 3085 4. Destination port mask (DPM) 3087 Each bit that is set in any of the four mask elements maps uniquely 3088 to an individual bit within the Value Sequence Number (VSN). With 32 3089 bits available in the VSN, there can be up to 32 bits set in the mask 3090 across the four elements. 3092 The order of the mask elements listed above is the order of 3093 significance, with the SAM being the most significant element (MSE) 3094 and the DPM being the least significant element (LSE). 3096 Bits within the VSN are mapped in order from the least significant 3097 bit (LSB, bit 0) to the most significant bit (MSB, bit 31). Mask 3098 elements are processed in order from the LSE to the MSE. Within each 3099 mask element, octets are processed from the least significant octet 3100 to the most significant octet, and within each octet bits are 3101 processed from the LSB (bit 0) to the MSB (bit 7). 3103 For example, consider the following IPv4 mask: 3105 Source Dest Source Dest 3106 Address Address Port Port 3107 Mask Mask Mask Mask 3108 ---------- ---------- ------ ------ 3109 0x00000100 0x00000003 0x0000 0x0001 3111 When mapping bits in the mask above to bits in the VSN, the values 3112 shown above are processed from right to left as follows. 3114 The least significant element is the DPM. Within that element, bit 0 3115 is set in the least significant octet, therefore this is mapped to 3116 bit 0 in the VSN. No other bits are set within the DPM, so 3117 processing moves on to the SPM. 3119 No bits are set in the SPM so processing moves on to the DAM. 3121 In the least significant octet of the DAM, bit 0 is set therefore 3122 this is mapped to the next available bit in the VSN, bit 1. The next 3123 bit set in the DAM is bit 1 of the least significant octet, so it 3124 maps to the next available bit in the VSN, bit 2. No other bits are 3125 set within the DAM, so processing moves on to the SAM. 3127 In the least significant octet of the SAM, no bits are set, so 3128 processing moves on to the next significant octet within the SAM. In 3129 this octet, bit 0 is set therefore this is mapped to the next 3130 available bit in the VSN, bit 3. 3132 Therefore, the above mask results in the following mapping (mask 3133 octets are counted from least significant to most significant): 3135 VSN bit 0 --> DPM octet 0, bit 0 3136 VSN bit 1 --> DAM octet 0, bit 0 3137 VSN bit 2 --> DAM octet 0, bit 1 3138 VSN bit 3 --> SAM octet 1, bit 0 3140 Using the mapping shown above, the following table can be 3141 constructed. It shows the values that correspond to each valid VSN: 3143 Value Source Dest Source Dest 3144 Sequence Address Address Port Port 3145 Number Value Value Value Value 3146 -------- ---------- ---------- ------ ------ 3147 0 0x00000000 0x00000000 0x0000 0x0000 3148 1 0x00000000 0x00000000 0x0000 0x0001 3149 2 0x00000000 0x00000001 0x0000 0x0000 3150 3 0x00000000 0x00000001 0x0000 0x0001 3151 4 0x00000000 0x00000002 0x0000 0x0000 3152 5 0x00000000 0x00000002 0x0000 0x0001 3153 6 0x00000000 0x00000003 0x0000 0x0000 3154 7 0x00000000 0x00000003 0x0000 0x0001 3155 8 0x00000100 0x00000000 0x0000 0x0000 3156 9 0x00000100 0x00000000 0x0000 0x0001 3157 10 0x00000100 0x00000001 0x0000 0x0000 3158 11 0x00000100 0x00000001 0x0000 0x0001 3159 12 0x00000100 0x00000002 0x0000 0x0000 3160 13 0x00000100 0x00000002 0x0000 0x0001 3161 14 0x00000100 0x00000003 0x0000 0x0000 3162 15 0x00000100 0x00000003 0x0000 0x0001 3164 The table above is equivalent to a list of all possible values which 3165 can be obtained by applying the mask to any input data, arranged into 3166 a specific sequential order. For the given mask, each VSN is 3167 effectively an index into this table. However, to convert between a 3168 VSN and its equivalent value, a table lookup is not required as the 3169 preceding bit mapping achieves the same result. 3171 In an Alternate Mask/Value Set Element, each web-cache is represented 3172 by a Web-Cache Value Element. For each web-cache there is a list of 3173 VSNs within the Web-Cache Value Element to show which values have 3174 been assigned to the web-cache. 3176 For example, in an Alternate Mask/Value Set Element listing three 3177 web-caches, each may have a list of VSNs as follows: 3179 web-cache 1, VSNs: 0, 3, 6, 9, 12, 15 3180 web-cache 2, VSNs: 1, 4, 7, 10, 13 3181 web-cache 3, VSNs: 2, 5, 8, 11, 14 3183 This is equivalent to the following values in a Mask/Value Set 3184 Element: 3186 Source Dest Source Dest 3187 Address Address Port Port Target 3188 Value Value Value Value Web-cache 3189 ---------- ---------- ------ ------ --------- 3190 0x00000000 0x00000000 0x0000 0x0000 1 3191 0x00000000 0x00000000 0x0000 0x0001 2 3192 0x00000000 0x00000001 0x0000 0x0000 3 3193 0x00000000 0x00000001 0x0000 0x0001 1 3194 0x00000000 0x00000002 0x0000 0x0000 2 3195 0x00000000 0x00000002 0x0000 0x0001 3 3196 0x00000000 0x00000003 0x0000 0x0000 1 3197 0x00000000 0x00000003 0x0000 0x0001 2 3198 0x00000100 0x00000000 0x0000 0x0000 3 3199 0x00000100 0x00000000 0x0000 0x0001 1 3200 0x00000100 0x00000001 0x0000 0x0000 2 3201 0x00000100 0x00000001 0x0000 0x0001 3 3202 0x00000100 0x00000002 0x0000 0x0000 1 3203 0x00000100 0x00000002 0x0000 0x0001 2 3204 0x00000100 0x00000003 0x0000 0x0000 3 3205 0x00000100 0x00000003 0x0000 0x0001 1 3207 In the example above, all valid VSNs are used but this is not a 3208 requirement, each VSN does not need to be assigned to a web-cache. 3209 However, it is a requirement that each VSN is listed for no more than 3210 one web-cache. 3212 Generally, as demonstrated above, Alternate Mask/Value Set Lists can 3213 be used to represent the same information as Mask/Value Set Lists, 3214 but in a more compact form. Therefore, when constructing a WCCP 3215 message in which protocol version 2.01 is used, Alternate Mask/Value 3216 Set Lists should be used in preference to Mask/Value Set Lists to 3217 achieve a smaller message size. 3219 8. Security Considerations 3221 WCCP V2 provides a mechanism for message authentication. It is 3222 described in Section 3.7 of this document. The authentication 3223 mechanism relies on a password known to all routers and web-caches in 3224 a Service Group. The password is part of the Service Group 3225 configuration and is used to compute message checksums which can be 3226 verified by other members of the group. Should the password become 3227 known to a host attempting to disrupt the operation of a Service 3228 Group it would be possible for that host to spoof WCCP messages and 3229 appear as either a router or web-cache in the Service Group. 3231 To pose as a router in a Service Group a host would advertise its 3232 presence to the members of the group in I_SEE_YOU messages. If 3233 accepted as part of the Service Group the host would receive the 3234 configuration for the group in a HERE_I_AM message from the 3235 designated web-cache. This situation would not pose any threat to 3236 the operation of the Service Group because the host would not be 3237 performing any packet redirection and all packets would flow 3238 normally. 3240 To pose as a web-cache within a Service Group a host would advertise 3241 its presence in HERE_I_AM messages. Acceptance of the host as part 3242 of the Service Group would be decided by the designated web-cache and 3243 may be subject to additional security checks not specified by WCCP. 3244 The host may attempt to become the designated web-cache to avoid 3245 these checks, but acceptance of a host as the designated web-cache 3246 may also be subject to additional security checks. Should the host 3247 become part of the Service Group it would be assigned a proportion of 3248 the traffic redirected by the routers in the Service Group. Assuming 3249 that the host drops any redirected packets, the net effect to clients 3250 would be the loss of a proportion of the traffic flowing through the 3251 Service Group routers. 3253 9. IANA Considerations 3255 This document has no actions for IANA. 3257 10. Acknowledgements 3259 The author would like to thank Martin Cieslak, Richard Edmonstone, 3260 Mark Gillott and Khalid Rafiq for their assistance in reviewing this 3261 document or earlier versions. 3263 11. Normative References 3265 [IANA-AF] Internet Assigned Numbers Authority, "Address Family 3266 Numbers", 3267 . 3269 [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, 3270 April 1992. 3272 [RFC1701] Hanks, S., Li, T., Farinacci, D., and P. Traina, "Generic 3273 Routing Encapsulation (GRE)", RFC 1701, October 1994. 3275 Author's Address 3277 Douglas J. McLaggan 3278 Cisco Systems 3279 96 Commercial Street 3280 Edinburgh, EH6 6LX 3281 United Kingdom 3283 Email: djmclaggan@gmail.com