idnits 2.17.1 draft-param-wccp-v2rev1-01.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 (February 16, 2017) is 2598 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 B. Parameshwaran, Ed. 3 Internet-Draft Khan. Ahsan, Ed. 4 Intended status: Informational Cisco Systems 5 Expires: August 20, 2017 February 16, 2017 7 Web Cache Communication Protocol V2, Revision 1 8 draft-param-wccp-v2rev1-01 10 Abstract 12 This document describes version 2 of the Cisco's 'Web Cache 13 Communication Protocol (WCCP). The WCCP V2 protocol specifies 14 interactions between one or more routers and one or more web-caches. 15 The interaction may take place within an IPv4 or IPv6 network. The 16 purpose of the interaction is to establish and maintain the 17 transparent redirection of selected types of traffic flowing through 18 a group of routers (or similar devices). The selected traffic is 19 redirected to a group of web-caches (or other traffic optimisation 20 devices) with the aim of optimising resource usage and lowering 21 response times. 23 The protocol does not specify any interaction between the web-caches 24 within a group or between a web-cache and a web-server. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at http://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on August 20, 2017. 43 Copyright Notice 45 Copyright (c) 2017 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (http://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. 55 This document may not be modified, and derivative works of it may not 56 be created, except to format it for publication as an RFC or to 57 translate it into languages other than English. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 62 1.1. Protocol Overview . . . . . . . . . . . . . . . . . . . . 4 63 1.2. Contributing Authors . . . . . . . . . . . . . . . . . . 6 64 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 7 65 2.1. Time Interval Definitions . . . . . . . . . . . . . . . . 9 66 3. Protocol Description . . . . . . . . . . . . . . . . . . . . 10 67 3.1. Joining a Service Group . . . . . . . . . . . . . . . . . 10 68 3.2. Describing a Service Group . . . . . . . . . . . . . . . 12 69 3.3. Establishing Two-Way Connectivity . . . . . . . . . . . . 13 70 3.4. Negotiating the Protocol Version Number . . . . . . . . . 14 71 3.4.1. Responsibilities of a web-cache during version 72 negotiation . . . . . . . . . . . . . . . . . . . . . 15 73 3.4.2. Responsibilities of a router during version 74 negotiation . . . . . . . . . . . . . . . . . . . . . 16 75 3.5. Negotiating Capabilities . . . . . . . . . . . . . . . . 17 76 3.5.1. Negotiating the Forwarding Method . . . . . . . . . . 19 77 3.5.2. Negotiating the Assignment Method . . . . . . . . . . 19 78 3.5.3. Negotiating the Packet Return Method . . . . . . . . 20 79 3.5.4. Negotiating the TRANSMIT_T Message Interval Value . . 20 80 3.5.5. Negotiating the TIMEOUT_SCALE and RA_TIMER_SCALE 81 values . . . . . . . . . . . . . . . . . . . . . . . 21 82 3.6. Advertising Views of the Service Group . . . . . . . . . 22 83 3.7. Security . . . . . . . . . . . . . . . . . . . . . . . . 22 84 3.8. Distribution of Traffic Assignments . . . . . . . . . . . 23 85 3.8.1. Hash Tables . . . . . . . . . . . . . . . . . . . . . 23 86 3.8.2. Mask/Value Sets . . . . . . . . . . . . . . . . . . . 24 87 3.9. Electing the Designated Web-cache . . . . . . . . . . . . 25 88 3.10. Traffic Interception . . . . . . . . . . . . . . . . . . 25 89 3.11. Traffic Redirection . . . . . . . . . . . . . . . . . . . 26 90 3.11.1. Redirection with Hash Assignment . . . . . . . . . . 26 91 3.11.2. Redirection with Mask Assignment . . . . . . . . . . 26 92 3.12. Traffic Forwarding . . . . . . . . . . . . . . . . . . . 27 93 3.12.1. Forwarding using GRE Encapsulation . . . . . . . . . 27 94 3.12.2. Forwarding using L2 Rewrite . . . . . . . . . . . . 28 95 3.13. Packet Return . . . . . . . . . . . . . . . . . . . . . . 29 96 3.13.1. Packet Return using GRE Encapsulation . . . . . . . 29 97 3.13.2. Packet Return using L2 Rewrite . . . . . . . . . . . 29 98 3.13.3. Preventing redirection of returned packets . . . . . 30 99 3.14. Querying Web-Cache Time-Out . . . . . . . . . . . . . . . 30 100 3.15. Sending additional WCCP2_HERE_I_AM messages . . . . . . . 31 101 3.16. Command and Status Information . . . . . . . . . . . . . 31 102 4. Protocol Messages . . . . . . . . . . . . . . . . . . . . . . 31 103 4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 31 104 4.2. 'Here I Am' Message . . . . . . . . . . . . . . . . . . . 33 105 4.3. 'I See You' Message . . . . . . . . . . . . . . . . . . . 33 106 4.4. 'Redirect Assign' Message . . . . . . . . . . . . . . . . 34 107 4.5. 'Removal Query' Message . . . . . . . . . . . . . . . . . 34 108 4.6. WCCP Message Header . . . . . . . . . . . . . . . . . . . 35 109 4.7. Multiple Address family support . . . . . . . . . . . . . 36 110 4.7.1. Messages without an address table component . . . . . 37 111 4.7.2. Messages with an address table component . . . . . . 37 112 5. Message Components . . . . . . . . . . . . . . . . . . . . . 37 113 5.1. Components used in multiple message types . . . . . . . . 39 114 5.1.1. Security Info Component . . . . . . . . . . . . . . . 39 115 5.1.2. Service Info Component . . . . . . . . . . . . . . . 40 116 5.1.3. Capabilities Info Component . . . . . . . . . . . . . 43 117 5.1.4. Command Extension Component . . . . . . . . . . . . . 44 118 5.1.5. Address Table Component . . . . . . . . . . . . . . . 44 119 5.2. 'Here I Am' message components . . . . . . . . . . . . . 47 120 5.2.1. Web-Cache Identity Info Component . . . . . . . . . . 47 121 5.2.2. Web-Cache View Info Component . . . . . . . . . . . . 47 122 5.3. 'I See You' message components . . . . . . . . . . . . . 50 123 5.3.1. Router Identity Info Component . . . . . . . . . . . 50 124 5.3.2. Router View Info Component . . . . . . . . . . . . . 51 125 5.3.3. Assignment Map Component . . . . . . . . . . . . . . 54 126 5.3.4. Alternate Assignment Map Component . . . . . . . . . 54 127 5.4. 'Redirect Assign' message components . . . . . . . . . . 56 128 5.4.1. Assignment Info Component . . . . . . . . . . . . . . 56 129 5.4.2. Alternate Assignment Component . . . . . . . . . . . 58 130 5.5. 'Removal Query' message components . . . . . . . . . . . 60 131 5.5.1. Router Query Info Component . . . . . . . . . . . . . 60 132 6. Message Elements . . . . . . . . . . . . . . . . . . . . . . 61 133 6.1. Router Identity Element . . . . . . . . . . . . . . . . . 61 134 6.2. Router Assignment Element . . . . . . . . . . . . . . . . 62 135 6.3. Assignment Key Element . . . . . . . . . . . . . . . . . 62 136 6.4. Web-Cache Identity Element . . . . . . . . . . . . . . . 63 137 6.5. Hash Buckets Assignment Element . . . . . . . . . . . . . 64 138 6.6. Hash Assignment Data Element . . . . . . . . . . . . . . 66 139 6.7. Mask Assignment Data Element . . . . . . . . . . . . . . 67 140 6.8. Alternate Mask Assignment Data Element . . . . . . . . . 67 141 6.9. Assignment Weight and Status Element . . . . . . . . . . 68 142 6.10. Extended Assignment Data Element . . . . . . . . . . . . 69 143 6.11. Capability Element . . . . . . . . . . . . . . . . . . . 70 144 6.11.1. Capability Type WCCP2_FORWARDING_METHOD . . . . . . 71 145 6.11.2. Capability Type WCCP2_ASSIGNMENT_METHOD . . . . . . 71 146 6.11.3. Capability Type WCCP2_PACKET_RETURN_METHOD . . . . . 71 147 6.11.4. Capability Type WCCP2_TRANSMIT_T . . . . . . . . . . 72 148 6.11.5. Capability Type WCCP2_TIMER_SCALE . . . . . . . . . 73 149 6.12. Command Element . . . . . . . . . . . . . . . . . . . . . 74 150 6.12.1. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN . . . . . . 75 151 6.12.2. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE . 75 152 6.13. Mask/Value Set List . . . . . . . . . . . . . . . . . . . 76 153 6.14. Mask/Value Set Element . . . . . . . . . . . . . . . . . 77 154 6.15. Mask Element . . . . . . . . . . . . . . . . . . . . . . 78 155 6.16. Value Element . . . . . . . . . . . . . . . . . . . . . . 79 156 6.17. Alternate Mask/Value Set List . . . . . . . . . . . . . . 80 157 6.18. Alternate Mask/Value Set Element . . . . . . . . . . . . 81 158 6.19. Web-Cache Value Element . . . . . . . . . . . . . . . . . 82 159 7. Interpreting Alternate Mask/value Set Elements . . . . . . . 82 160 8. Security Considerations . . . . . . . . . . . . . . . . . . . 85 161 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 86 162 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 86 163 11. Normative References . . . . . . . . . . . . . . . . . . . . 86 164 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 87 166 1. Introduction 168 1.1. Protocol Overview 170 WCCP V2 defines mechanisms to allow one or more routers enabled for 171 transparent redirection to discover, verify, and advertise 172 connectivity to one or more web-caches. 174 Having established connectivity the routers and web-caches form 175 Service Groups to handle the redirection of traffic whose 176 characteristics are part of the Service Group definition. 178 The protocol provides the means to negotiate the specific method used 179 for load distribution among web-caches and also the method used to 180 transport traffic between a router and a web-cache. 182 A single web-cache within a Service Group is elected as the 183 designated web-cache. It is the responsibility of the designated 184 web-cache to provide routers with the data which determines how 185 redirected traffic is distributed between the web-caches in the 186 Service Group. 188 Although its original purpose was for use with web-caches, the WCCP 189 V2 protocol is suitable for use with many types of network devices 190 that need to transparently intercept IP traffic. For the sake of 191 simplicity and to maintain consistency with the protocol name, the 192 device wishing to receive redirected IP traffic will be generically 193 referred to as the "web-cache" in this document. 195 Similarly, the device through which the IP traffic to be redirected 196 is flowing will generically be referred to in this document as the 197 "router", even though the protocol is suitable for use with several 198 types of network devices through which IP traffic may flow. 200 This document specifies WCCP V2 for use with multiple address 201 families, specifically including both IPv4 and IPv6. References here 202 to "IP" apply equally to both IPv4 and IPv6 and are used when the 203 discussion is not specific to a particular address family. 205 1.2. Contributing Authors 207 The WCCP V2 revision 1 document is derived from the work of the 208 following authors who wrote the original description of WCCP Version 209 2 in April 2001: 211 * Martin Cieslak (Cisco Systems) 212 * David Forster (Cisco Systems) 213 * Gurumukh Tiwana (Cisco Systems) 214 * Rob Wilson (Cisco Systems) 216 This document is derived from the work of the following author who 217 wrote the original description of WCCP V2 revision 1 in August, 2012: 219 * Douglas J. McLaggan (Cisco Systems) 221 The protocol described in the current document does not introduce any 222 new message components, elements and formats but addresses the 223 mistakes in the original description of WCCP Version 2 Revision 1. 224 Therefore, the revision number stays same as well. 226 The work of the original authors represents a very significant 227 proportion of the current document and authorship of the majority of 228 the protocol remains with the five authors listed above. 230 2. Definitions 232 Assignment Method 234 The method by which redirected packets are distributed between 235 web-caches. Hash assignment or mask assignment can be used. 237 Designated Web-Cache 239 The web-cache in a web-cache farm responsible for dictating to the 240 router or routers how redirected traffic should be distributed 241 between the members of the farm. 243 Forwarding Method 245 The method by which redirected packets are transported from router 246 to web-cache. 248 Packet Return Method 250 The method by which packets redirected to a web-cache are returned 251 to a router for normal forwarding. 253 Redirection Hash Table 255 A 256-bucket hash table maintained by the router or routers when 256 using hash assignment. This table maps the hash index derived 257 from a packet to be redirected to the IP address of a destination 258 web-cache. 260 Reserved 262 Parts of a message defined as reserved must be set to zero by the 263 sender and must be ignored by the receiver. 265 Router 267 This term is used generically throughout this document to refer to 268 a network device that may use the protocol to establish 269 redirection of traffic flowing through it. 271 Service Group 273 A group of one or more routers plus one or more web-caches working 274 together in the redirection of traffic whose characteristics are 275 part of the Service Group definition. 277 Transparent Redirection 278 Transparent redirection is a technique used to deploy traffic 279 optimisation without the need for reconfiguration of clients or 280 servers. It involves the interception and redirection of traffic 281 to one or more intervening devices by a router or switch 282 transparently to the end points of the traffic flow. 284 Usable Web-Cache 286 From the viewpoint of a router a web-cache is considered a usable 287 member of a Service Group when it has sent that web-cache a 288 WCCP2_I_SEE_YOU message and has received in response a 289 WCCP2_HERE_I_AM message with a valid "Receive ID" and compatible 290 capabilities. 292 Web-cache 294 This term is used generically throughout this document to refer to 295 a network device that will receive redirected traffic. The term 296 comes from the protocol's original purpose of redirecting HTTP 297 requests to a caching device. 299 Web-Cache Farm 301 One or more web-caches associated with a router or routers. 303 2.1. Time Interval Definitions 305 TRANSMIT_T 307 The time interval at which a web-cache must send successive 308 WCCP2_HERE_I_AM messages. The default interval is 10 seconds. 310 TIMEOUT_BASE_T 312 A time interval used as the basis for calculating timeout values. 313 The default interval is 10 seconds. The value is calculated using 314 this formula: TIMEOUT_BASE_T = (TIMEOUT_SCALE * TRANSMIT_T). 316 RA_TIMER_BASE_T 318 A time interval used as the basis for calculating timeout values. 319 The default interval is 10 seconds. The value is calculated using 320 this formula: RA_TIMER_BASE_T = (RA_TIMER_SCALE * TRANSMIT_T). 322 TIMEOUT_SCALE 324 A multiplier used to calculate the value of TIMEOUT_BASE_T from 325 the value of TRANSMIT_T. The default value of the multiplier is 326 1. 328 RA_TIMER_SCALE 330 A multiplier used to calculate the value of RA_TIMER_BASE_T from 331 the value of TRANSMIT_T. The default value of the multiplier is 332 1. 334 3. Protocol Description 336 3.1. Joining a Service Group 338 A web-cache joins and maintains its membership of a Service Group by 339 transmitting a WCCP2_HERE_I_AM message to each router in the Group at 340 time intervals of TRANSMIT_T. This may be by unicast to each router 341 or multicast to the configured Service Group multicast address. The 342 Web-Cache Info Component in the WCCP2_HERE_I_AM message identifies 343 the web-cache by IP address. The Service Info Component of the 344 WCCP2_HERE_I_AM message identifies and describes the Service Group in 345 which the web-cache wishes to participate. 347 A router responds to a WCCP2_HERE_I_AM message with a WCCP2_I_SEE_YOU 348 message. If the WCCP2_HERE_I_AM message was unicast then the router 349 will respond immediately with a unicast WCCP2_I_SEE_YOU message. If 350 the WCCP2_HERE_I_AM message was multicast the router will respond 351 later via the scheduled multicast WCCP2_I_SEE_YOU message for the 352 Service Group. 354 A router responds to multicast web-cache members of a Service Group 355 using a multicast WCCP2_I_SEE_YOU message transmitted at time 356 intervals of 0.9 * TRANSMIT_T with a 10% jitter. 358 The Router Identity Component in a WCCP2_I_SEE_YOU message includes a 359 list of the web-caches to which the packet is addressed. A web-cache 360 not in the list should discard the WCCP2_I_SEE_YOU message. 362 The default value for the TRANSMIT_T interval is 10 seconds. A 363 change in this value is only permissible if a new value is negotiated 364 between a router and a web-cache via the WCCP2_TRANSMIT_T capability. 365 A router or web-cache must use the value for TRANSMIT_T specified in 366 the router's WCCP2_I_SEE_YOU message, or use the default value if a 367 specific value has not yet been given in a WCCP2_I_SEE_YOU message. 368 If a specific timer value has been negotiated between a web-cache and 369 a router, the web-cache must only send HERE_I_AM messages at the 370 negotiated interval. Support for the default 10 seconds TRANSMIT_T 371 interval is mandatory. Support for other values of TRANSMIT_T is 372 optional. The range of supported values may be chosen by the 373 implementation. 375 Before negotiation of a non-default TRANSMIT_T interval has taken 376 place, a web-cache may choose to send WCCP2_HERE_I_AM messages at a 377 shorter interval than the default TRANSMIT_T interval, provided that 378 all of the following conditions are met: 380 (1) all other timing calculations remain based on the default time 381 interval of 10 seconds, 383 (2) the web-cache has received a WCCP2_I_SEE_YOU message containing 384 a WCCP2_TRANSMIT_T capability describing the range of values 385 supported by the router, 387 (3) the web-cache's chosen interval falls within the range supported 388 by the router, and 390 (4) the negotiation of a specific WCCP2_TRANSMIT_T value has not yet 391 completed. 393 3.2. Describing a Service Group 395 The Service Info Component of a WCCP2_HERE_I_AM message describes the 396 Service Group in which a web-cache wishes to participate. A Service 397 Group is identified by its Service Type and Service ID. There are 398 two types of Service Group: 400 * Well Known Services 401 * Dynamic Services 403 Well Known Services are known by both routers and web-caches and do 404 not require a description other than the Service ID. The 405 characteristics of the traffic associated with a Well Known Service 406 are fixed and implicitly known to both router and web-cache. 408 The traffic characteristics associated with a Dynamic Service are not 409 known in advance to the router and must be described by each web- 410 cache. A router is configured to participate in a particular Dynamic 411 Service Group, identified by its Service ID, initially without any 412 knowledge of the characteristics of the traffic associated with the 413 Service Group. The traffic description is communicated to the router 414 in the WCCP2_HERE_I_AM message of the first web-cache to join the 415 Service Group. A web-cache describes a Dynamic Service using the 416 Protocol, Service Flags and Port fields of the Service Info 417 Component. Once a Dynamic Service has been defined, a router will 418 discard any subsequent WCCP2_HERE_I_AM message which contains a 419 conflicting description. The service definition is reset by the 420 router when all web-caches have left the Service Group. A router 421 will also discard any WCCP2_HERE_I_AM message which describes a 422 Service Group for which the router has not been configured. 424 3.3. Establishing Two-Way Connectivity 426 WCCP V2 uses a "Receive ID" to verify two-way connectivity between a 427 router and a web-cache. The Router Identity Info Component of a 428 WCCP2_I_SEE_YOU message contains a "Receive ID" within the Router 429 Identity Element. This value is maintained separately for each 430 Service Group and it is incremented each time the router sends a 431 WCCP2_I_SEE_YOU message for the Service Group. The router records 432 the "Receive ID" value it sends to each web-cache. 434 The "Receive ID" sent by a router is usually reflected back by a web- 435 cache using a Router Identity Element within the Web-Cache View Info 436 Component of a WCCP2_HERE_I_AM message. However, when a web-cache 437 first attempts to contact a router, no "Receive ID" will be available 438 and the router will not be listed in the Web-Cache View Info 439 Component. 441 A router checks the value given for its own "Receive ID" in each 442 WCCP2_HERE_I_AM message received from a web-cache. The "Receive ID" 443 is invalid if the value does not match the "Receive ID" in the most 444 recent WCCP2_I_SEE_YOU message sent to the web-cache, or the router 445 is not listed in Web-Cache View Info Component, or the router has not 446 previously sent a message to the web-cache. 448 When the "Receive ID" is found to be invalid, the router replies with 449 a WCCP2_I_SEE_YOU message to advertise the correct "Receive ID", but 450 the WCCP2_HERE_I_AM message is then discarded and it is not treated 451 as a validly received WCCP2_HERE_I_AM message. In this case most of 452 the WCCP2_HERE_I_AM message is ignored by the router. 454 A router can only begin to consider a web-cache as a potentially 455 usable member of a Service Group after it has sent that web-cache a 456 WCCP2_I_SEE_YOU message and subsequently received a WCCP2_HERE_I_AM 457 message from it containing the correct "Receive ID". 459 3.4. Negotiating the Protocol Version Number 461 WCCP V2 is an extensible protocol and may incorporate a number of 462 revisions to the message format. Higher revision levels may 463 introduce new message components, elements and formats that may not 464 be valid at a lower revision level. 466 The protocol version is specified within each WCCP V2 message and 467 consists of the major version number, which is always set to 2, 468 combined with the minor version number, which indicates the revision 469 level of the V2 protocol. In the context of this document, as the 470 major version number is fixed, references to different protocol 471 version numbers refer specifically to differences in the minor 472 protocol version number only. 474 A router or web-cache may use the protocol version within a WCCP 475 message to decide how to process or respond to an incoming message, 476 or to indicate via an outgoing message which protocol version it 477 supports. 479 A router or web-cache receiving a WCCP message should aim to process 480 the valid components and elements of the message even if other parts 481 of the message may not be understood or appear invalid. However, 482 unless performing protocol version negotiation, a router or web-cache 483 is permitted to ignore messages in which the protocol version number 484 is not recognised. 486 A router or web-cache may support a single protocol version or 487 multiple protocol versions. To support multiple versions, the router 488 or web-cache must support negotiation of the protocol version number. 489 The negotiation takes place per Service Group. Thus routers and web- 490 caches participating in several Service Groups may negotiate a 491 different protocol version for each Service Group. 493 A router and web-cache that communicate with each other must learn 494 which version of the protocol is supported by the intended recipient. 495 They should not send a message without knowing that the intended 496 recipient can understand the message format used. The version 497 supported by the intended recipient is determined from the protocol 498 version set within the message most recently received from it. 500 The format of a message must always conform to the protocol version 501 number set within the message header. 503 3.4.1. Responsibilities of a web-cache during version negotiation 505 When a web-cache sends the first WCCP2_HERE_I_AM message to a router, 506 the web-cache must decide the protocol version number to use in the 507 message without knowing which protocol versions the router is capable 508 of supporting or understanding. 510 In this situation, a web-cache not wishing to negotiate the protocol 511 version number should set the V bit to 0 within the Web-Cache 512 Identity Element in the first WCCP2_HERE_I_AM message and set the 513 protocol version number in the message header to the only version 514 number that the web-cache is able to support. 516 Alternatively, a web-cache wishing to negotiate the protocol version 517 should set the V bit to 1 within the Web-Cache Identity Element in 518 the first WCCP2_HERE_I_AM message and set the protocol version number 519 in the message header to the lowest version number that the web-cache 520 is able to support. The lowest version number is used in this case 521 to maximise the chance that a router will understand and respond to 522 the message. The web-cache should only set the V bit to 1 in a 523 WCCP2_HERE_I_AM message when it has not yet received a response from 524 the router. 526 When a web-cache receives a first WCCP2_I_SEE_YOU message from a 527 router, this provides it with information about the protocol version 528 the router is able to support. Even if the web-cache does not 529 support the version used by the router, the web-cache should set the 530 V bit to 0 in subsequent WCCP2_HERE_I_AM messages and use a version 531 number that is less than or equal to the version number the router 532 responded with. 534 A web-cache need not use the V bit to negotiate the protocol version 535 number, but using the V bit will increase the likelihood that 536 negotiation will be successful by increasing the chance that a 537 response will be received to the initial message. 539 If the V bit is not used, limited version negotiation may still take 540 place although successful negotiation is not guaranteed as some 541 routers may decide not to respond. In this situation the web-cache 542 begins negotiations by setting the protocol version number within the 543 first WCCP2_HERE_I_AM message to be the highest protocol version 544 number supported by the web-cache. If a router replies, the response 545 will contain either the same or a lower version number. The web- 546 cache must then use the version number set by the router, or ignore 547 the response from the router. 549 3.4.2. Responsibilities of a router during version negotiation 551 A router that finds the V bit set to 1 in an incoming WCCP2_HERE_I_AM 552 message must reply by setting the protocol version number in its 553 WCCP2_I_SEE_YOU message to the highest version it can support. In a 554 multicast service group when a router is responding to multiple 555 WCCP2_HERE_I_AM messages, the V bit must be set to 1 in all incoming 556 messages before it is acted upon. 558 When the V bit of an incoming message is set to 0, a router must 559 treat the protocol version number in a WCCP2_HERE_I_AM message as the 560 maximum version the web-cache is capable of supporting. In this case 561 a router has the option of replying using the same version number, 562 replying using a lower version number, or not replying at all. When 563 replying, the router responds with a version that is less than or 564 equal to the version the web-cache used. Therefore the router may 565 respond to the message even if it does not support the version set by 566 the web-cache. 568 3.5. Negotiating Capabilities 570 WCCP includes a number of optional features or capabilities that an 571 implementation may choose to support. To allow a router and web- 572 cache to agree on which optional capabilities can be used for a 573 particular Service Group, the capabilities are negotiated after a 574 router's "Receive ID" has been successfully echoed back from the web- 575 cache to the router. 577 For each defined capability, an implementation must support at least 578 one option from the range of possible options defined for that 579 particular capability. Negotiation of each capability is optional. 580 For each capability there is a default setting which is used if 581 negotiation of the capability does not take place. Negotiation takes 582 place independently for each Service Group. 584 Currently, the following capabilities can be negotiated: 586 * Forwarding Method (Default: GRE encapsulation) 588 The method by which packets are forwarded to a web-cache by a 589 router. 591 * Assignment Method (Default: Hash assignment) 593 The method by which packets are distributed between the web- 594 caches in a Service Group. 596 * Packet Return Method (Default: GRE encapsulation) 598 The method by which packets are returned from a web-cache to a 599 router for normal forwarding. 601 * TRANSMIT_T Message Interval (Default: 10 seconds) 603 The required interval between successive HERE_I_AM messages. 605 * TIMEOUT_SCALE and RA_TIMER_SCALE values (Default: 1 and 1) 607 Two scaling factors used in message timeout calculations. 609 Capability negotiation requires the router to advertise the options 610 that it currently supports for each capability of a Service Group 611 using the optional Capabilities Info Component of the WCCP2_I_SEE_YOU 612 message. The absence of this component implies the router supports 613 only the default option for all capabilities. Similarly, the absence 614 of an individual capability from within this component implies the 615 router supports only the default option for that capability. 617 Negotiation with a router takes place independently for each web- 618 cache, but the options advertised by the router may be influenced by 619 previous negotiations with other web-caches. So, for a given Service 620 Group, the router may permit different options to be negotiated by 621 different web-caches, or it may force all web-caches to agree on a 622 common option. A web-cache participating in several Service Groups 623 may negotiate different capability options for each Service Group. 625 A web-cache will inspect the capabilities advertisement in the first 626 WCCP2_I_SEE_YOU message received from a router for a particular 627 Service Group. If the router does not advertise an option supported 628 by the web-cache for every known capability then the web-cache will 629 abort its attempt to join the Service Group. Otherwise the web-cache 630 will pick one option from those advertised by the router for each 631 capability and specify them in the optional Capabilities Info 632 Component of its next WCCP2_HERE_I_AM message. The absence of this 633 component in a WCCP2_HERE_I_AM message implies the web-cache is 634 requesting the default option for all capabilities. Similarly, the 635 absence of an individual capability from within this component 636 implies the web-cache is requesting the default setting for that 637 capability. 639 A router will inspect the capability options selected by a web-cache 640 in a WCCP2_HERE_I_AM message, provided that the message contains a 641 valid "Receive ID". If all of the requested options are supported, 642 the router will accept the web-cache as usable and add it to the 643 Service Group. Otherwise, if any of the selected options are not 644 supported by the router, the router will not add the web-cache to the 645 Service Group and will instead decide that the web-cache is unusable. 646 In both cases the router will respond to the WCCP2_HERE_I_AM message, 647 either indicating the capability options that have been successfully 648 negotiated, or again advertising the capability options that are 649 available. 651 Note that, for each Service Group, the web-cache need not include a 652 Capabilities Info Component in a WCCP2_HERE_I_AM message until after 653 the first WCCP2_I_SEE_YOU message from the router has been received. 654 Following negotiation, both web-cache and router should continue to 655 include the negotiated capabilities in every WCCP2_HERE_I_AM and 656 WCCP2_I_SEE_YOU message. If a router or web-cache encounters an 657 unrecognised capability at any time it should simply be ignored to 658 allow the default setting for the capability to be selected. 660 3.5.1. Negotiating the Forwarding Method 662 A web-cache and router may negotiate the method by which packets are 663 forwarded to the web-cache by the router. 665 A router will advertise the supported forwarding methods for a 666 Service Group. The absence of such an advertisement implies the 667 router supports the default GRE encapsulation method only. 669 If the router does not advertise a packet return method supported by 670 the web-cache then the web-cache will abort its attempt to join the 671 Service Group. Otherwise the web-cache will select a packet return 672 method to be indicated in the next WCCP2_HERE_I_AM message. Absence 673 of an advertisement of the forwarding method in a WCCP2_HERE_I_AM 674 message implies the web-cache is requesting the default GRE 675 encapsulation method. 677 3.5.2. Negotiating the Assignment Method 679 A web-cache and router may negotiate the method by which packets are 680 distributed between the web-caches in a Service Group. 682 A router will advertise the supported assignment methods for a 683 Service Group. The absence of such an advertisement implies the 684 router supports the default Hash assignment method only. 686 If the router does not advertise an assignment method supported by 687 the web-cache then the web-cache will abort its attempt to join the 688 Service Group. Otherwise the web-cache will select an assignment 689 method to be indicated in the next WCCP2_HERE_I_AM message. Absence 690 of an assignment method advertisement in a WCCP2_HERE_I_AM message 691 implies the web-cache is requesting the default Hash assignment 692 method. 694 If the assignment method selected by a web-cache is supported and 695 other capabilities have been successfully negotiated, the router will 696 accept the web-cache as usable and add it to the Service Group. When 697 the first web-cache joins a Service Group, the router will set the 698 assignment method selected by the web-cache to be the only assignment 699 method supported by the Service Group. This assignment method will 700 remain selected until all web-caches are removed from the Service 701 Group. 703 3.5.3. Negotiating the Packet Return Method 705 A web-cache and router may negotiate the method by which packets are 706 returned from the web-cache to the router for normal forwarding. 708 A router will advertise the supported packet return methods for a 709 Service Group. The absence of such an advertisement implies the 710 router supports the default GRE encapsulation method only. 712 If the router does not advertise a packet return method supported by 713 the web-cache then the web-cache will abort its attempt to join the 714 Service Group. Otherwise the web-cache will select a packet return 715 method to be indicated in the next WCCP2_HERE_I_AM message. Absence 716 of an advertisement of the packet return method in a WCCP2_HERE_I_AM 717 message implies the web-cache is requesting the default GRE 718 encapsulation method. 720 3.5.4. Negotiating the TRANSMIT_T Message Interval Value 722 A web-cache and router may negotiate the TRANSMIT_T message interval 723 value used by the Service Group. 725 A router will advertise the range of supported TRANSMIT_T message 726 interval values. The range is given by specifying its upper and 727 lower limits, or by specifying a single value. 729 The absence of such an advertisement implies the router supports the 730 default TRANSMIT_T message interval of 10 seconds only. In this case 731 the web-cache must never attempt to specify or use an alternative 732 TRANSMIT_T message interval. 734 If the router does not advertise a TRANSMIT_T message interval 735 supported by the web-cache then the web-cache will abort its attempt 736 to join the Service Group. Otherwise the web-cache will select an 737 interval value either within the advertised range, or matching the 738 single advertised value. The selected value will be indicated in the 739 next WCCP2_HERE_I_AM message. Absence of a TRANSMIT_T message 740 interval advertisement in a WCCP2_HERE_I_AM message implies the web- 741 cache is requesting the default TRANSMIT_T message interval of 10 742 seconds. 744 If the interval selected by a web-cache is supported and other 745 capabilities have been successfully negotiated, the router will 746 accept the web-cache as usable and add it to the Service Group. When 747 the first web-cache joins a Service Group, the router will set the 748 TRANSMIT_T message interval value selected by the web-cache to be the 749 only value supported by the Service Group. This value will remain 750 selected until all web-caches are removed from the Service Group. 752 3.5.5. Negotiating the TIMEOUT_SCALE and RA_TIMER_SCALE values 754 A web-cache and router may negotiate the TIMEOUT_SCALE and 755 RA_TIMER_SCALE values used by the Service Group. Both values are 756 negotiated together as a pair. 758 A router will advertise the ranges of supported TIMEOUT_SCALE values 759 and the range of supported RA_TIMER_SCALE values for a Service Group. 760 Each range is given by specifying its upper and lower limits, or by 761 specifying a single value. 763 The absence of such an advertisement implies the router supports only 764 the default value of 1 for both the TIMEOUT_SCALE and RA_TIMER_SCALE 765 parameters. In this case the web-cache must never attempt to specify 766 or use alternative TIMEOUT_SCALE and RA_TIMER_SCALE values. 768 If the router does not advertise TIMEOUT_SCALE and RA_TIMER_SCALE 769 values supported by the web-cache then the web-cache will abort its 770 attempt to join the Service Group. Otherwise the web-cache will 771 select a TIMEOUT_SCALE value and an RA_TIMER_SCALE value, either 772 within the advertised range, or matching the single advertised value. 773 The selected values will be indicated in the next WCCP2_HERE_I_AM 774 message. Absence of an advertisement of TIMEOUT_SCALE and 775 RA_TIMER_SCALE values in a WCCP2_HERE_I_AM message implies the web- 776 cache is requesting the default value of 1 for both the TIMEOUT_SCALE 777 and RA_TIMER_SCALE parameters. 779 If the values selected by a web-cache are supported and other 780 capabilities have been successfully negotiated, the router will 781 accept the web-cache as usable and add it to the Service Group. When 782 the first web-cache joins a Service Group, the router will set the 783 TIMEOUT_SCALE and RA_TIMER_SCALE values selected by the web-cache to 784 be the only values supported by the Service Group. These values will 785 remain selected until all web-caches are removed from the Service 786 Group. 788 3.6. Advertising Views of the Service Group 790 Each router advertises its view of a Service Group via the Router 791 View Info Component in the WCCP2_I_SEE_YOU message it sends to web- 792 caches. This component includes a list of the useable web-caches in 793 the Service Group as seen by the router and a list of the routers in 794 the Service Group as reported in WCCP2_HERE_I_AM messages from web- 795 caches. A change number in the component is incremented if the 796 Service Group membership has changed since the previous 797 WCCP2_I_SEE_YOU message sent by the router. 799 Each web-cache advertises its view of the Service Group via the Web- 800 Cache View Info Component in the WCCP2_HERE_I_AM message it sends to 801 routers in the Service Group. This component includes the list of 802 routers that have sent the web-cache a WCCP2_I_SEE_YOU message and a 803 list of web-caches learnt from the WCCP2_I_SEE_YOU messages. The 804 Web-Cache View Info Component also includes a change number which is 805 incremented each time Service Group membership information changes. 807 3.7. Security 809 WCCP V2 provides a security component in each protocol message to 810 allow simple authentication. Two options are currently supported: 812 * No security (default) 813 * MD5 password security 815 MD5 password security requires that each router and web-cache wishing 816 to join a Service Group is configured with a matching Service Group 817 password. Each WCCP protocol packet sent by a router or web-cache 818 for that Service Group will contain in its security component the MD5 819 [RFC1321] checksum of the Service Group password and the WCCP 820 protocol message (including the WCCP message header). Each web-cache 821 or router in the Service Group will authenticate the security 822 component in a received WCCP message immediately after validating the 823 WCCP message header. Packets failing authentication, or lacking the 824 expected authentication option, will be discarded. 826 3.8. Distribution of Traffic Assignments 828 WCCP V2 allows the traffic assignment method to be negotiated. There 829 are two types of information to be communicated depending on the 830 assignment method selected: 832 * Hash Tables 833 * Mask/Value Sets 835 3.8.1. Hash Tables 837 When using hash assignment each router uses a 256-bucket Redirection 838 Hash Table to distribute traffic for a Service Group across the 839 member web-caches. It is the responsibility of the Service Group's 840 designated web-cache to assign each router's Redirection Hash Table. 842 The designated web-cache uses a WCCP2_REDIRECT_ASSIGNMENT message to 843 assign the routers' Redirection Hash Tables. This message is 844 generated following a change in Service Group membership and is sent 845 to the same set of addresses to which the web-cache sends 846 WCCP2_HERE_I_AM messages. The designated web-cache will wait for a 847 time period of 1.5 * RA_TIMER_BASE_T following a membership change 848 before generating the message in order to allow time for the Service 849 Group membership to stabilise. 851 The designated web-cache lists the web-caches to which traffic should 852 be distributed in either an Assignment Info Component or an Alternate 853 Assignment Component within a WCCP2_REDIRECT_ASSIGNMENT message. 854 Only those web-caches seen by every router in the Service Group are 855 included. 857 The Assignment Info Component or Alternate Assignment Component 858 within a WCCP2_REDIRECT_ASSIGNMENT message contains an Assignment 859 Key. This will be reflected back to the designated web-cache in 860 subsequent WCCP2_I_SEE_YOU messages from the routers in the Service 861 Group. A WCCP2_REDIRECT_ASSIGNMENT message may be repeated after 862 TRANSMIT_T time has elapsed if inspection of the Assignment Key 863 within a WCCP2_I_SEE_YOU message indicates that a router has not 864 received the assignment message. 866 A router will flush its Redirection Hash Table if a valid 867 WCCP2_REDIRECT_ASSIGNMENT message has not been received within a time 868 period of 5 * RA_TIMER_BASE_T following a Service Group membership 869 change. To be valid, the message must contain the correct "Receive 870 ID" and membership change number for the router. 872 Following successful receipt of a WCCP2_REDIRECT_ASSIGNMENT message, 873 each router advertises its assigned Redirection Hash Table in all 874 subsequent WCCP2_HERE_I_AM messages. The Redirection Hash Table can 875 be specified within an optional Alternate Assignment Map Component. 876 If that component is not present, the current assignments for each 877 web-cache are listed within the Web-Cache Identity Elements of the 878 Router View Info Component. 880 3.8.2. Mask/Value Sets 882 When using mask assignment each router uses masks and a table of 883 values to distribute traffic for a Service Group across the member 884 web-caches. It is the responsibility of the Service Group's 885 designated web-cache to assign each router's mask/value sets. 887 The designated web-cache uses a WCCP2_REDIRECT_ASSIGNMENT message to 888 assign the routers' mask/value sets. This message is generated 889 following a change in Service Group membership and is sent to the 890 same set of addresses to which the web-cache sends WCCP2_HERE_I_AM 891 messages. The designated web-cache will wait for a time period of 892 1.5 * RA_TIMER_BASE_T following a membership change before generating 893 the message in order to allow time for the Service Group membership 894 to stabilise. 896 The designated web-cache lists the web-caches to which traffic should 897 be distributed in the Alternate Assignment Component of the 898 WCCP2_REDIRECT_ASSIGNMENT message. Only those web-caches seen by 899 every router in the Service Group are included. 901 The Alternate Assignment Component within a WCCP2_REDIRECT_ASSIGNMENT 902 message contains an Assignment Key. This will be reflected back to 903 the designated web-cache in subsequent WCCP2_I_SEE_YOU messages from 904 the routers in the Service Group. A WCCP2_REDIRECT_ASSIGNMENT 905 message may be repeated after TRANSMIT_T time has elapsed if 906 inspection of the Assignment Key within a WCCP2_I_SEE_YOU message 907 indicates that a router has not received the assignment message. 909 A router will flush its mask/value sets if a valid 910 WCCP2_REDIRECT_ASSIGNMENT message has not been received within a time 911 period of 5 * RA_TIMER_BASE_T following a Service Group membership 912 change. To be valid, the message must contain the correct "Receive 913 ID" and membership change number for the router. 915 Following successful receipt of a WCCP2_REDIRECT_ASSIGNMENT message, 916 each router advertises its assigned mask/value sets in all subsequent 917 WCCP2_HERE_I_AM messages. The mask/value sets can be listed within 918 an optional Assignment Map Component or Alternate Assignment Map 919 Component. If neither of those components is present, the current 920 assignments for each web-cache are listed within the Web-Cache 921 Identity Elements of the Router View Info Component. 923 3.9. Electing the Designated Web-cache 925 Election of the designated web-cache will take place once the Service 926 Group membership has stabilised following a change. The designated 927 web-cache must be receiving a WCCP2_I_SEE_YOU message from every 928 router in the Service Group. 930 Election of the designated web-cache is not part of the WCCP 931 protocol. However it is recommended that the eligible web-cache with 932 the lowest IP address is selected as the designated web-cache for a 933 Service Group. 935 3.10. Traffic Interception 937 A router will check packets passing through it against its set of 938 Service Group descriptions. The Service Group descriptions are 939 checked in priority order. A packet which matches a Service Group 940 description is a candidate for redirection to a web-cache in the 941 Service Group. 943 A router will not redirect a packet with a source IP address matching 944 any web-cache in the Service Group. 946 3.11. Traffic Redirection 948 3.11.1. Redirection with Hash Assignment 950 To redirect a packet using hash assignment, a primary key is formed 951 from the packet and hashed to yield an index into the Redirection 952 Hash Table. The elements of the packet used to form the primary key 953 are determined by the Service Group description. 955 If the indexed Redirection Hash Table entry is unassigned the packet 956 is forwarded normally. If the entry contains only a web-cache index 957 then the packet is redirected to that web-cache. Alternatively, if 958 the entry is flagged as requiring an alternative hash then a 959 secondary key is formed from the packet and hashed to yield a 960 secondary index into the Redirection Hash Table. The elements of the 961 packet used to form the secondary key are determined by the Service 962 Group description. 964 If the secondary entry contains a web-cache index then the packet is 965 redirected to that web-cache. If the secondary entry is unassigned 966 the packet is forwarded normally. The alternative hashing flag in 967 the secondary entry is ignored. 969 3.11.2. Redirection with Mask Assignment 971 To redirect a packet using mask assignment, a bitwise AND operation 972 is performed between the mask from the first mask/value set assigned 973 to the Service Group and the corresponding contents of the packet. 975 The masking operation is applied to both the source and destination 976 IP addresses of the packet. For TCP and UDP packets, the masking 977 operation is also applied to both the source and destination port 978 numbers of the packet, when available. When port numbers are not 979 available from a packet, the source and destination port elements of 980 the result will be set to zero. 982 The output of this operation is compared against each entry in the 983 list of value elements within the mask/value set. If a match is 984 found the packet is redirected to the web-cache associated with the 985 matching value element. If no match is found the process is repeated 986 for each mask/value set defined for the Service Group. If no match 987 is found after trying all of the mask/value sets defined for the 988 Service Group, the packet is forwarded normally. 990 Mask/value sets are processed in the order in which they are 991 presented in the Alternate Assignment Component. Similarly, value 992 elements are compared in the order in which they are presented in a 993 mask/value set. 995 3.12. Traffic Forwarding 997 WCCP V2 allows the negotiation of the forwarding method between a 998 router and a web-cache (see Section 3.5.1). The currently defined 999 forwarding methods are: 1001 * GRE encapsulation 1002 * Unencapsulated with L2 rewrite 1004 3.12.1. Forwarding using GRE Encapsulation 1006 Using this forwarding method, redirected packets are encapsulated in 1007 a new IP packet with a GRE [RFC1701] header followed by a 4-octet 1008 Redirect Header. The information provided within the Redirect Header 1009 can be used only if the U bit in the Redirect Header is 0. If the U 1010 bit is 1, the redirected packet is valid and should be processed 1011 normally, but the rest of the information within the 4-octet Redirect 1012 Header is unavailable and must be ignored. 1014 The GRE encapsulation uses the simple 4-octet GRE header with the 1015 Flags and Version octets set to zero and a Protocol Type of 0x883E. 1017 The Redirect Header is defined as follows: 1019 0 1 2 3 1020 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 1021 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1022 |T|A|U|Reserved | Service ID | Alt Bucket |Primary Bucket | 1023 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1025 T: Type of Service 1026 0: Standard (well known) service 1027 1: Dynamic service 1029 A: Alternative bucket used (only valid for hash assignment) 1030 0: Primary bucket used 1031 1: Alternative bucket used 1033 U: Unavailable 1034 0: Redirect Header contents are valid 1035 1: Redirect Header is present, 1036 but its contents (other than this bit) should 1037 be ignored and treated as being unavailable 1039 Reserved 1041 Must be zero. 1043 Service ID 1045 Service Group identifier of the service that redirected this 1046 packet. 1048 Alt Bucket 1050 Alternative bucket index used to redirect the packet. Only valid 1051 for hash assignment. 1053 Primary Bucket 1055 Primary bucket index used to redirect the packet. Only valid for 1056 hash assignment. 1058 3.12.2. Forwarding using L2 Rewrite 1060 Using this forwarding method, redirected packets are not 1061 encapsulated. The router replaces the packet's destination MAC 1062 address with the MAC address of the target web-cache. The packet's 1063 source MAC address is set to the router's MAC address. 1065 This forwarding method requires that the target web-cache is directly 1066 connected to the router at Layer 2. A router should not allow a web- 1067 cache to successfully negotiate this forwarding method unless it has 1068 been verified that the web-cache is directly connected. 1070 A packet should not be redirected using this method if the packet's 1071 source MAC address matches the MAC address of a web-cache in the 1072 Service Group. See Section 3.13.3 for further details. 1074 3.13. Packet Return 1076 WCCP V2 allows a web-cache to decline a redirected packet and return 1077 it to the router for normal forwarding without further redirection. 1078 The method by which packets are returned from a web-cache to a router 1079 can be negotiated (see Section 3.5.3). The currently defined packet 1080 return methods are: 1082 * GRE encapsulation 1083 * Unencapsulated with L2 rewrite 1085 3.13.1. Packet Return using GRE Encapsulation 1087 Using this packet return method, a web-cache sends returned packets 1088 to a router using GRE encapsulation. Returned packets are 1089 encapsulated in a GRE packet [RFC1701] with a Protocol Type of 0x883E 1090 and containing either the Redirect Header from the originally 1091 redirected packet, or a Redirect Header with the U bit set if a valid 1092 Redirect Header was not present in the originally redirected packet. 1093 If the U bit is set, all other parts of the Redirect Header should be 1094 zero. 1096 See Section 3.12.1 for the Redirect Header definition. 1098 The receiving router removes the GRE encapsulation from each returned 1099 packet and forwards it without attempting further redirection. 1101 3.13.2. Packet Return using L2 Rewrite 1103 Using this packet return method, returned packets are not 1104 encapsulated, so any encapsulation added by the router during 1105 redirection must be removed by the web-cache. The web-cache then 1106 replaces the packet's destination MAC address with the router's MAC 1107 address and sets the packet's source MAC address to the web-cache's 1108 own MAC address. 1110 The packet return method requires that the router receiving the 1111 return packet does not attempt to redirect it again, otherwise the 1112 packet will repeatedly loop between the router and the web-cache. 1114 3.13.3. Preventing redirection of returned packets 1116 When a router receives a returned packet it must not attempt to 1117 redirect the packet back to a web-cache. Three methods are available 1118 to prevent further redirection: 1120 * Encapsulation 1121 * Source MAC address check 1122 * Interface configuration 1124 The encapsulation method requires a web-cache to send returned 1125 packets to a router using GRE encapsulation, as described in 1126 Section 3.13.1. Returned packets are identified using the web- 1127 cache's source IP address and/or the GRE Protocol Type of 0x883E. 1128 Following removal of the GRE encapsulation these packets must be 1129 excluded from further redirection. 1131 The source MAC address check method requires a web-cache to return a 1132 packet unencapsulated to the router using L2 rewrite, as described in 1133 Section 3.13.2. The router must record the MAC address of each web- 1134 cache that has successfully negotiated the L2 rewrite packet return 1135 method. The router then excludes from redirection any packet 1136 received with a source MAC address belonging to one of the known web- 1137 caches. 1139 The interface configuration method requires that a router is 1140 configured to inhibit redirection of packets arriving on an interface 1141 connected to one or more web-caches. The suitability of this 1142 mechanism is dependant on the network topology. It is only required 1143 if the source MAC address check cannot be used in combination with 1144 the L2 rewrite return method. 1146 3.14. Querying Web-Cache Time-Out 1148 If a router does not receive a WCCP2_HERE_I_AM message from a Service 1149 Group member during a time period of 2.5 * TIMEOUT_BASE_T it will 1150 query the member by sending a unicast WCCP2_REMOVAL_QUERY message to 1151 it. The target Service Group member should respond by sending a 1152 series of three identical WCCP2_HERE_I_AM messages unicast to the 1153 router, or multicast to the configured service group multicast 1154 address, each separated by a time interval of 0.1 * TRANSMIT_T. 1156 If a router does not receive a WCCP2_HERE_I_AM message from a Service 1157 Group member during a time period of 3 * TIMEOUT_BASE_T it will 1158 consider the member to be unusable and remove it from the Service 1159 Group. The web-cache will no longer appear in the Router View Info 1160 Component of the WCCP2_I_SEE_YOU message. The web-cache will also be 1161 purged from the assignment data for the Service Group. 1163 3.15. Sending additional WCCP2_HERE_I_AM messages 1165 If a web-cache does not receive a WCCP2_I_SEE_YOU message from a 1166 router in response to a unicast WCCP2_HERE_I_AM message after a time 1167 period of 0.5 * TRANSMIT_T has elapsed, the web-cache may optionally 1168 choose to transmit a new WCCP2_HERE_I_AM message at this moment 1169 instead of waiting for a full TRANSMIT_T time interval to elapse. 1171 This action is permitted only if, in response to the previous 1172 WCCP2_HERE_I_AM message unicast to the router, the web-cache 1173 successfully received a WCCP2_I_SEE_YOU message from the router in 1174 which the web-cache appeared in the Router View Info Component of the 1175 message. 1177 The web-cache may continue transmitting WCCP2_HERE_I_AM messages at 1178 time intervals of 0.5 * TRANSMIT_T until a WCCP2_I_SEE_YOU message is 1179 received from the router, or until a total of 6 WCCP2_HERE_I_AM 1180 messages have been transmitted since the last WCCP2_I_SEE_YOU message 1181 was received. 1183 3.16. Command and Status Information 1185 WCCP V2 includes a mechanism to allow web-caches to send commands to 1186 routers within a service group. The same mechanism can be used by 1187 the routers to provide status information to web-caches. 1189 The mechanism is implemented by the Command Extension Component. 1190 This component is included in the WCCP2_HERE_I_AM message from a web- 1191 cache passing commands to routers in a Service Group. 1193 If a router needs to send status information back to a web-cache it 1194 will include a command in the Command Extension Component within its 1195 own WCCP2_I_SEE_YOU message. That command will indicate the type of 1196 status information being carried. 1198 4. Protocol Messages 1200 4.1. Overview 1202 Each WCCP protocol message is carried within a UDP packet with source 1203 and destination ports of 2048. Every WCCP message begins with a 1204 fixed-length 8-octet header, followed by a number of additional 1205 variable-length components. 1207 The WCCP header specifies the message type, the major and minor 1208 protocol version numbers, and the length of the remainder of the 1209 message. Any contents of the UDP packet extending beyond this 1210 specified message length must be ignored. 1212 There are four WCCP V2 message types: 1214 * Here I Am 1215 * I See You 1216 * Redirect Assign 1217 * Removal Query 1219 Messages with a header containing an unrecognised type or the 1220 incorrect major version number must be ignored. Note that messages 1221 containing the correct major version number but an unrecognised minor 1222 version number should continue to be processed. 1224 Every component following the WCCP header conforms to a Type-Length- 1225 Value (TLV) format. Each component begins with a 2-octet type 1226 followed by a 2-octet length. The length specifies the number of 1227 octets remaining within the component following the length field. 1228 The specified length must be a multiple of 4 octets. Padding is 1229 allowed within each component, but no padding is allowed between 1230 components, therefore the length of a component must correctly 1231 specify the offset to the beginning of the subsequent component. 1233 The type of a component specifies the format of the data it contains. 1234 If the component type is not recognised by the receiver, the number 1235 of following octets specified in the length field must be ignored and 1236 message processing should resume at the beginning of the next 1237 component. 1239 Some components contain nested elements which also conform to a TLV 1240 format. In general, when the type of a nested TLV element is 1241 unrecognised, only the smallest unrecognised element should be 1242 ignored. 1244 If the length of a component extends beyond the end of the WCCP 1245 message (as specified in the WCCP header), the whole component must 1246 be ignored. 1248 If a message contains multiple components of the same type and only a 1249 single component of that type is expected, the first element of that 1250 type should be processed normally and any subsequent elements of the 1251 same type should be ignored. 1253 In general, receivers should be tolerant of unexpected components and 1254 elements within a message, being mindful of the fact that the 1255 protocol is extensible. Protocol extensions may be added with or 1256 without a minor version increment, depending on the nature of the 1257 extension. 1259 4.2. 'Here I Am' Message 1261 A 'Here I Am' message contains the following components: 1263 +--------------------------------------+ 1264 | WCCP Message Header | 1265 +--------------------------------------+ 1266 | Security Info Component | 1267 +--------------------------------------+ 1268 | Service Info Component | 1269 +--------------------------------------+ 1270 | Web-Cache Identity Info Component | 1271 +--------------------------------------+ 1272 | Web-Cache View Info Component | 1273 +--------------------------------------+ 1274 | Capability Info Component (optional) | 1275 +--------------------------------------+ 1276 |Command Extension Component (optional)| 1277 +--------------------------------------+ 1278 | Address Table Component (optional) | 1279 +--------------------------------------+ 1281 4.3. 'I See You' Message 1283 An 'I See You' message contains the following components: 1285 +--------------------------------------+ 1286 | WCCP Message Header | 1287 +--------------------------------------+ 1288 | Security Info Component | 1289 +--------------------------------------+ 1290 | Service Info Component | 1291 +--------------------------------------+ 1292 | Router Identity Info Component | 1293 +--------------------------------------+ 1294 | Router View Info Component | 1295 +--------------------------------------+ 1296 | Assignment Map Component (optional) | 1297 | OR | 1298 | Alternate Assignment Map Component | 1299 | (optional) | 1300 +--------------------------------------+ 1301 | Capability Info Component (optional) | 1302 +--------------------------------------+ 1303 |Command Extension Component (optional)| 1304 +--------------------------------------+ 1305 | Address Table Component (optional) | 1306 +--------------------------------------+ 1308 4.4. 'Redirect Assign' Message 1310 A 'Redirect Assign' message contains the following components: 1312 +--------------------------------------+ 1313 | WCCP Message Header | 1314 +--------------------------------------+ 1315 | Security Info Component | 1316 +--------------------------------------+ 1317 | Service Info Component | 1318 +--------------------------------------+ 1319 | Assignment Info Component | 1320 | OR | 1321 | Alternate Assignment Component | 1322 +--------------------------------------+ 1323 | Address Table Component (optional) | 1324 +--------------------------------------+ 1326 4.5. 'Removal Query' Message 1328 A 'Removal Query' message contains the following components: 1330 +--------------------------------------+ 1331 | WCCP Message Header | 1332 +--------------------------------------+ 1333 | Security Info Component | 1334 +--------------------------------------+ 1335 | Service Info Component | 1336 +--------------------------------------+ 1337 | Router Query Info Component | 1338 +--------------------------------------+ 1339 | Address Table Component (optional) | 1340 +--------------------------------------+ 1342 4.6. WCCP Message Header 1344 0 1 2 3 1345 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 1346 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1347 | Type | 1348 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1349 | Version | Minor Version | Length | 1350 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1352 Type 1354 Indicates the type of the WCCP message. The following types are 1355 defined: 1357 0x0A - WCCP2_HERE_I_AM (10) 1358 0x0B - WCCP2_I_SEE_YOU (11) 1359 0x0C - WCCP2_REDIRECT_ASSIGN (12) 1360 0x0D - WCCP2_REMOVAL_QUERY (13) 1362 Version 1364 Indicates the protocol version required to process the message. 1365 The value defined by this document is: 1367 0x02 - WCCP V2 1369 Minor Version 1371 Indicates a minor revision level of the protocol that the sender 1372 supports and which the message conforms to. The use of different 1373 protocol revision levels is described in Section 3.4. The values 1374 defined by the current revision of this document are: 1376 0x00 - Protocol Version 2.00 1377 0x01 - Protocol Version 2.01 1379 Length 1381 Length of the WCCP message not including the WCCP Message Header. 1383 4.7. Multiple Address family support 1385 By default, network addresses used within the protocol are IPv4 1386 addresses. However, with protocol version 2.01, alternative address 1387 families can be used whenever the optional address table component is 1388 present in a protocol message. 1390 All addresses and address masks used within a protocol message are 1391 referenced via a 4-octet address element. This element can contain: 1393 * the special value of 0 indicating an unspecified address, or 1394 * an IPv4 address or mask, or 1395 * the value of an address index. 1397 The address index is an indirect reference to an address or mask 1398 entry within the address table component which is contained within 1399 the same protocol message. Address indices are numbered from 1 1400 upwards. 1402 If an address table component is present in a message, every address 1403 element within the message contains either an address index or an 1404 unspecified address. 1406 When a WCCP message has a protocol version of 2.01, the correct 1407 interpretation of each non-zero address element requires knowledge of 1408 the presence of an address table component. Therefore, there is a 1409 requirement to check for the existence of an address table component 1410 before attempting to interpret any non-zero address elements within 1411 the message. 1413 If an address table component is not present in a message, every 1414 address element within the message contains an IPv4 address or mask. 1415 Address tables are not permitted when the protocol version is 2.00. 1417 4.7.1. Messages without an address table component 1419 When an address table component is not present, every network address 1420 (or mask) within the protocol message is specified as follows: 1422 Address Element: 1424 0 1 2 3 1425 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 1426 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1427 | IPv4 Address (or mask) | 1428 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1430 4.7.2. Messages with an address table component 1432 When an address table component is present in a protocol message, 1433 every address element within the same message is specified as 1434 follows: 1436 Address Element: 1438 0 1 2 3 1439 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 1440 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1441 | Reserved | Address Index | 1442 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1444 Reserved 1446 Must be zero. 1448 Address Index 1450 An index into the list of network addresses provided in the 1451 address table component defined in Section 5.1.5. The first 1452 address in the table is referenced using index 1, the second 1453 address is referenced using index 2, and so on. Address indices 1454 that would fall beyond the length of the address table component 1455 are invalid. A value of 0 is special and will be interpreted as 1456 an unspecified address (or an address mask with no bits set). 1458 5. Message Components 1460 Each WCCP message comprises a WCCP Message Header followed by a 1461 number of message components, some of which have a variable length. 1462 The defined components are: 1464 * Security Info 1465 * Service Info 1466 * Capabilities Info 1467 * Command Extension 1468 * Address Table 1469 * Web-Cache Identify Info 1470 * Web-Cache View Info 1471 * Router Identity Info 1472 * Router View Info 1473 * Assignment Map 1474 * Alternate Assignment Map 1475 * Assignment Info 1476 * Alternate Assignment 1477 * Router Query Info 1479 Note that components are padded to align on a 4-octet boundary. Each 1480 component has a 4-octet header specifying the component type and 1481 length. The length value does not include the 4-octet component 1482 header. 1484 5.1. Components used in multiple message types 1486 5.1.1. Security Info Component 1488 0 1 2 3 1489 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 1490 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1491 | Type | Length | 1492 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1493 | Security Option | 1494 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1495 | Security Implementation | 1496 | . | 1497 | . | 1498 | . | 1499 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1501 Type 1503 0x00 - WCCP2_SECURITY_INFO (0) 1505 Length 1507 Length of the remainder of the component. 1509 Security Option 1511 The currently defined values are: 1513 0x00 - WCCP2_NO_SECURITY 1514 0x01 - WCCP2_MD5_SECURITY 1516 Security Implementation 1518 If Security Option has the value WCCP2_NO_SECURITY this field is 1519 not present. If Security Option has the value WCCP2_MD5_SECURITY 1520 this is a 16-octet field containing the MD5 [RFC1321] checksum of 1521 the WCCP message and the Service Group password. The maximum 1522 password length is 8 octets. 1524 Prior to calculating the MD5 checksum the password should be 1525 padded out to 8 octets with trailing zeros and the Security 1526 Implementation field of the Security Option set to zero. The MD5 1527 checksum is calculated using the 8-octet padded password followed 1528 by the WCCP message (including the WCCP Message Header). 1530 5.1.2. Service Info Component 1532 0 1 2 3 1533 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 1534 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1535 | Type | Length | 1536 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1537 | Service Type | Service ID | Priority | Protocol | 1538 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1539 | Service Flags | 1540 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1541 | Port 1 | Port 2 | 1542 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1543 | Port 3 | Port 4 | 1544 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1545 | Port 5 | Port 6 | 1546 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1547 | Port 7 | Port 8 | 1548 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1550 Type 1552 0x01 - WCCP2_SERVICE_INFO (1) 1554 Length 1556 Length of the remainder of the component. 1558 Service Type 1560 The following service types are currently defined: 1562 0x00 - WCCP2_SERVICE_STANDARD 1564 The service is a well known service and is described by the 1565 Service ID. All service definition fields other than Service 1566 ID should be zero. 1568 0x01 - WCCP2_SERVICE_DYNAMIC 1570 The service is a dynamic service as is defined by the Protocol, 1571 Service Flags and Port fields. 1573 Service ID 1575 The service number which, in combination with the service type, 1576 uniquely identifies the service group. For services of type 1577 WCCP2_SERVICE_DYNAMIC, all values from 0 to 255 inclusive are 1578 valid. For services of type WCCP2_SERVICE_STANDARD, a single 1579 service number is currently defined: 1581 0x00 - HTTP (Protocol: TCP, Destination Port: 80) 1583 Priority 1585 Service priority. The lowest priority is 0, the highest is 255. 1586 Packets for redirection are matched against Services in priority 1587 order, highest first. Well known services have a priority of 240. 1589 Protocol 1591 IP protocol identifier. The protocol type of traffic to be 1592 redirected. A value of 0 indicates that all protocol types should 1593 be redirected, unless the "Redirect Only Protocol 0" flag is set 1594 (in which case only protocol 0 would be redirected). 1596 Service Flags 1598 0x0001 - Source IP Hash 1599 0x0002 - Destination IP Hash 1600 0x0004 - Source Port Hash 1601 0x0008 - Destination Port Hash 1602 0x0010 - Ports Defined 1603 0x0020 - Ports Source 1604 0x0040 - Redirect Only Protocol 0 (* see note) 1605 0x0100 - Source IP Alternative Hash 1606 0x0200 - Destination IP Alternative Hash 1607 0x0400 - Source Port Alternative Hash 1608 0x0800 - Destination Port Alternative Hash 1610 (* - requires minimum protocol version 2.01) 1612 The primary hash flags (Source IP Hash, Destination IP Hash, 1613 Source Port Hash, Destination Port Hash) determine which protocol 1614 header fields of a packet will be hashed to yield the Redirection 1615 Hash Table primary bucket index. The hash index is constructed by 1616 XORing each octet of the appropriate fields from the packet 1617 header. The hash index is a single octet and has an initial value 1618 of zero. 1620 If alternative hashing has been enabled for the primary bucket 1621 (see the bucket definition in Section 6.5), the alternate hash 1622 flags (Source IP Alternative Hash, Destination IP Alternative 1623 Hash, Source Port Alternative Hash, Destination Port Alternative 1624 Hash) determine which protocol header fields of a packet will be 1625 hashed to yield a secondary bucket index. The secondary hash 1626 index is constructed by XORing each octet of the appropriate 1627 fields from the packet header. The secondary hash index is a 1628 single octet and has an initial value of zero. 1630 The primary hash flags and alternate hash flags are valid only 1631 when the service group uses hash assignment, in which case at 1632 least one primary hash flag and one secondary hash flag must be 1633 set. 1635 Port 1 -> Port 8 1637 A list of UDP or TCP port numbers. The port list is active only 1638 if the service protocol is set to UDP or TCP and the service flag 1639 "Ports Defined" is set. 1641 If the "Ports Source" flag is set the port information refers to 1642 the source port within a packet to be redirected, if clear the 1643 port information refers to the destination port within a packet to 1644 be redirected. When the list is active, a packet can be 1645 redirected only if it uses one of the port numbers contained in 1646 this list. 1648 If less than eight ports are specified, the list is terminated 1649 with a port value of zero, in which case subsequent entries in the 1650 list are ignored. 1652 5.1.3. Capabilities Info Component 1654 0 1 2 3 1655 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 1656 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1657 | Type | Length | 1658 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1659 | Capability Element 1 | 1660 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1661 | . | 1662 | . | 1663 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1664 | Capability Element n | 1665 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1667 Type 1669 0x08 - WCCP2_CAPABILITY_INFO (8) 1671 Length 1673 Length of the remainder of the component. 1675 Capability Element 1 -> Capability Element n 1677 Elements in TLV-format each describing a router or web-cache 1678 capability. Each element is defined in Section 6.11. 1680 5.1.4. Command Extension Component 1682 0 1 2 3 1683 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 1684 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1685 | Type | Length | 1686 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1687 | Command Element 1 | 1688 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1689 | . | 1690 | . | 1691 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1692 | Command Element n | 1693 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1695 Type 1697 0x0F - WCCP2_COMMAND_EXTENSION (15) 1699 Length 1701 Length of the remainder of the component. 1703 Command Element 1 -> Command Element n 1705 Elements in TLV-format each containing a router or web-cache 1706 command. Each element is defined in Section 6.12. 1708 5.1.5. Address Table Component 1709 This component is valid from protocol version 2.01. It provides a 1710 list of network addresses that are referenced within the WCCP 1711 message. References to these addresses are made via address elements 1712 within other WCCP message components. The referencing address 1713 element is defined in Section 4.7.2. 1715 0 1 2 3 1716 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 1717 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1718 | Type | Length | 1719 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1720 | Address Family Identifier | Address Length | 1721 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1722 | Number of Addresses | 1723 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1724 | Address 1 | 1725 | . | 1726 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1727 | . | 1728 | . | 1729 | . | 1730 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1731 | Address n | 1732 | . | 1733 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1735 Type 1737 0x11 - WCCP2_ADDRESS_TABLE (17) 1739 Length 1741 Length of the remainder of the component. 1743 Address Family Identifier 1745 Indicates the address family of all network addresses within the 1746 table. The values are defined by the Internet Assigned Numbers 1747 Authority (IANA) Address Family Numbers registry [IANA-AF]. 1748 Relevant values include: 1750 0x02 - IP version 6 (IPv6) 1752 As IPv4 addresses can be specified directly within a WCCP message 1753 without requiring an address table, the use of an IPv4 address 1754 table is unnecessary and therefore strongly discouraged. 1756 Address Length 1757 The length in octets of each entry within the list of network 1758 addresses. The length of each entry must be a multiple of 4 1759 octets. If this length is larger than the natural size of an 1760 address of the given address family, excess trailing octets in 1761 each entry should be set to zero by the sender and ignored by the 1762 receiver. 1764 Number of Addresses 1766 The number of addresses (n) contained within the following list. 1768 Address 1 -> Address n 1770 A list of network addresses that can be referenced via their index 1771 in this list. The first address is referenced using index 1 and 1772 the last address is referenced using index n, providing a list of 1773 n addresses. 1775 5.2. 'Here I Am' message components 1777 The following sub-sections describe components used only in 'Here I 1778 Am' messages. 1780 5.2.1. Web-Cache Identity Info Component 1782 0 1 2 3 1783 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 1784 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1785 | Type | Length | 1786 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1787 | Web-Cache Identity Element | 1788 | . | 1789 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1791 Type 1793 0x03 - WCCP2_WC_ID_INFO (3) 1795 Length 1797 Length of the remainder of the component. 1799 Web-Cache Identity Element 1801 An element indicating the web-cache IP address and its redirection 1802 assignments. The element is defined in Section 6.4. 1804 5.2.2. Web-Cache View Info Component 1805 This component represents a web-cache's view of the Service Group. 1807 0 1 2 3 1808 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 1809 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1810 | Type | Length | 1811 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1812 | Change Number | 1813 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1814 | Number of Routers | 1815 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1816 | Router Identity Element 1 | 1817 | . | 1818 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1819 | . | 1820 | . | 1821 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1822 | Router Identity Element n | 1823 | . | 1824 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1825 | Number of Web-Caches | 1826 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1827 | Web-Cache Address Element 1 | 1828 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1829 | . | 1830 | . | 1831 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1832 | Web-Cache Address Element m | 1833 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1835 Type 1837 0x05 - WCCP2_WC_VIEW_INFO (5) 1839 Length 1841 Length of the remainder of the component. 1843 Change Number 1845 A value incremented each time there is a change in the view. 1847 Number of Routers 1849 The number of routers (n) in the Service Group. 1851 Router Identity Element 1 -> Router Identity Element n 1852 Elements indicating the identifying IP address for each router in 1853 the Service Group and the last "Receive ID" obtained from each. 1854 Each element is defined in Section 6.1. 1856 Number of Web-Caches 1858 The number of web-caches (m) in the Service Group. 1860 Web-Cache Address Element 1 -> Web-Cache Address Element m 1862 Elements indicating the web-cache IP addresses learnt from 1863 WCCP2_I_SEE_YOU messages. Each address element is defined in 1864 Section 4.7. 1866 5.3. 'I See You' message components 1868 The following sub-sections describe components used only in 'I See 1869 You' messages. 1871 5.3.1. Router Identity Info Component 1873 0 1 2 3 1874 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 1875 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1876 | Type | Length | 1877 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1878 | Router Identity Element | 1879 | . | 1880 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1881 | Sent To Address Element | 1882 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1883 | Number Received From | 1884 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1885 | Received From Address Element 1 | 1886 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1887 | . | 1888 | . | 1889 | . | 1890 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1891 | Received From Address Element n | 1892 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1894 Type 1896 0x02 - WCCP2_ROUTER_ID_INFO (2) 1898 Length 1900 Length of the remainder of the component. 1902 Router Identity Element 1904 Element indicating the router's identifying IP address and 1905 "Receive ID". The identifying IP address must be a valid, 1906 reachable address for the router. The element is defined in 1907 Section 6.1. 1909 Sent To Address Element 1911 Identifies the IP address to which the target web-cache sent the 1912 WCCP2_HERE_I_AM message. When this component is present in a 1913 unicast WCCP2_I_SEE_YOU message, this element identifies the IP 1914 address that the target web-cache used. When present in a 1915 multicast WCCP2_I_SEE_YOU message, this element identifies the 1916 Service Group multicast address. The address element is defined 1917 in Section 4.7. 1919 Number Received From 1921 The number of web-caches (n) to which this message is directed. 1922 When using multicast addressing it may be less than the number of 1923 web-caches which actually see the message. 1925 Received From Address Element 1 -> Received From Address Element n 1927 Elements identifying the IP addresses of web-caches to which this 1928 message is directed. When using multicast addressing it may be a 1929 subset of the web-caches which actually see the message. Each 1930 address element is defined in Section 4.7. 1932 5.3.2. Router View Info Component 1933 This component represents a router's view of the Service Group. 1935 0 1 2 3 1936 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 1937 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1938 | Type | Length | 1939 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1940 | Member Change Number | 1941 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1942 | Assignment Key Element | 1943 | . | 1944 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1945 | Number of Routers | 1946 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1947 | Router ID Address Element 1 | 1948 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1949 | . | 1950 | . | 1951 | . | 1952 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1953 | Router ID Address Element n | 1954 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1955 | Number of Web-Caches | 1956 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1957 | Web-Cache Identity Element 1 | 1958 | . | 1959 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1960 | . | 1961 | . | 1962 | . | 1963 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1964 | Web-Cache Identity Element m | 1965 | . | 1966 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1968 Type 1970 0x04 - WCCP2_RTR_VIEW_INFO (4) 1972 Length 1974 Length of the remainder of the component. 1976 Member Change Number 1978 A value incremented each time there is a change in the Service 1979 Group membership. 1981 Assignment Key Element 1983 The Assignment Key Element received in the most recent valid 1984 WCCP2_REDIRECT_ASSIGNMENT message. This is used by the designated 1985 web-cache to verify that an assignment has been accepted by the 1986 router and that the assignment remains active. The element is 1987 defined in Section 6.3. 1989 Number of Routers 1991 The number of routers (n) in the Service Group. 1993 Router ID Address Element 1 -> Router ID Address Element n 1995 Elements identifying the Router IDs of routers in the Service 1996 Group. The list is constructed from routers reported by web- 1997 caches via WCCP2_HERE_I_AM messages. Note that a router does not 1998 include itself in the list unless it has also been reported via a 1999 WCCP2_HERE_I_AM message. Each element is defined in Section 4.7. 2001 Number of Web-Caches 2003 The number of useable web-caches (m) in the Service Group. 2005 Web-Cache Identity Element 1 -> Web-Cache Identity Element m 2007 Web-Cache Identity Elements of the useable web-caches in the 2008 Service Group. This list contains web-caches that have sent the 2009 router a WCCP2_HERE_I_AM message with a valid "Receive ID" and 2010 compatible capabilities. Each element is defined in Section 6.4. 2012 5.3.3. Assignment Map Component 2014 This component can only be used with Service Groups using mask 2015 assignment. 2017 0 1 2 3 2018 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 2019 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2020 | Type | Length | 2021 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2022 | Mask/Value Set List | 2023 | . | 2024 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2026 Type 2028 0x0E - WCCP2_ASSIGNMENT_MAP (14) 2030 Length 2032 Length of the remainder of the component. 2034 Mask/Value Set List 2036 A list of mask/value sets. The list is defined in Section 6.13. 2038 5.3.4. Alternate Assignment Map Component 2040 This component is valid from protocol version 2.01. 2042 0 1 2 3 2043 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 2044 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2045 | Type | Length | 2046 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2047 | Assignment Type | Assignment Length | 2048 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2049 | Assignment Body | 2050 | . | 2051 | . | 2052 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2054 Type 2056 0x10 - WCCP2_ALT_ASSIGNMENT_MAP (16) 2058 Length 2059 Length of the remainder of the component. 2061 Assignment Type 2063 Indicates the format of Assignment Body. The currently defined 2064 values are: 2066 0x00 - WCCP2_HASH_ASSIGNMENT 2067 0x01 - WCCP2_MASK_ASSIGNMENT 2068 0x02 - WCCP2_ALT_MASK_ASSIGNMENT 2070 Assignment Length 2072 Length of the remainder of the component (Assignment Body). 2074 Assignment Body 2076 The format of Assignment Body is specified by the value of 2077 Assignment Type, as follows: 2079 WCCP2_HASH_ASSIGNMENT: 2081 Hash Buckets Assignment Element (Section 6.5) 2083 WCCP2_MASK_ASSIGNMENT: 2085 Mask/Value Set List (Section 6.13) 2087 WCCP2_ALT_MASK_ASSIGNMENT: 2089 Alternate Mask/Value Set List (Section 6.17) 2091 5.4. 'Redirect Assign' message components 2093 The following sub-sections describe components used only in 'Redirect 2094 Assign' messages. 2096 5.4.1. Assignment Info Component 2098 This component can only be used with Service Groups using hash 2099 assignment. 2101 0 1 2 3 2102 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 2103 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2104 | Type | Length | 2105 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2106 | Assignment Key Element | 2107 | . | 2108 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2109 | Number of Routers | 2110 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2111 | Router Assignment Element 1 | 2112 | . | 2113 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2114 | . | 2115 | . | 2116 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2117 | Router Assignment Element n | 2118 | . | 2119 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2120 | Hash Buckets Assignment Element | 2121 | . | 2122 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2124 Type 2126 0x06 - WCCP2_REDIRECT_ASSIGNMENT (6) 2128 Length 2130 Length of the remainder of the component. 2132 Assignment Key Element 2134 The designated web-cache expects this element to be returned by a 2135 router in subsequent WCCP2_I_SEE_YOU messages. The element is 2136 defined in Section 6.3. 2138 Number of Routers 2139 The number of routers (n) reachable by the designated web-cache. 2141 Router Assignment Element 1 -> Router Assignment Element n 2143 Elements indicating the identifying IP address, "Receive ID" and 2144 "Change Number" for each router. Each element is defined in 2145 Section 6.2. 2147 Hash Buckets Assignment Element 2149 A list of web-caches and hash bucket assignments. The element is 2150 defined in Section 6.5. 2152 5.4.2. Alternate Assignment Component 2154 0 1 2 3 2155 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 2156 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2157 | Type | Length | 2158 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2159 | Assignment Type | Assignment Length | 2160 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2161 | Assignment Key Element | 2162 | . | 2163 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2164 | Number of Routers | 2165 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2166 | Router Assignment Element 1 | 2167 | . | 2168 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2169 | . | 2170 | . | 2171 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2172 | Router Assignment Element n | 2173 | . | 2174 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2175 | Assignment Body | 2176 | . | 2177 | . | 2178 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2180 Type 2182 0x0D - WCCP2_ALT_ASSIGNMENT (13) 2184 Length 2186 Length of the remainder of the component. 2188 Assignment Type 2190 Indicates the format of Assignment Body. The currently defined 2191 values are: 2193 0x00 - WCCP2_HASH_ASSIGNMENT 2194 0x01 - WCCP2_MASK_ASSIGNMENT 2195 0x02 - WCCP2_ALT_MASK_ASSIGNMENT (* see note) 2197 (* - requires minimum protocol version 2.01) 2199 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. This identifier serves as a means by which a web-cache 2303 can identify a particular router in Router Identity info component 2304 and validate WCCP protocol communication between router and web- 2305 cache. Router Identity IP address may not be used for packet 2306 return (see Section 3.13) by web-cache. The address element is 2307 defined in Section 4.7. 2309 Receive ID 2311 A number maintained by the router for each Service Group. It is 2312 incremented each time the router sends a WCCP protocol message 2313 that includes a Router Identity element. A router's Receive ID 2314 will never be zero. 2316 6.2. Router Assignment Element 2318 0 1 2 3 2319 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 2320 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2321 | Router Identity Element | 2322 | . | 2323 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2324 | Change Number | 2325 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2327 Router Identity Element 2329 Indicates the router's identifying IP address and the last Receive 2330 ID obtained from it. The element is defined in Section 6.1. A 2331 router will ignore an assignment if the Receive ID is invalid. 2333 Change Number 2335 Last Member Change Number received from the router identified by 2336 the Router Identity Element. A router will ignore an assignment 2337 if Change Number is invalid. 2339 6.3. Assignment Key Element 2341 This element uniquely identifies a particular assignment. 2343 0 1 2 3 2344 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 2345 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2346 | Key Address Element | 2347 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2348 | Key Change Number | 2349 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2351 Key Address Element 2353 Indicates the identifying IP address of the designated web-cache. 2354 The address element is defined in Section 4.7. 2356 Key Change Number 2358 A number maintained by the designated web-cache. It is 2359 incremented by the designated web-cache each time a change is made 2360 to the assignments for a Service Group. 2362 6.4. Web-Cache Identity Element 2364 0 1 2 3 2365 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 2366 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2367 | Web-Cache Address Element | 2368 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2369 | Reserved | Flags | 2370 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2371 | Assignment Data | 2372 | . | 2373 | . | 2374 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2376 Web-Cache Address Element 2378 Indicates the identifying IP address of the web-cache. This must 2379 be a valid IP address by which the web-cache is reachable. The 2380 address element is defined in Section 4.7. 2382 Reserved 2384 Must be zero. 2386 Flags 2388 Bit 0 (U bit): 2390 If set, this bit indicates that the web-cache does not have an 2391 assignment in the current Service Group assignments and that 2392 the assignment data which follows is historical. Historical 2393 data may be used by the designated web-cache to re-assign the 2394 same assignment entries to a web-cache that left and 2395 subsequently rejoined a Service Group. 2397 Bit 1 & bit 2 (Type bits): 2399 Two bits indicating the format of the Assignment Data element 2400 immediately following. The meaning of the bit settings are 2401 shown in the following table: 2403 Bit 1 Bit 2 Meaning 2404 ----- ----- ------------------- 2405 0 0 Hash Assignment 2406 1 0 Mask Assignment 2407 0 1 No Assignment (* see note) 2408 1 1 Extended Assignment (* see note) 2410 (* - requires minimum protocol version 2.01) 2412 Bit 3 (V bit): 2414 If set, this bit indicates that the protocol version number in 2415 the message header is the minimum version supported by the web- 2416 cache. Otherwise, if clear, this bit indicates that the 2417 protocol version number in the message header is the maximum 2418 version supported by the web-cache. This is used as part of 2419 the protocol version negotiation (see Section 3.4). 2421 Bits 4 to 15: 2423 Reserved, must be zero. 2425 Assignment Data 2427 The format of Assignment Data is specified by the setting of the 2428 Type bits within the Flags field, as follows: 2430 Hash Assignment: 2432 Hash Assignment Data Element (Section 6.6) 2434 Mask Assignment: 2436 Mask Assignment Data Element (Section 6.7) 2438 No Assignment: 2440 The Assignment Data field is not present. 2442 Extended Assignment: 2444 Extended Assignment Data Element (Section 6.10) 2446 6.5. Hash Buckets Assignment Element 2447 0 1 2 3 2448 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 2449 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2450 | Number of Web-Caches | 2451 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2452 | Web-Cache Address Element 0 | 2453 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2454 | . | 2455 | . | 2456 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2457 | Web-Cache Address Element (n-1) | 2458 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2459 | Bucket 0 | Bucket 1 | Bucket 2 | Bucket 3 | 2460 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2461 | . | 2462 | . | 2463 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2464 | Bucket 252 | Bucket 253 | Bucket 254 | Bucket 255 | 2465 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2467 Number of Web-Caches 2469 The number of useable web-caches (n) in the Service Group seen by 2470 all routers. 2472 Web-Cache Address Element 0 -> Web-Cache Address Element (n-1) 2474 Elements indicating the IP addresses of the useable web-caches in 2475 the Service Group. The position of a web-cache in this list is 2476 the web-cache index. The first entry in the list has an index of 2477 0. Each address element is defined in Section 4.7. 2479 Bucket 0 -> Bucket 255 2481 Contents of the Redirection Hash Table. The content of each 2482 bucket is a web-cache index value in the range 0 to 31. If set, 2483 the "A" flag indicates that alternative hashing should be used for 2484 this web-cache. The special value 0xFF indicates that no web- 2485 cache has been assigned to the bucket. 2487 0 1 2 3 4 5 6 7 2488 +-+-+-+-+-+-+-+-+ 2489 | Index |A| 2490 +-+-+-+-+-+-+-+-+ 2492 6.6. Hash Assignment Data Element 2494 0 1 2 3 2495 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 2496 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2497 | Bucket Block 0 | 2498 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2499 | Bucket Block 1 | 2500 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2501 | Bucket Block 2 | 2502 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2503 | Bucket Block 3 | 2504 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2505 | Bucket Block 4 | 2506 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2507 | Bucket Block 5 | 2508 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2509 | Bucket Block 6 | 2510 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2511 | Bucket Block 7 | 2512 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2513 | Assignment Weight and Status Element | 2514 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2516 Bucket Block 0 -> Bucket Block 7 2518 A 256-bit vector. A set bit indicates that the corresponding 2519 Redirection Hash Table bucket is assigned to this web-cache. 2521 Assignment Weight and Status Element 2523 This element may be used to indicate to the designated web-cache 2524 how new assignments should be made. The element is defined in 2525 Section 6.9. 2527 6.7. Mask Assignment Data Element 2529 0 1 2 3 2530 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 2531 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2532 | Mask/Value Set List | 2533 | . | 2534 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2535 | Assignment Weight and Status Element | 2536 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2538 Mask/Value Set List 2540 A list of mask/value sets. The list is defined in Section 6.13. 2542 Assignment Weight and Status Element 2544 This element may be used to indicate to the designated web-cache 2545 how new assignments should be made. The element is defined in 2546 Section 6.9. 2548 6.8. Alternate Mask Assignment Data Element 2550 This element provides a more compact representation of mask 2551 assignment data than the Mask Assignment Data Element. The Alternate 2552 Mask Assignment Data Element should be used in preference to the Mask 2553 Assignment Data Element whenever possible. 2555 0 1 2 3 2556 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 2557 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2558 | Alternate Mask/Value Set List | 2559 | . | 2560 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2561 | Assignment Weight and Status Element | 2562 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2564 Alternate Mask/Value Set List 2566 A list of alternate mask/value sets. The list is defined in 2567 Section 6.17. 2569 Assignment Weight and Status Element 2571 This element may be used to indicate to the designated web-cache 2572 how new assignments should be made. The element is defined in 2573 Section 6.9. 2575 6.9. Assignment Weight and Status Element 2577 0 1 2 3 2578 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 2579 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2580 | Assignment Weight | Assignment Status | 2581 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2583 Assignment Weight 2585 May be used to indicate to the designated web-cache how new 2586 assignments should be made. This information is generated by each 2587 web-cache to be associated with its identity information. It is 2588 received, stored and distributed by a router without modification. 2590 Assignment Status 2592 May be used to indicate to the designated web-cache how new 2593 assignments should be made. This information is generated by each 2594 web-cache to be associated with its identity information. It is 2595 received, stored and distributed by a router without modification. 2597 6.10. Extended Assignment Data Element 2599 0 1 2 3 2600 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 2601 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2602 | Type | Length | 2603 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2604 | Assignment Data | 2605 | . | 2606 | . | 2607 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2609 Type 2611 Indicates the format of Assignment Data. The currently defined 2612 values are: 2614 0x00 - WCCP2_HASH_ASSIGNMENT 2615 0x01 - WCCP2_MASK_ASSIGNMENT 2616 0x02 - WCCP2_ALT_MASK_ASSIGNMENT 2617 0x03 - WCCP2_ASSIGNMENT_WEIGHT_STATUS 2619 Length 2621 Length of the remainder of the element (Assignment Data). 2623 Assignment Data 2625 The format of Assignment Data is specified by the value of Type, 2626 as follows: 2628 WCCP2_HASH_ASSIGNMENT: 2630 Hash Assignment Data Element (Section 6.6) 2632 WCCP2_MASK_ASSIGNMENT: 2634 Mask Assignment Data Element (Section 6.7) 2636 WCCP2_ALT_MASK_ASSIGNMENT: 2638 Alternate Mask Assignment Data Element (Section 6.8) 2640 WCCP2_ASSIGNMENT_WEIGHT_STATUS: 2642 Assignment Weight and Status Element (Section 6.9) 2644 6.11. Capability Element 2646 0 1 2 3 2647 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 2648 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2649 | Type | Length | 2650 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2651 | Value | 2652 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2654 Type 2656 Currently defined types are: 2658 0x01 - WCCP2_FORWARDING_METHOD (Section 6.11.1) 2659 0x02 - WCCP2_ASSIGNMENT_METHOD (Section 6.11.2) 2660 0x03 - WCCP2_PACKET_RETURN_METHOD (Section 6.11.3) 2661 0x04 - WCCP2_TRANSMIT_T (Section 6.11.4) 2662 0x05 - WCCP2_TIMER_SCALE (Section 6.11.5) 2664 Routers and web-caches must ignore any Capability Element which 2665 has an unrecognised type. 2667 Length 2669 The length in octets of the following Capability Element Value. 2671 Value 2673 The format and length of the Value field is determined by the 2674 capability type. The following sub-sections describe the format 2675 of this field for each defined type. 2677 6.11.1. Capability Type WCCP2_FORWARDING_METHOD 2679 The Capability Element Value contains a 32-bit bitmask indicating the 2680 supported or selected forwarding methods. The currently defined 2681 values are: 2683 0x00000001 - WCCP2_FORWARDING_METHOD_GRE 2684 0x00000002 - WCCP2_FORWARDING_METHOD_L2 2686 6.11.2. Capability Type WCCP2_ASSIGNMENT_METHOD 2688 The Capability Element Value contains a 32-bit bitmask indicating the 2689 supported or selected assignment methods. The currently defined 2690 values are: 2692 0x00000001 - WCCP2_ASSIGNMENT_METHOD_HASH 2693 0x00000002 - WCCP2_ASSIGNEMNT_METHOD_MASK 2695 6.11.3. Capability Type WCCP2_PACKET_RETURN_METHOD 2697 The Capability Element Value contains a 32-bit bitmask indicating the 2698 supported or selected packet return methods. The currently defined 2699 values are: 2701 0x00000001 - WCCP2_PACKET_RETURN_METHOD_GRE 2702 0x00000002 - WCCP2_PACKET_RETURN_METHOD_L2 2704 6.11.4. Capability Type WCCP2_TRANSMIT_T 2706 The Capability Element Value contains two 16-bit values specifying 2707 the supported or selected TRANSMIT_T message interval in 2708 milliseconds. In a WCCP2_I_SEE_YOU message, a router can advertise 2709 either a range of permitted TRANSMIT_T values, or a single permitted 2710 TRANSMIT_T value. In a WCCP2_HERE_I_AM message, a web-cache can 2711 select only a single TRANSMIT_T value. 2713 When a single selected value is to be specified, the first 16-bit 2714 value is zero and the second 16-bit value is the selected TRANSMIT_T 2715 message interval value: 2717 0 1 2 3 2718 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 2719 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2720 | 0 | TRANSMIT_T | 2721 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2723 When a supported range of permitted values is to be specified, the 2724 first 16-bit value contains the upper limit of the range and the 2725 second 16-bit value contains the lower limit of the range: 2727 0 1 2 3 2728 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 2729 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2730 | TRANSMIT_T Upper Limit | TRANSMIT_T Lower Limit | 2731 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2733 The default TRANSMIT_T value is 10000 (10 seconds) and applies when 2734 the WCCP2_TRANSMIT_T capability is not present. The range of 2735 supported values may be chosen by the implementation, but a minimum 2736 value of 500 and a maximum value of 60000 are suggested. 2738 6.11.5. Capability Type WCCP2_TIMER_SCALE 2740 The Capability Element Value contains four 8-bit values specifying 2741 the supported or selected TIMEOUT_SCALE and RA_TIMER_SCALE values. 2742 In a WCCP2_I_SEE_YOU message, a router can advertise either a range 2743 of supported values for each parameter, or a single value for each 2744 parameter. In a WCCP2_HERE_I_AM message, a web-cache can select only 2745 a single value for each parameter. 2747 The first and second 8-bit values are used to specify the 2748 TIMEOUT_SCALE parameter. The third and fourth 8-bit values are used 2749 to specify the RA_TIMER_SCALE parameter. 2751 When a single selected value is to be specified for each parameter, 2752 the first 8-bit value is zero, the second 8-bit value is the selected 2753 TIMEOUT_SCALE value, the third 8-bit value is zero and the fourth 2754 8-bit value is the selected RA_TIMER_SCALE value: 2756 0 1 2 3 2757 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 2758 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2759 | 0 | TIMEOUT_SCALE | 0 |RA_TIMER_SCALE | 2760 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2762 When a supported range of permitted values is to be specified for 2763 each parameter, the first 8-bit value contains the upper limit of the 2764 TIMEOUT_SCALE range, the second 8-bit value contains the lower limit 2765 of the TIMEOUT_SCALE range, the third 8-bit value contains the upper 2766 limit of the RA_TIMER_SCALE range and the fourth 8-bit value contains 2767 the lower limit of the TIMEOUT_SCALE range: 2769 0 1 2 3 2770 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 2771 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2772 | TO_SCL Upper | TO_SCL Lower | RA_SCL Upper | RA_SCL Lower | 2773 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2775 TO_SCL Upper = TIMEOUT_SCALE Upper Limit 2776 TO_SCL Lower = TIMEOUT_SCALE Lower Limit 2777 RA_SCL Upper = RA_TIMER_SCALE Upper Limit 2778 RA_SCL Lower = RA_TIMER_SCALE Lower Limit 2780 The default TIMEOUT_SCALE and RA_TIMER_SCALE values are both 1 and 2781 apply when the WCCP2_TIMER_SCALE capability is not present. The 2782 range of supported values for each of these parameters may be chosen 2783 by the implementation, but a minimum value of 1 and a maximum value 2784 of 5 are suggested in both cases. The value 0 must not be within the 2785 supported range of either parameter. 2787 6.12. Command Element 2789 0 1 2 3 2790 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 2791 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2792 | Command Type | Command Length ! 2793 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2794 | Command Data | 2795 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2797 Command Type 2799 Currently defined command types are: 2801 0x01 - WCCP2_COMMAND_TYPE_SHUTDOWN (Section 6.12.1) 2802 0x02 - WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE (Section 6.12.2) 2804 Routers and web-caches must ignore any Command Element which has 2805 an unrecognised type. 2807 Command Length 2809 The length in octets of the following Command Data field. 2811 Command Data 2813 The format and length of the Command Data field is determined by 2814 the value of the Command Type field. The following sub-sections 2815 describe the format of this field for each defined type. 2817 6.12.1. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN 2819 This command is used by a web-cache to indicate to the routers in a 2820 Service Group that it is shutting down and should no longer receive 2821 any redirected traffic. 2823 The Command Data for the WCCP2_COMMAND_TYPE_SHUTDOWN command is a 2824 Web-cache IP address element, as defined in Section 4.7. The length 2825 of the field is 4 octets. 2827 The format of the Command Data field is: 2829 0 1 2 3 2830 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 2831 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2832 | Web-Cache Address Element | 2833 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2835 The address element value will be identical to that used in the Web- 2836 Cache Identity Element within the Web-Cache Identity Info Component. 2838 6.12.2. Command Type WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE 2840 This command is used by a router to acknowledge receipt of a SHUTDOWN 2841 command received from the web-cache identified by the IP address 2842 element in the Command Data field. 2844 The Command Data for the WCCP2_COMMAND_TYPE_SHUTDOWN_RESPONSE command 2845 is a Web-cache IP address element, as defined in Section 4.7. The 2846 length of the field is 4 octets. 2848 The format of the Command Data field is: 2850 0 1 2 3 2851 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 2852 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2853 | Web-Cache Address Element | 2854 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2856 6.13. Mask/Value Set List 2858 0 1 2 3 2859 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 2860 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2861 | Number of Mask/Value Set Elements | 2862 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2863 | Mask/Value Set Element 1 | 2864 | . | 2865 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2866 | . | 2867 | . | 2868 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2869 | Mask/Value Set Element m | 2870 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2872 Number of Mask/Value Set Elements 2874 The number of Mask/Value Set Elements (m) in the following list. 2876 Mask/Value Set Element 1 -> Mask/Value Set Element m 2878 A list of the Mask/Value Set Elements. Each element is defined in 2879 Section 6.14. 2881 6.14. Mask/Value Set Element 2883 0 1 2 3 2884 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 2885 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2886 | Mask Element | 2887 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2888 | Number of Value Elements | 2889 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2890 | Value Element 1 | 2891 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2892 | . | 2893 | . | 2894 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2895 | Value Element n | 2896 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2898 Mask Element 2900 The Mask Element for this set. The element is defined in 2901 Section 6.15. 2903 Number of Value Elements 2905 The number of Value Elements (n) in this set. 2907 Value Element 1 -> Value Element n 2909 The Value Elements for this set. Each element is defined in 2910 Section 6.16. 2912 6.15. Mask Element 2914 0 1 2 3 2915 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 2916 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2917 | Source Address Element | 2918 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2919 | Destination Address Element | 2920 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2921 | Source Port | Destination Port | 2922 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2924 Source Address Element 2926 Indicates the mask to be applied to the source IP address of the 2927 packet. A value of zero means "Don't care". The element is 2928 defined in Section 4.7. 2930 Destination Address Element 2932 Indicates the mask to be applied to the destination IP address of 2933 the packet. A value of zero means "Don't care". The element is 2934 defined in Section 4.7. 2936 Source Port 2938 The 16-bit mask to be applied to the TCP/UDP source port field of 2939 the packet. A value of zero means "Don't care". 2941 Destination Port 2943 The 16-bit mask to be applied to the TCP/UDP destination port 2944 field of the packet. A value of zero means "Don't care". 2946 6.16. Value Element 2948 0 1 2 3 2949 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 2950 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2951 | Source Address Element | 2952 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2953 | Destination Address Element | 2954 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2955 | Source Port | Destination Port | 2956 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2957 | Web-Cache Address Element | 2958 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2960 Source Address Element 2962 Indicates the value to match against the source IP address of the 2963 packet after masking. The element is defined in Section 4.7. 2965 Destination Address Element 2967 Indicates the value to match against the destination IP address of 2968 the packet after masking. The element is defined in Section 4.7. 2970 Source Port 2972 The value to match against the TCP/UDP source port number of the 2973 packet after masking. 2975 Destination Port 2977 The value to match against the TCP/UDP destination port number of 2978 the packet after masking. 2980 Web-Cache Address Element 2982 Indicates the identifying IP address of the web-cache to which 2983 packets matching this Value Element should be sent. The address 2984 element is defined in Section 4.7. 2986 6.17. Alternate Mask/Value Set List 2988 0 1 2 3 2989 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 2990 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2991 | Number of Alternate Mask/Value Set Elements | 2992 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2993 | Alternate Mask/Value Set Element 1 | 2994 | . | 2995 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2996 | . | 2997 | . | 2998 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2999 | Alternate Mask/Value Set Element m | 3000 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3002 Number of Alternate Mask/Value Set Elements 3004 The number of Alternate Mask/Value Set Elements (m) in the 3005 following list. 3007 Alternate Mask/Value Set Element 1 -> Alternate Mask/Value Set 3008 Element m 3010 A list of Alternate Mask/Value Set Elements. Each element is 3011 defined in Section 6.18. 3013 6.18. Alternate Mask/Value Set Element 3015 0 1 2 3 3016 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 3017 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3018 | Mask Element | 3019 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3020 | Number of Web-Cache Value Elements | 3021 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3022 | Web-Cache Value Element 1 | 3023 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3024 | . | 3025 | . | 3026 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3027 | Web-Cache Value Element n | 3028 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3030 Mask Element 3032 The Mask Element for this set. The element is defined in 3033 Section 6.15. 3035 Number of Web-Cache Value Elements 3037 The number of Web-cache Value Elements in this set. 3039 Web-Cache Value Element 1 -> Web-Cache Value Element n 3041 The Web-cache Value Elements for this set. Each element is 3042 defined in Section 6.19. 3044 6.19. Web-Cache Value Element 3046 0 1 2 3 3047 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 3048 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3049 | Web-Cache Address Element | 3050 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3051 | Number of Value Sequence Numbers | 3052 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3053 | Value Sequence Number 1 | 3054 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3055 | . | 3056 | . | 3057 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3058 | Value Sequence Number m | 3059 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3061 Web-Cache Address Element 3063 Indicates the identifying IP address of the web-cache to which 3064 packets matching this list of value sequence numbers should be 3065 sent. The address element is defined in Section 4.7. 3067 Number of Value Sequence Numbers 3069 The number of Value Sequence Numbers (m) in this element. 3071 Value Sequence Number 1 -> Value Sequence Number m 3073 An index (starting from 0) into an imaginary table that contains 3074 an entry for each possible value that could be matched against the 3075 result of applying the mask to the fields of the packet header. 3076 The size of the imaginary table is determined by the total number 3077 of bits set in the mask. For n bits set in the mask, the 3078 imaginary table contains 2^n (2 raised to the power n) entries. 3079 The minimum permitted index value is 0 and the maximum permitted 3080 index value is (2^n)-1. 3082 7. Interpreting Alternate Mask/value Set Elements 3084 As defined in Section 6.15, each mask consists of four elements: 3086 1. Source address mask (SAM) 3087 2. Destination address mask (DAM) 3088 3. Source port mask (SPM) 3089 4. Destination port mask (DPM) 3090 Each bit that is set in any of the four mask elements maps uniquely 3091 to an individual bit within the Value Sequence Number (VSN). With 32 3092 bits available in the VSN, there can be up to 32 bits set in the mask 3093 across the four elements. 3095 The order of the mask elements listed above is the order of 3096 significance, with the SAM being the most significant element (MSE) 3097 and the DPM being the least significant element (LSE). 3099 Bits within the VSN are mapped in order from the least significant 3100 bit (LSB, bit 0) to the most significant bit (MSB, bit 31). Mask 3101 elements are processed in order from the LSE to the MSE. Within each 3102 mask element, octets are processed from the least significant octet 3103 to the most significant octet, and within each octet bits are 3104 processed from the LSB (bit 0) to the MSB (bit 7). 3106 For example, consider the following IPv4 mask: 3108 Source Dest Source Dest 3109 Address Address Port Port 3110 Mask Mask Mask Mask 3111 ---------- ---------- ------ ------ 3112 0x00000100 0x00000003 0x0000 0x0001 3114 When mapping bits in the mask above to bits in the VSN, the values 3115 shown above are processed from right to left as follows. 3117 The least significant element is the DPM. Within that element, bit 0 3118 is set in the least significant octet, therefore this is mapped to 3119 bit 0 in the VSN. No other bits are set within the DPM, so 3120 processing moves on to the SPM. 3122 No bits are set in the SPM so processing moves on to the DAM. 3124 In the least significant octet of the DAM, bit 0 is set therefore 3125 this is mapped to the next available bit in the VSN, bit 1. The next 3126 bit set in the DAM is bit 1 of the least significant octet, so it 3127 maps to the next available bit in the VSN, bit 2. No other bits are 3128 set within the DAM, so processing moves on to the SAM. 3130 In the least significant octet of the SAM, no bits are set, so 3131 processing moves on to the next significant octet within the SAM. In 3132 this octet, bit 0 is set therefore this is mapped to the next 3133 available bit in the VSN, bit 3. 3135 Therefore, the above mask results in the following mapping (mask 3136 octets are counted from least significant to most significant): 3138 VSN bit 0 --> DPM octet 0, bit 0 3139 VSN bit 1 --> DAM octet 0, bit 0 3140 VSN bit 2 --> DAM octet 0, bit 1 3141 VSN bit 3 --> SAM octet 1, bit 0 3143 Using the mapping shown above, the following table can be 3144 constructed. It shows the values that correspond to each valid VSN: 3146 Value Source Dest Source Dest 3147 Sequence Address Address Port Port 3148 Number Value Value Value Value 3149 -------- ---------- ---------- ------ ------ 3150 0 0x00000000 0x00000000 0x0000 0x0000 3151 1 0x00000000 0x00000000 0x0000 0x0001 3152 2 0x00000000 0x00000001 0x0000 0x0000 3153 3 0x00000000 0x00000001 0x0000 0x0001 3154 4 0x00000000 0x00000002 0x0000 0x0000 3155 5 0x00000000 0x00000002 0x0000 0x0001 3156 6 0x00000000 0x00000003 0x0000 0x0000 3157 7 0x00000000 0x00000003 0x0000 0x0001 3158 8 0x00000100 0x00000000 0x0000 0x0000 3159 9 0x00000100 0x00000000 0x0000 0x0001 3160 10 0x00000100 0x00000001 0x0000 0x0000 3161 11 0x00000100 0x00000001 0x0000 0x0001 3162 12 0x00000100 0x00000002 0x0000 0x0000 3163 13 0x00000100 0x00000002 0x0000 0x0001 3164 14 0x00000100 0x00000003 0x0000 0x0000 3165 15 0x00000100 0x00000003 0x0000 0x0001 3167 The table above is equivalent to a list of all possible values which 3168 can be obtained by applying the mask to any input data, arranged into 3169 a specific sequential order. For the given mask, each VSN is 3170 effectively an index into this table. However, to convert between a 3171 VSN and its equivalent value, a table lookup is not required as the 3172 preceding bit mapping achieves the same result. 3174 In an Alternate Mask/Value Set Element, each web-cache is represented 3175 by a Web-Cache Value Element. For each web-cache there is a list of 3176 VSNs within the Web-Cache Value Element to show which values have 3177 been assigned to the web-cache. 3179 For example, in an Alternate Mask/Value Set Element listing three 3180 web-caches, each may have a list of VSNs as follows: 3182 web-cache 1, VSNs: 0, 3, 6, 9, 12, 15 3183 web-cache 2, VSNs: 1, 4, 7, 10, 13 3184 web-cache 3, VSNs: 2, 5, 8, 11, 14 3186 This is equivalent to the following values in a Mask/Value Set 3187 Element: 3189 Source Dest Source Dest 3190 Address Address Port Port Target 3191 Value Value Value Value Web-cache 3192 ---------- ---------- ------ ------ --------- 3193 0x00000000 0x00000000 0x0000 0x0000 1 3194 0x00000000 0x00000000 0x0000 0x0001 2 3195 0x00000000 0x00000001 0x0000 0x0000 3 3196 0x00000000 0x00000001 0x0000 0x0001 1 3197 0x00000000 0x00000002 0x0000 0x0000 2 3198 0x00000000 0x00000002 0x0000 0x0001 3 3199 0x00000000 0x00000003 0x0000 0x0000 1 3200 0x00000000 0x00000003 0x0000 0x0001 2 3201 0x00000100 0x00000000 0x0000 0x0000 3 3202 0x00000100 0x00000000 0x0000 0x0001 1 3203 0x00000100 0x00000001 0x0000 0x0000 2 3204 0x00000100 0x00000001 0x0000 0x0001 3 3205 0x00000100 0x00000002 0x0000 0x0000 1 3206 0x00000100 0x00000002 0x0000 0x0001 2 3207 0x00000100 0x00000003 0x0000 0x0000 3 3208 0x00000100 0x00000003 0x0000 0x0001 1 3210 In the example above, all valid VSNs are used but this is not a 3211 requirement, each VSN does not need to be assigned to a web-cache. 3212 However, it is a requirement that each VSN is listed for no more than 3213 one web-cache. 3215 Generally, as demonstrated above, Alternate Mask/Value Set Lists can 3216 be used to represent the same information as Mask/Value Set Lists, 3217 but in a more compact form. Therefore, when constructing a WCCP 3218 message in which protocol version 2.01 is used, Alternate Mask/Value 3219 Set Lists should be used in preference to Mask/Value Set Lists to 3220 achieve a smaller message size. 3222 8. Security Considerations 3224 WCCP V2 provides a mechanism for message authentication. It is 3225 described in Section 3.7 of this document. The authentication 3226 mechanism relies on a password known to all routers and web-caches in 3227 a Service Group. The password is part of the Service Group 3228 configuration and is used to compute message checksums which can be 3229 verified by other members of the group. Should the password become 3230 known to a host attempting to disrupt the operation of a Service 3231 Group it would be possible for that host to spoof WCCP messages and 3232 appear as either a router or web-cache in the Service Group. 3234 To pose as a router in a Service Group a host would advertise its 3235 presence to the members of the group in I_SEE_YOU messages. If 3236 accepted as part of the Service Group the host would receive the 3237 configuration for the group in a HERE_I_AM message from the 3238 designated web-cache. This situation would not pose any threat to 3239 the operation of the Service Group because the host would not be 3240 performing any packet redirection and all packets would flow 3241 normally. 3243 To pose as a web-cache within a Service Group a host would advertise 3244 its presence in HERE_I_AM messages. Acceptance of the host as part 3245 of the Service Group would be decided by the designated web-cache and 3246 may be subject to additional security checks not specified by WCCP. 3247 The host may attempt to become the designated web-cache to avoid 3248 these checks, but acceptance of a host as the designated web-cache 3249 may also be subject to additional security checks. Should the host 3250 become part of the Service Group it would be assigned a proportion of 3251 the traffic redirected by the routers in the Service Group. Assuming 3252 that the host drops any redirected packets, the net effect to clients 3253 would be the loss of a proportion of the traffic flowing through the 3254 Service Group routers. 3256 9. IANA Considerations 3258 This document has no actions for IANA. 3260 10. Acknowledgements 3262 The authors would like to thank Martin Cieslak, Richard Edmonstone, 3263 Mark Gillott, Khalid Rafiq and Doug McLaggan for their assistance in 3264 reviewing this document or earlier versions. 3266 11. Normative References 3268 [IANA-AF] Internet Assigned Numbers Authority, "Address Family 3269 Numbers", 3270 . 3272 [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, 3273 DOI 10.17487/RFC1321, April 1992, 3274 . 3276 [RFC1701] Hanks, S., Li, T., Farinacci, D., and P. Traina, "Generic 3277 Routing Encapsulation (GRE)", RFC 1701, 3278 DOI 10.17487/RFC1701, October 1994, 3279 . 3281 Authors' Addresses 3283 Parameshwaran B (editor) 3284 Cisco Systems 3285 SEZ Unit, Cessna Business Park, 3286 Bangalore, Karnataka 560087 3287 IN 3289 Email: parb@cisco.com 3291 Ahsan S Khan (editor) 3292 Cisco Systems 3293 500 Beaver Brook Road 3294 Boxborough, Massachusetts 01719 3295 US 3297 Email: ahskhan@cisco.com