idnits 2.17.1 draft-ietf-ecrit-lost-planned-changes-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. 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 : ---------------------------------------------------------------------------- == The 'Updates: ' line in the draft header should list only the _numbers_ of the RFCs which will be updated by this document (if approved); it should not include the word 'RFC' in the list. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (11 October 2021) is 927 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 ecrit B. Rosen 3 Internet-Draft 11 October 2021 4 Updates: RFC5222 (if approved) 5 Intended status: Standards Track 6 Expires: 14 April 2022 8 Validation of Locations Around a Planned Change 9 draft-ietf-ecrit-lost-planned-changes-05 11 Abstract 13 This document defines an extension to the Location to Service 14 Translation (LoST) protocol (RFC5222) that allows planned changes to 15 the data to be handled smoothly. This extension is only useful with 16 the validation function of LoST. It is beneficial for LoST 17 validation clients to be aware of planned changes, as records that 18 previously were valid may become invalid at a known future date, and 19 new locations may become valid after the date. This extension adds 20 an element to the request: a date that allows the LoST 21 client to request that the server perform validation as of the date 22 specified. It adds an optional Time-To-Live element to the response, 23 which informs clients of the current expected lifetime of a 24 validation. It also adds a separate interface to the LoST server 25 that allows a client to poll for planned changes. Additionally, this 26 document provides a conventional XML schema for LoST, as a backwards 27 compatible alternative to the RelaxNG schema in RFC5222. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at https://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on 14 April 2022. 46 Copyright Notice 48 Copyright (c) 2021 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 53 license-info) in effect on the date of publication of this document. 54 Please review these documents carefully, as they describe your rights 55 and restrictions with respect to this document. Code Components 56 extracted from this document must include Simplified BSD License text 57 as described in Section 4.e of the Trust Legal Provisions and are 58 provided without warranty as described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 63 2. Conventions used in this document . . . . . . . . . . . . . . 4 64 3. Planned Change Poll Interface . . . . . . . . . . . . . . . . 4 65 4. element . . . . . . . . . . . . . . . . . . . 6 66 5. Time-To-Live (TTL) in Response . . . . . . . . . . . . . . . 6 67 6. Replacement XML schema . . . . . . . . . . . . . . . . . . . 7 68 7. Extension XML Schema . . . . . . . . . . . . . . . . . . . . 15 69 8. plannedChangePoll Interface Description . . . . . . . . . . . 16 70 9. Security Considerations . . . . . . . . . . . . . . . . . . . 18 71 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 72 10.1. Replacement XML Schema Registration . . . . . . . . . . 19 73 10.2. Planned Change Extension XML Schema Registration . . . . 20 74 11. Normative References . . . . . . . . . . . . . . . . . . . . 21 75 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 21 77 1. Introduction 79 Validation of civic locations involves dealing with data that may 80 change over time. A typical example is when a portion of a county or 81 district that was not part of a municipality is "annexed" to a 82 municipality. Prior to the change, a Presence Information Data 83 Format Location Object (PIDF-LO) specifying a civic location in the 84 affected area would have a blank A3 element, or would contain some 85 other value; after the change, a PIDF-LO specifying the same location 86 would contain an A3 element set to the name of the municipality that 87 annexed that part of the county/district. This kind of annexation 88 has an effective date and time (typically 00:00 on the first or last 89 day of a month), known in advance. Other kinds of changes may also 90 occur, and these will almost always also have an effective date that 91 is known in advance. 93 Records in a LIS must change around these kinds of events. The old 94 record must be discarded, and a new, validated record must be loaded 95 into the LIS. It is often difficult for the LIS operator to know 96 that records must be changed around such events. There are other 97 circumstances where locations that were previously valid become 98 invalid, such as a street renaming or renumbering event. Using 99 [RFC5222] validation, the only way for a LIS to discover such changes 100 is to periodically revalidate its entire database. Of course, this 101 does not facilitate timely changes, is not coordinated with the 102 actual change event, and also adds significant load to the LoST 103 server as well as the LIS. Even if re-validation is contemplated, 104 the server has no mechanism to control, or even suggest the time 105 period for revalidation. 107 This extension allows a LoST client to obtain from the LoST server 108 sets of locations which may change. It makes use of "partial 109 location information" which is a set of location elements and values 110 that, when compared against the client's location records, identify 111 which of the clients records may change as a result of the planned 112 change. A set of such partial locations is termed a "ChangeSet". 113 ChangeSets have an ID, and a date when the change is effective. IDs 114 are ordered. The planned change interface is a REST/JSON interface 115 that allows the client to poll the server using the last ID that it 116 obtained from that server. The response to the poll is a list of all 117 the newer planned changes the server knows about beyond the ChangeSet 118 whose ID was included in the poll. The ID for the last ChangeSet in 119 the returned list will be used by the client for the next poll. 121 When a LIS receives a new ChangeSet, it may prepare one or more new 122 records so that, at the precise planned event date and time, it may 123 insert the new records into in its active database and delete the old 124 records. As part of preparing the new records in advance of the 125 change, the LIS may use the "as of" date component of this extension 126 to perform a LoST validation of the new record as of the effective 127 date. 129 The "asOf" date component of this extension in a 130 request allow a LIS to be prepared for and smoothly transition to 131 planned changes, without the overhead and delay inherent in 132 performing periodic revalidation of each location. The notification 133 URI allows a LIS to be alerted to planned changes, while the "as of" 134 date allows the LIS to verify the validity of locations before they 135 become active. 137 In situations where it is not practical or advisable for the LIS to 138 maintain a stable URI for each of its records, periodic revalidation 139 can still be used to maintain the data in the LIS. However, the LoST 140 server should be able to influence the rate of such revalidation. 142 For this purpose, this extension adds a Time to Live (TTL) attribute 143 to the which provides advice from the server to 144 the LIS of when validation is suggested. 146 There are quite a few implementations of LoST. Experience with these 147 implementations indicates that the RelaxNG schema is very difficult 148 to deal with, both because many commonly used development tools don't 149 support it, and development staff is often unfamiliar with it. 150 Informal alternative schemas have been circulated, which is 151 undesirable as they may not be in conformance with the RelaxNG schema 152 in [RFC5222]. This document provides an XML schema that replaces the 153 RelaxNG schema. It can be used by any implementation interchangeably 154 with the RelaxNG schema. 156 2. Conventions used in this document 158 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 159 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 160 document are to be interpreted as described in [RFC2119]. 162 "Server" in this document refers to the LoST server and "Client" is 163 the LoST client, even when the server is performing an operation on 164 the client. 166 3. Planned Change Poll Interface 168 This document defines a new interface to the LoST server. The 169 interface has three entry points. One, Versions, returns the current 170 version(s) the interface supports. This allows the interface to 171 evolve over time. Another entry point, PlannedChangePoll, is a poll. 172 The poll returns a list of changeSetIds which identify ChangeSet 173 objects. The third, GetChangeSet, accepts a changeSetId and returns 174 the ChangeSet object which contains the identifier (changeSetId), a 175 date (changeSetEffective) and an array of partial locations. A 176 partial location is an array of location information element name and 177 value pairs. The client compares the location elements with its 178 records. For each of the clients records where all of the location 179 elements provided in the partial location have the same values as 180 those in the partial location, that client record may be affected by 181 the planned change. The client's records may have other location 182 elements, but those are not considered in the comparison. So, for 183 example, a partial location may have a Country, A1, A2, A3 and A4 184 location elements, which means that any address with that Country, 185 A1, A2, A3 and A4 values may be affected by the planned change 186 regardless of street name and number. As another example, a partial 187 location with Country, A1, A2, A3, A4, RD and POD but not HN means 188 any address number on the specified street. 190 The changeSetId is string, which the server maintains as an ordered 191 list of changeSetIds. The id itself may not show the ordering. For 192 example, it could be a hashed timestamp, or a hashed sequence number. 193 Given a changeSetId returned by it in a prior poll, the server can 194 identify which ChangeSets it has that come after, in order, after the 195 one with the proffered changeSetId. A new client does not know any 196 ids, or a client may lose the id that it had. The client would poll 197 omitting the changeSetId in the poll query, and it response, the 198 server returns all the ChangeSets it knows about. The effective date 199 of a ChangeSet returned by the server need not always be in the 200 future. Tardy clients may not keep up. On the other hand, the 201 server is not obligated to keep change sets whoose changeSetEffective 202 date has past for more than some arbitrary time. A 12 month time 203 period may be appropriate for a server whose service area doesn't 204 have many changes, where a 3 month time period may be needed in a 205 fast changing service area where many changes occur regularly. A 206 tardy client in a fast changing environment may recieve a large 207 number of ChangSets in response to a poll. 209 Polls are expected every few minutes. A new client omits the ID in 210 its first poll, and the server responds with all the changeSetsIds 211 that it knows about. Thereafter, the client retains the last 212 changeSetId in its most recent poll and uses that in the next poll. 213 If the response to that poll is no changeSetIds, it means the 214 changeSetId the client has is the latest change the server knows 215 about, and that same changeSetId will be used in subsequent polls 216 until the server returns a new one. 218 The version mechanism returns a list of versions of the web service 219 it supports. This document describes version 1.0. Versions are 220 described as a major version, the period "." and a minor version, 221 where major and minor versions are integers. A backwards compatible 222 change within a major version MAY increment only the minor version 223 number. A non-backwards compatible change MUST increment the major 224 version number. To achieve backwards compatibility, implementations 225 MUST ignore any object members they do not implement. Minor version 226 definitions SHALL only add objects, non-required members of existing 227 objects, and non-mandatory-to use functions and SHALL NOT delete any 228 objects, members of objects or functions. This means an 229 implementation of a specific major version and minor version is 230 backwards compatible with all minor versions of the major version. 231 The versions mechanism returns an array of supported versions, one 232 for each major version supported, with the minor version listed being 233 the highest supported minor version. 235 4. element 237 This document defines a new element in the request 238 called "plannedChange". This element contains an attribute: 'asOf'. 239 The 'asOf' attribute contains a date and time in dateTime format with 240 a required timezone. The server validates the location in the 241 request as of the date and time specified, taking into account 242 planned changes. This allows a client to verify that it can make 243 changes in the LIS commensurate with changes in the LoST server by 244 validating locations in advance of a change. 246 5. Time-To-Live (TTL) in Response 248 This extension adds the 'ttl' element to the . 249 The 'ttl'; element contains a date and time after which the client 250 may wish to revalidate the location at the server. A server MAY add 251 this attribute to the response if validation is requested. This 252 element takes the form of the 'expires' attribute pattern of 253 [RFC5222], which allows the values "NO-CACHE" or "NO-EXPIRATION" to 254 be returned instead of a dateTime value. However, for the 'ttl'; 255 attribute "NO-CACHE" has no meaning and MUST NOT be returned. "NO- 256 EXPIRATION" means the server does not have a suggested revalidation 257 period. 259 Selecting a revalidation interval is a complex balancing of 260 timeliness, server load, stability of the underlying data, and policy 261 of the LoST server. Too short, and load on the server may overwhelm 262 it. Too long and invalid data may persist in the server for 263 unacceptable lengths of time. The URI notification mechanism 264 provides timely notice to coordinate changes, but even with it, it is 265 often advisable to revalidate data eventually. 267 In areas that have little change in data, such as fully built out, 268 stable communities already part of a municipality, it may be 269 reasonable to set revalidation periods of 6 months or longer, 270 especially if the URI mechanism is widely deployed at both the server 271 and the clients. In areas that are quickly growing, 20-30 day 272 revalidation may be more appropriate even though such revalidation 273 would be the majority of the traffic on the LoST server. 275 When a planned change is made, typically the TTL value for the 276 affected records is lowered, so that revalidation is forced soon 277 after the change is implemented. It is not advisable to set the 278 expiration precisely at the planned change time if a large number of 279 records will be changed, since that would cause a large spike in 280 traffic at the change time. Rather, the expiration time should have 281 a random additional time added to it to spread out the load. 283 6. Replacement XML schema 285 This schema is an alternative to The Relax NG schema in [RFC5222]. 286 Future extensions to LoST are exected to use this schema as the base 287 for the extensions, rather than the Relax NG schema. Existing 288 extensions described using the Relax NG schema continue to be valid. 290 291 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 315 316 317 318 319 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 337 338 339 340 341 342 343 344 345 346 348 349 350 351 352 353 354 355 357 358 359 360 361 362 363 364 365 367 368 369 370 371 372 373 374 376 377 378 379 380 381 382 384 385 386 387 388 389 390 392 393 394 395 396 398 399 400 401 402 403 404 405 406 408 409 410 411 413 414 415 416 417 419 421 422 423 424 425 427 428 430 431 432 434 435 436 437 438 439 440 442 443 444 445 446 447 449 450 451 452 453 455 456 457 458 459 461 462 463 464 465 466 467 468 469 470 471 472 473 474 476 477 478 479 481 482 483 485 486 487 488 490 491 492 493 494 495 497 498 499 500 501 503 504 506 507 508 510 511 512 513 514 515 516 517 518 520 522 523 524 525 526 527 528 530 531 532 533 534 535 536 537 538 539 541 543 545 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 568 570 571 572 573 574 Exception pattern. 575 576 577 578 579 581 583 585 587 589 591 593 595 597 599 601 603 605 608 609 type="basicException"/> 611 612 613 614 616 617 618 620 622 623 624 625 627 628 629 630 631 633 635 636 637 638 639 641 642 643 645 646 647 648 649 651 652 653 654 Any element not in the LoST namespace. 655 656 657 658 659 660 661 663 664 665 666 A wildcard pattern for including any element 667 from any other namespace. 669 670 671 672 674 675 677 678 679 680 A wildcard pattern for including any element 681 from any other namespace. 682 683 684 685 687 688 689 690 A point where future extensions 691 (elements from other namespaces) 692 can be added. 693 694 695 696 698 699 701 703 7. Extension XML Schema 705 This schema provides the extension to the prior section schema for 706 planned changes: 708 709 713 714 715 717 xs:group ref="plannedChange" minOccurs="1"/> 719 720 721 722 724 726 727 729 731 733 734 735 736 738 740 8. plannedChangePoll Interface Description 742 openapi: 3.0.1 743 info: 744 title: LoST plannedChange 745 version: "1.0" 746 servers: 747 - url: http://localhost/LoST/v1 748 paths: 749 /PlannedChangePoll: 750 get: 751 summary: Get a list of planned changeSetIds 752 operationId: getPlannedChangeIds 753 responses: 755 '200': 756 description: Planned Changes 757 content: 758 application/json: 759 schema: 760 $ref: '#/components/schemas/PlannedChangeIdList' 761 /GetChangeSet: 762 get: 763 summary: Get a changeSet 764 operationId: getChangeSet 765 parameters: 766 - in: query 767 name: changeSetId 768 schema: 769 type: string 770 description: Id of a changeSet 771 responses: 772 '200': 773 description: changeSet object 774 content: 775 application/json: 776 schema: 777 $ref: '#/components/schemas/ChangeSet' 778 /Versions: 779 servers: 780 - url: https://api.example.com/rum 781 description: Override base path for Versions query 782 get: 783 summary: Retrieves all supported versions 784 operationId: RetrieveVersions 785 responses: 786 '200': 787 description: Versions supported 788 content: 789 application/json: 790 schema: 791 $ref: '#/components/schemas/VersionsArray' 792 components: 793 schemas: 794 PlannedChangeIdList: 795 type: array 796 items: 797 type: string 798 ChangeSet: 799 type: object 800 properties: 801 changeSetId: 802 type: string 803 description: Id of the changeSet 804 changeSetEffective: 805 type: string 806 format: datetime 807 description: date and time change will come into 808 effect in dateTime format with a required timezone 809 partialLocationList: 810 type: array 811 items: 812 type: object 813 properties: 814 caType: 815 type: string 816 description: CAtype name from IANA registry 817 value: 818 type: string 819 description: value for this caType 820 VersionsArray: 821 type: object 822 required: 823 - versions 824 properties: 825 versions: 826 type: array 827 items: 828 type: object 829 required: 830 - major 831 - minor 832 properties: 833 major: 834 type: integer 835 format: int32 836 description: Version major number 837 minor: 838 type: integer 839 format: int32 840 description: Version minor number 842 9. Security Considerations 844 As an extension to LoST, this document inherits the security issues 845 raised in [RFC5222]. The server could be tricked into storing a 846 malicious URI which, when sent the revalidateLocation object could 847 trigger something untoward. The server MUST NOT accept any data from 848 the client in response to POSTing the revalidateLocation. 850 The server is subject to abuse by clients because it is being asked 851 to store something and may need to send data to an uncontrolled URI. 852 Clients could request many URIs for the same location, for example. 853 The server MUST have policy that limits use of this mechanism by a 854 given client. If the policy is exceeded, the server returns the 855 warning. The server MUST validate that the content of 856 the 'uri' attribute sent is syntactically valid and meets the 256 857 bytes limit. When sending the object to the URI 858 stored, the server MUST protect itself against common HTTP 859 vulnerabilities. 861 The mutual authentication between client and server is RECOMMENDED 862 for both the initial operation that requests 863 storing the URI and the sending of the object. 864 The server should be well known to the client, and its credential 865 should be learned in a reliable way. For example, a public safety 866 system operating the LoST server may have a credential traceable to a 867 well known Certificate Authority known to provide credentials for 868 public safety agencies. Clients may be operated by local ISPs or 869 other service providers that can reasonably obtain a good credential 870 to use for the server side of the LoST server's POST transaction 871 using the URI. Where the loST server does not recognize the client, 872 its policy MAY limit the use of this feature beyond what it would 873 limit a client it recognizes. 875 10. IANA Considerations 877 10.1. Replacement XML Schema Registration 878 URI: urn:ietf:params:xml:schema:lost3 879 Registrant Contact: IETF ECRIT Working Group, Brian Rosen 880 (br@brianrosen.net). 881 XML: 882 BEGIN 883 884 886 887 888 890 LoST Namespace 891 892 893

Namespace for LoST

894

urn:ietf:params:xml:ns:lost3

895

See 896 RFC????.

897 898 899 END 901 The XML Schema is found in Section 6. 903 10.2. Planned Change Extension XML Schema Registration 904 URI: urn:ietf:params:xml:schema:lostPlannedChange1 905 Registrant Contact: IETF ECRIT Working Group, Brian Rosen 906 (br@brianrosen.net). 907 XML: 909 BEGIN 910 911 913 914 915 917 LoST Planned Change Namespace 918 919 920

Namespace for LoST

921

urn:ietf:params:xml:ns:lostPlannedChange1

922

See 923 RFC????.

924 925 926 END 928 The XML Schema is found in Section 7. 930 11. Normative References 932 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 933 Requirement Levels", BCP 14, RFC 2119, 934 DOI 10.17487/RFC2119, March 1997, 935 . 937 [RFC5222] Hardie, T., Newton, A., Schulzrinne, H., and H. 938 Tschofenig, "LoST: A Location-to-Service Translation 939 Protocol", RFC 5222, DOI 10.17487/RFC5222, August 2008, 940 . 942 Author's Address 944 Brian Rosen 945 470 Conrad Dr 946 Mars, PA 16046 947 United States of America 949 Email: br@brianrosen.net