| < draft-shi-alto-yang-model-02.txt | draft-shi-alto-yang-model-03.txt > | |||
|---|---|---|---|---|
| ALTO Working Group X. Shi | ALTO Working Group X. Shi | |||
| Internet-Draft Yale University | Internet-Draft Yale University | |||
| Intended status: Informational Y. Yang | Intended status: Informational Y. Yang | |||
| Expires: September 10, 2015 Tongji/Yale University | Expires: September 24, 2015 Tongji/Yale University | |||
| M. Scharf | M. Scharf | |||
| Alcatel-Lucent Bell Labs | Alcatel-Lucent Bell Labs | |||
| March 9, 2015 | March 23, 2015 | |||
| A YANG Data Model for Base ALTO Data | A YANG Data Model for Base ALTO Data | |||
| draft-shi-alto-yang-model-02 | draft-shi-alto-yang-model-03 | |||
| Abstract | Abstract | |||
| This document defines a YANG model for the base ALTO information | This document defines a YANG model for the base ALTO information | |||
| resources defined in [RFC7285]. In particular, the introduction of | resources defined in [RFC7285]. In particular, the introduction of | |||
| this model allows a standard approach to provision and update ALTO | this model allows a standard approach to provision and update ALTO | |||
| state stored at an ALTO server. | state stored at an ALTO server. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on September 10, 2015. | This Internet-Draft will expire on September 24, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 4, line 44 ¶ | skipping to change at page 4, line 44 ¶ | |||
| | +--rw map* [pid] | | +--rw map* [pid] | |||
| | +--rw pid alto:pid-name | | +--rw pid alto:pid-name | |||
| | +--rw endpoint-address-group* [address-type] | | +--rw endpoint-address-group* [address-type] | |||
| | +--rw address-type endpoint-address-type | | +--rw address-type endpoint-address-type | |||
| | +--rw endpoint-prefix* endpoint-prefix | | +--rw endpoint-prefix* endpoint-prefix | |||
| +--rw cost-maps | +--rw cost-maps | |||
| | +--rw cost-map* [resource-id] | | +--rw cost-map* [resource-id] | |||
| | +--rw resource-id alto:resource-id | | +--rw resource-id alto:resource-id | |||
| | +--rw tag alto:tag-string | | +--rw tag alto:tag-string | |||
| | +--rw meta | | +--rw meta | |||
| | | +--rw dependent-vtags* | | | +--rw dependent-vtags* [resource-id tag] | |||
| | | | +--rw resource-id resource-id | | | | +--rw resource-id resource-id | |||
| | | | +--rw tag tag-string | | | | +--rw tag tag-string | |||
| | | +--rw cost-type | | | +--rw cost-type | |||
| | | +--rw cost-mode cost-mode | | | +--rw cost-mode cost-mode | |||
| | | +--rw cost-metric cost-metric | | | +--rw cost-metric cost-metric | |||
| | | +--rw description? string | | | +--rw description? string | |||
| | +--rw map* [src] | | +--rw map* [src] | |||
| | +--rw src alto:pid-name | | +--rw src alto:pid-name | |||
| | +--rw dst-costs* [dst] | | +--rw dst-costs* [dst] | |||
| | +--rw dst alto:pid-name | | +--rw dst alto:pid-name | |||
| | +--rw cost | | +--rw cost | |||
| +--rw endpoint-property-map | +--rw endpoint-property-map | |||
| +--rw meta | +--rw meta | |||
| | +--rw dependent-vtags* | | +--rw dependent-vtags* [resource-id tag] | |||
| | +--rw resource-id resource-id | | +--rw resource-id resource-id | |||
| | +--rw tag tag-string | | +--rw tag tag-string | |||
| +--rw endpoint-properties* [endpoint] | +--rw endpoint-properties* [endpoint] | |||
| +--rw endpoint typed-endpoint-address | +--rw endpoint typed-endpoint-address | |||
| +--rw properties* [property-type] | +--rw properties* [property-type] | |||
| +--rw property-type endpoint-property-type | +--rw property-type endpoint-property-type | |||
| +--rw property endpoint-property-value | +--rw property endpoint-property-value | |||
| Figure 2: Tree Diagram of ALTO YANG Model. | Figure 2: Tree Diagram of ALTO YANG Model. | |||
| skipping to change at page 10, line 9 ¶ | skipping to change at page 10, line 9 ¶ | |||
| [draft-shi-alto-yang-json] | [draft-shi-alto-yang-json] | |||
| Shi, X. and Y. Yang, "Modeling JSON Messages Using YANG", | Shi, X. and Y. Yang, "Modeling JSON Messages Using YANG", | |||
| draft-shi-alto-yang-json-00 (work in progress), October | draft-shi-alto-yang-json-00 (work in progress), October | |||
| 2014. | 2014. | |||
| Appendix A. YANG Data Model for ALTO Protocol | Appendix A. YANG Data Model for ALTO Protocol | |||
| A.1. ALTO/YANG: Common Data Types | A.1. ALTO/YANG: Common Data Types | |||
| <CODE BEGINS> file "alto-service-types@2015-03-22.yang" | ||||
| module alto-service-types { | module alto-service-types { | |||
| yang-version 1; | yang-version 1; | |||
| namespace "urn:ietf:params:xml:ns:yang:alto-service-types"; | namespace "urn:ietf:params:xml:ns:yang:alto-service-types"; | |||
| // TODO: replace with IANA namespace when assigned | // TODO: replace with IANA namespace when assigned | |||
| prefix "alto"; | prefix "alto"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| organization "ALTO WG"; | organization "ALTO WG"; | |||
| contact "alto@ietf.org"; | contact "alto@ietf.org"; | |||
| description | description | |||
| "This module defines the data types and groupings for a semantically | "This module defines the data types and groupings for a semantically | |||
| equivalent data model for the ALTO services defined in RFC7285."; | equivalent data model for the ALTO services defined in RFC7285."; | |||
| revision 2015-03-22 { | ||||
| description "IETF92 revision."; | ||||
| } | ||||
| revision 2014-11-01 { | revision 2014-11-01 { | |||
| description "Separate types module"; | description "Separate types module"; | |||
| } | } | |||
| revision 2014-10-24 { | revision 2014-10-24 { | |||
| description "Initial version."; | description "Initial version."; | |||
| } | } | |||
| /******************** | /******************** | |||
| * TYPE DEFINITIONS * | * TYPE DEFINITIONS * | |||
| skipping to change at page 24, line 4 ¶ | skipping to change at page 24, line 8 ¶ | |||
| mandatory true; | mandatory true; | |||
| } | } | |||
| leaf property { | leaf property { | |||
| type endpoint-property-value; | type endpoint-property-value; | |||
| mandatory true; | mandatory true; | |||
| } | } | |||
| description | description | |||
| "EndpointProps. RFC7285 Sec. 11.4.1.6." + | "EndpointProps. RFC7285 Sec. 11.4.1.6." + | |||
| " object { | " object { | |||
| EndpointPropertyType -> JSONValue; | EndpointPropertyType -> JSONValue; | |||
| } EndpointProps;"; | } EndpointProps;"; | |||
| } | } | |||
| description | description | |||
| "EndpointPropertyMapData. Sec. 11.4.1.6." + | "EndpointPropertyMapData. Sec. 11.4.1.6." + | |||
| " object-map { | " object-map { | |||
| TypedEndpointAddr -> EndpointProps; | TypedEndpointAddr -> EndpointProps; | |||
| } EndpointPropertyMapData;"; | } EndpointPropertyMapData;"; | |||
| } | } | |||
| description | description | |||
| "InfoResourceEndpointProperties. Sec. 11.4.1.6." + | "InfoResourceEndpointProperties. Sec. 11.4.1.6." + | |||
| " object { | " object { | |||
| EndpointPropertyMapData endpoint-properties; | EndpointPropertyMapData endpoint-properties; | |||
| } InfoResourceEndpointProperties : ResponseEntityBase;"; | } InfoResourceEndpointProperties : ResponseEntityBase;"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | ||||
| Figure 3: ALTO/YANG Common Types. | Figure 3: ALTO/YANG Common Types. | |||
| A.2. ALTO/YANG Model | A.2. ALTO/YANG Model | |||
| <CODE BEGINS> file "alto-service@2015-03-22.yang" | ||||
| module alto-service { | module alto-service { | |||
| yang-version 1; | yang-version 1; | |||
| namespace "urn:ietf:params:xml:ns:yang:alto-service"; | namespace "urn:ietf:params:xml:ns:yang:alto-service"; | |||
| // TODO: replace with IANA namespace when assigned | // TODO: replace with IANA namespace when assigned | |||
| prefix "as"; | prefix "as"; | |||
| import alto-service-types { | import alto-service-types { | |||
| prefix alto; | prefix alto; | |||
| } | } | |||
| organization "ALTO WG"; | organization "ALTO WG"; | |||
| contact "alto@ietf.org"; | contact "alto@ietf.org"; | |||
| description | description | |||
| "This module defines a semantically equivalent data model | "This module defines a semantically equivalent data model | |||
| for the ALTO services defined in RFC7285."; | for the ALTO services defined in RFC7285."; | |||
| revision 2015-03-03 { | revision 2015-03-22 { | |||
| description "Revise according to IETF91."; | description "Revise according to IETF91."; | |||
| } | } | |||
| revision 2014-11-01 { | revision 2014-11-01 { | |||
| description "Inherit from alto-service-types."; | description "Inherit from alto-service-types."; | |||
| } | } | |||
| revision 2014-10-24 { | revision 2014-10-24 { | |||
| description "Initial version."; | description "Initial version."; | |||
| } | } | |||
| /****************************************** | /****************************************** | |||
| Groupings for ALTO information resource | Groupings for ALTO information resource | |||
| *******************************************/ | *******************************************/ | |||
| grouping network-map-data { | grouping network-map-data { | |||
| list map { | list map { | |||
| skipping to change at page 25, line 48 ¶ | skipping to change at page 26, line 4 ¶ | |||
| type alto:pid-name; | type alto:pid-name; | |||
| } | } | |||
| key "src"; | key "src"; | |||
| list dst-costs { | list dst-costs { | |||
| leaf dst { | leaf dst { | |||
| type alto:pid-name; | type alto:pid-name; | |||
| } | } | |||
| key "dst"; | key "dst"; | |||
| uses alto:alto-cost; | uses alto:alto-cost; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* Cost Map Grouping */ | /* Cost Map Grouping */ | |||
| grouping cost-map { | grouping cost-map { | |||
| leaf resource-id { | leaf resource-id { | |||
| type alto:resource-id; | type alto:resource-id; | |||
| mandatory true; | mandatory true; | |||
| } | } | |||
| leaf tag { | leaf tag { | |||
| type alto:tag-string; | type alto:tag-string; | |||
| mandatory true; //TODO: sx: mandatory tag? tag manager? | mandatory true; | |||
| } | } | |||
| container meta { | container meta { | |||
| must "current()"; | must "current()"; | |||
| uses alto:cost-map-meta; | uses alto:cost-map-meta; | |||
| } | } | |||
| uses cost-map-data; | uses cost-map-data; | |||
| } | } | |||
| grouping alto-resources { | grouping alto-resources { | |||
| container IRD { | container IRD { | |||
| skipping to change at page 27, line 4 ¶ | skipping to change at page 27, line 8 ¶ | |||
| } | } | |||
| /**************************************************** | /**************************************************** | |||
| DATA INSTANCES of all ALTO information resources | DATA INSTANCES of all ALTO information resources | |||
| unfiltered network-maps, unfiltered cost-maps are all instances | unfiltered network-maps, unfiltered cost-maps are all instances | |||
| of resources. IRD is also modeled as data. | of resources. IRD is also modeled as data. | |||
| The design uses augment as the basic approach to implement | The design uses augment as the basic approach to implement | |||
| inheritance. | inheritance. | |||
| ****************************************************/ | ****************************************************/ | |||
| container resources { | container resources { | |||
| uses alto-resources; | uses alto-resources; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | ||||
| Figure 4: ALTO YANG Model. | Figure 4: ALTO YANG Model. | |||
| Appendix B. Using NETCONF to Read ALTO/YANG Information | Appendix B. Using NETCONF to Read ALTO/YANG Information | |||
| NETCONF has provided two RPCs to retrieve data: the <get> operation | NETCONF has provided two RPCs to retrieve data: the <get> operation | |||
| and the <get-config> operation. The <get> operation can be used to | and the <get-config> operation. The <get> operation can be used to | |||
| retrieve both configuration data and state data, whereas the <get- | retrieve both configuration data and state data, whereas the <get- | |||
| config> operation is used to retrieve only configuration data. Since | config> operation is used to retrieve only configuration data. Since | |||
| state data is read-only, in the current design, we model ALTO | state data is read-only, in the current design, we model ALTO | |||
| End of changes. 18 change blocks. | ||||
| 11 lines changed or deleted | 18 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||