idnits 2.17.00 (12 Aug 2021) /tmp/idnits36751/draft-qiang-coms-netslicing-information-model-02.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 : ---------------------------------------------------------------------------- ** There are 2 instances of too long lines in the document, the longest one being 6 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 176 has weird spacing: '...nit-ref com...' == Line 178 has weird spacing: '...nit-ref sto...' == Line 180 has weird spacing: '...nce-ref ser...' == Line 232 has weird spacing: '...nit-ref com...' == Line 234 has weird spacing: '...nit-ref sto...' == (7 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (January 26, 2018) is 1569 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Outdated reference: A later version (-04) exists of draft-geng-coms-problem-statement-00 Summary: 1 error (**), 0 flaws (~~), 9 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 none L. Qiang 3 Internet-Draft Huawei 4 Intended status: Informational A. Galis 5 Expires: July 30, 2018 University College London 6 L. Geng 7 China Mobile 8 K. Makhijani 9 Huawei 10 P. Martinez-Julia 11 NICT 12 H. Flinck 13 Nokia 14 X. de Foy 15 InterDigital Inc. 16 January 26, 2018 18 Technology Independent Information Model for Network Slicing 19 draft-qiang-coms-netslicing-information-model-02 21 Abstract 23 This document provides a technology independent information model for 24 transport network slicing. 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 https://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 July 30, 2018. 43 Copyright Notice 45 Copyright (c) 2018 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 (https://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. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 61 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 62 3. Network Slice Tree Structure . . . . . . . . . . . . . . . . 4 63 3.1. resources . . . . . . . . . . . . . . . . . . . . . . . . 5 64 3.1.1. nodes . . . . . . . . . . . . . . . . . . . . . . . . 6 65 3.1.2. links . . . . . . . . . . . . . . . . . . . . . . . . 7 66 3.1.3. storage-units . . . . . . . . . . . . . . . . . . . . 8 67 3.1.4. compute-units . . . . . . . . . . . . . . . . . . . . 9 68 3.2. generalized-function-block . . . . . . . . . . . . . . . 9 69 3.3. slice-level-attributes . . . . . . . . . . . . . . . . . 10 70 4. Operations . . . . . . . . . . . . . . . . . . . . . . . . . 13 71 5. Yang Module . . . . . . . . . . . . . . . . . . . . . . . . . 14 72 6. Security Considerations . . . . . . . . . . . . . . . . . . . 27 73 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 74 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 75 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 76 9.1. Normative References . . . . . . . . . . . . . . . . . . 27 77 9.2. Informative References . . . . . . . . . . . . . . . . . 27 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 80 1. Introduction 82 Network slicing is a tool to share network resources and to offer 83 customized network architectures for diverse use cases that share the 84 same underlying infrastructure [NGMN-NS-Framework]. Customers may 85 not be familiar with underlying networking technologies, and 86 therefore may prefer to interface with network slices in a 87 technology-agnostic way. On the other hand, service providers may 88 have multiple candidate technologies for supporting network slicing. 89 As shown in Figure 1, there is a gap between technology-agnostic 90 network slicing service requirements and specific implementation 91 technologies, that needs to be filled by a technology independent 92 information model. Such a technology independent information model 93 describes the entities that compose a network slice, their 94 properties, attributes and operations, and the way they relate to 95 each other of an end to end network slice that may span across 96 multiple technology domains. It is independent of any specific 97 repository, software usage, protocol, or platform, hence supports 98 common operations and management of network slices. 100 +-----------+ +-----------+ 101 |NS Tenant/ +---------------+NS Provider| 102 |Customer | Service | | 103 +-----------+ Model +------+----+ 104 | 105 |Service Delivery 106 |Model 107 | 108 +------------------+---------------+ 109 | NS Management System | 110 | | 111 | **************************** +----------+ 112 | *Technology Independent NS * | | 113 | * Information Model * | Device 114 | **************************** |Configuration 115 | | Model 116 +--------+-------------------+-----+ | 117 | | | 118 Network Configuration Model | 119 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~|~~~ 120 Available NS Activation |Technologies | | 121 | | | 122 +-----------------------+-+ +------------+------------+ | 123 |Controller/Orchestrator/ | |Controller/Orchestrator/ | | 124 |Manager of Implementation| |Manager of Implementation| | 125 |Technology A | |Technology B | .|... 126 +---------------+---------+ +-------------+-----------+ | 127 | | | 128 | Device Configuration Model | | 129 | | | 130 +---------------+----------------------------+---------------+-+ 131 | | 132 | Underlying Network Resources/Functions | 133 | | 134 +--------------------------------------------------------------+ 136 Figure 1: Technology Independent NS Information Model 138 mapping to specific technology is out of scope. 140 2. Terminology 142 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 143 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 144 document are to be interpreted as described in [RFC2119]. 146 Other network slicing related terminology used in this document are 147 interpreted as description in [COMS-PS]. 149 3. Network Slice Tree Structure 151 The YANG data modeling language [RFC7950] will be used to represent 152 the transport network slicedata model. Moreover,the data model for 153 network topologies developed in [draft-ietf-i2rs-yang-network-topo] 154 will be used as a base. 156 The proposed NS information model includes the following elements: 157 connectivity resources, storage resources, compute resources, service 158 instance based on predefined function blocks, network slice level 159 attributes, etc. It is presented as a tree structure of attributes. 160 The Yang language is used to represent the network slice information 161 model. The following tree shows an overview of the tree structure. 162 New attributes proposed in this draft are in the "netslice:" 163 namespace, while other attributes are defined in 164 [draft-ietf-i2rs-yang-network-topo]. 166 module: ietf-network 167 +--rw networks 168 +--rw network* [network-id] 169 +--rw network-id network-id 170 +--rw network-types 171 +--rw supporting-network* [network-ref] 172 | +--rw network-ref 173 +--rw node* [node-id] 174 | +--... 175 | +--rw netslice:compute-unit* [compute-unit-ref] 176 | | +--rw netslice:compute-unit-ref compute-unit-ref 177 | +--rw netslice:storage-unit* [storage-unit-ref] 178 | | +--rw netslice:storage-unit-ref storage-unit-ref 179 | +--rw netslice:service-instance* [service-instance-ref] 180 | +--rw netslice:service-instance-ref service-instance-ref 181 +--rw nt:link* [link-id] 182 | +--... 183 | +--rw netslice:link-qos 184 | +--... 185 +--rw netslice:compute-unit* [compute-unit-id] 186 | +--... 187 +--rw netslice:storage-unit* [storage-unit-id] 188 | +--... 189 +--rw netslice:service-instance* [service-instance-id] 190 | +--... 191 +--rw netslice:slice-level-attributes 192 +--... 194 3.1. resources 196 Basic resources are used to construct a network slice. Resources 197 comprise: nodes, links, compute units and storage units. 199 Different resources can exist independently, they can also be bound 200 together when necessary. For example, bind a storage unit to a 201 connectivity node. 203 A whole network attribute can represent a network slice instance. 204 The network slice instance "supporting network" list can include 205 underlying networks which are used to implement the network slice. 207 In this model, nodes and links will represent virtual nodes and links 208 exposed to the slice user. 210 The network-id attribute will represent a network slice instance ID. 212 3.1.1. nodes 214 +--rw node* [node-id] 215 | +--rw node-id node-id 216 | +--rw supporting-node* [network-ref node-ref] 217 | | +--rw network-ref 218 | | +--rw node-ref 219 | +--rw nt:termination-point* [tp-id] 220 | | +--rw nt:tp-id tp-id 221 | | +--rw nt:supporting-termination-point* 222 [network-ref node-ref tp-ref] 223 | | | +--rw nt:network-ref 224 | | | +--rw nt:node-ref 225 | | | +--rw nt:tp-ref 226 | | +--rw netslice:packet-rate? int64 227 | | +--rw netslice:packet-loss-probability? int64 228 | | +--rw netslice:packet-loss-threshold? int64 229 | | +--rw netslice:received-packets? int64 230 | | +--rw netslice:sent-packets? int64 231 | +--rw netslice:compute-unit* [compute-unit-ref] 232 | | +--rw netslice:compute-unit-ref compute-unit-ref 233 | +--rw netslice:storage-unit* [storage-unit-ref] 234 | | +--rw netslice:storage-unit-ref storage-unit-ref 235 | +--rw netslice:service-instance* [service-instance-ref] 236 | +--rw netslice:service-instance-ref service-instance-ref 238 Nodes are defined in [draft-ietf-i2rs-yang-network-topo]. 240 Nodes are augmented with the following attributes, that used to 241 represent requirements, configuration and statistics associated with 242 a termination point: 244 packet-rate: the packet forwarding capability of a port for this node 245 in the unit of pps (packet per second). 247 packet-loss-probability: a statistical value which reflects the 248 probability of packet loss. 250 packet-loss-threshold: a threshold of the packet loss probability. 251 If the value of packet-loss-probability is larger than packet-loss- 252 threshold, should actively notify the management system. 254 received-packets: a statistical value which reflects the number of 255 received packets in a period of time. 257 sent-packets: a statistical value which reflects the number of sent 258 packets in a period of time. 260 3.1.2. links 262 +--rw nt:link* [link-id] 263 | +--rw nt:link-id link-id 264 | +--rw nt:source 265 | | +--rw nt:source-node? 266 | | +--rw nt:source-tp? 267 | +--rw nt:destination 268 | | +--rw nt:dest-node? 269 | | +--rw nt:dest-tp? 270 | +--rw nt:supporting-link* [network-ref link-ref] 271 | | +--rw nt:network-ref 272 | | +--rw nt:link-ref 273 | +--rw netslice:link-qos 274 | +--rw netslice:link-bandwidth-agreement? int64 275 | +--rw netslice:link-throughput? int64 276 | +--rw netslice:link-throughput-threshold? int64 277 | +--rw netslice:link-latency-agreement? int64 278 | +--rw netslice:link-latency? int64 279 | +--rw netslice:link-jitter-agreement? int64 280 | +--rw netslice:link-jitter? int64 281 | +--rw netslice:link-jitter-threshold? int64 282 | +--rw netslice:mandatory-node* [node-ref] 283 | | +--rw netslice:node-ref node-ref 284 | +--rw netslice:mandatory-link* [link-ref] 285 | | +--rw netslice:link-ref link-ref 286 | +--rw netslice:excluded-node* [node-ref] 287 | | +--rw netslice:node-ref node-ref 288 | +--rw netslice:excluded-link* [link-ref] 289 | +--rw netslice:link-ref link-ref 291 Links are defined in [draft-ietf-i2rs-yang-network-topo]. 293 Links are associated with nodes through termination points placed 294 under nodes. Links are augmented with QoS information as follows: 296 link-bandwidth-agreement: specify the bandwidth requirement for this 297 link. If this parameter does not be set specifically, then the link 298 will be constructed according to the default bandwidth value provided 299 by management plane. 301 link-throughput: the current throughput of this link. 303 link-throughput-threshold: a threshold for link throughput. If the 304 value of link-throughput is smaller than link-throughput-threshold, 305 should actively notify the management system. 307 link-latency-agreement: specify the latency requirement for this 308 link. If this parameter does not be set specifically, then the link 309 will be constructed according to the default latency agreement 310 provided by management plane. 312 link-latency: the current latency of this link. 314 link-jitter-agreement: specify the jitter requirement for this link. 315 If this parameter does not be set specifically, then the link will be 316 constructed according to the default jitter agreement provided by 317 management plane. 319 link-jitter: the current jitter of this link. 321 link-jitter-threshold: a threshold for link jitter. If the value of 322 link-jitter is larger than link-jitter-threshold, should actively 323 notify the management system. 325 mandatory-node/link: a list of underlying nodes/links that must be 326 passed by the mapped physical path of this link. 328 exclusive-node/link: a list of underlying nodes/links that cannot be 329 traversed by the mapped physical path of this link. 331 3.1.3. storage-units 333 +--rw netslice:storage-unit* [storage-unit-id] 334 | +--rw netslice:storage-unit-id inet:uri 335 | +--rw netslice:size? int64 336 | +--rw netslice:access-rate int32 337 | +--rw netslice:access-mode? access-qualifier 338 | +--rw netslice:read-write-mode-type? read-write-mode-type 339 | +--rw netslice:redundancy-type? redundancy-type 340 | +--rw netslice:location? string 342 size: size of the storage unit in MB. 344 access-rate: the minimum rate to write/read 8KB files into/from the 345 storage unit. 347 access-mode: there are two options include public or dedicated. 349 read-write-mode: there are two options include read only, and read & 350 write. 352 redundancy-type: there are four options include best efforts (i.e, no 353 redundancy), n+1 (n storage units with one extra backup), 2n (each 354 storage unit has one backup), 2n+1 (n storage units with n+1 extra 355 backup). 357 location: a string describing the location of the storage unit. 359 3.1.4. compute-units 361 +--rw netslice:compute-unit* [compute-unit-id] 362 | +--rw netslice:compute-unit-id inet:uri 363 | +--rw netslice:num-cores? int8 364 | +--rw netslice:ram? int64 365 | +--rw netslice:access-mode? access-mode-type 366 | +--rw netslice:location? string 367 | +--rw netslice:unit-type compute-unit-type 369 num-cores: the number of arithmetic logic unit. 371 ram: RAM in bytes. 373 access-mode: there are two options include shared or dedicated. 375 location: a string describing the location of the compute unit. 377 unit-type: two types of compute unit include GPU or CPU 379 3.2. generalized-function-block 380 +--rw netslice:service-instance* [service-instance-id] 381 | +--rw netslice:service-instance-id inet:uri 382 | +--rw netslice:domain-agent 383 | | +--rw netslice:agent-name? string 384 | | +--rw netslice:sb-ip-address? string 385 | | +--rw netslice:sb-port? string 386 | | +--rw netslice:nb-ip-address string 387 | | +--rw netslice:nb-port? string 388 | +--rw netslice:load-balancer [element-id] 389 | | +--rw element-id inet:uri 390 | | +--rw nt:termination-point* [tp-id] 391 | | | +--rw nt:tp-id tp-id 392 | | | +--rw nt:supporting-termination-point* 393 [network-ref node-ref tp-ref] 394 | | | | +--rw nt:network-ref 395 | | | | +--rw nt:node-ref 396 | | | | +--rw nt:tp-ref 397 | | | +--rw netslice:packet-rate? int64 398 | | | +--rw netslice:packet-loss-probability? int64 399 | | | +--rw netslice:packet-loss-threshold? int64 400 | | | +--rw netslice:received-packets? int64 401 | | | +--rw netslice:sent-packets? int64 402 | | +--rw netslice:lb-name? string 403 | | +--rw netslice:ip-address? string 404 | | +--rw netslice:port? string 406 Some general features could be packaged into function blocks in 407 advance, such as agent, firewall, load balancer, etc. 409 3.3. slice-level-attributes 411 +--rw netslice:slice-level-attributes 412 +--rw netslice:service-time-start? yang:date-and-time 413 +--rw netslice:service-time-end? yang:date-and-time 414 +--rw netslice:lifecycle-status? lifecycle-status-type 415 +--rw netslice:access-control 416 | +--rw netslice:match? string 417 | +--rw netslice:action? string 418 | +--rw netslice:priority? string 419 | +--rw netslice:counter? int64 420 +--rw netslice:reliability-level? reliability-level-type 421 +--rw netslice:resource-reservation-level? 422 resource-reservation-level-type 423 +--rw netslice:availability? int64 424 +--rw netslice:availability-threshold? string 426 The slice-level-attributes refers to a set of attributes applicable 427 to a network slice. Some explanations are provided as follows for 428 easy going: 430 service-time-start/end: specify the time during which the network 431 slice service exists (e.g., three months, one year). 433 lifecycle-status: specify the status of the network slice, there are 434 four enumeration values: construction, modification, activation and 435 deletion. 437 access-control: illustrates each role can take what kind of 438 operations on the network slice. 440 reliability-level: the ability of a network slice to be in a stable 441 state. In this document, the main method to achieve reliability is 442 "backup". If necessary, other methods also can be extended based on 443 the current definition. The detailed definition of Reliability_Level 444 is provided in Table 1. 446 resource-reservation-level: classify different resource reservation 447 levels of a network slice. This attribute is related to the slice 448 isolation but is not strictly bound. The detailed definition is 449 provided in Table 2. 451 availability: a statistical value which reflects the probability for 452 a network slice instance to work with expected SLA in a period of 453 time (e.g., 99.999% of time). 455 availability-threshold: a threshold of the availability. If the 456 value of Availability is smaller than Availability_Threshold, should 457 actively notify the management system. 459 +=================================================+===================+ 460 | | | | 461 | Value | Explanation | Note | 462 | | | | 463 +=================================================+===================+ 464 | | | | 465 | none | No specific reliability requirement | The lowest | 466 | | | reliability level | 467 +-----------+-------------------------------------+-------------------+ 468 | | | | 469 |path-backup| Each path has a backup path | Path reliability | 470 | | | | 471 +-----------+-------------------------------------+-------------------+ 472 | | | | 473 | logical- | Each node/link has a backup node/ | Logical resource | 474 | backup | link | reliability | 475 +-----------+-------------------------------------+-------------------+ 476 | | | | 477 | | Each node/link has a backup node/ | Physical resource | 478 | | link, and the primary and backup | reliability | 479 | physical-| nodes/links must be mapped to | | 480 | backup | different physical devices/paths | | 481 | | (the mapped two physical paths | | 482 | | couldn't have any shared device) | | 483 | | | | 484 ==================================================+===================+ 486 Table 1: Explanation of reliability-level 488 +=======+=====================================+=======================+ 489 | | | | 490 | Value | Explanation | Note | 491 | | | | 492 +=======+=====================================+=======================+ 493 | | | | 494 | none | No specific resource reservation |The lowest resource | 495 | | requirement |reservation level, the | 496 | | |network slice instance | 497 | | |will share and compete | 498 | | |for resource with other| 499 | | |network slice instances| 500 | | | | 501 +-------+-------------------------------------+-----------------------+ 502 | | | | 503 |shared-| A certain of resource reservation, |Shared and | 504 |non- | the free reserved resources could be|non-preemptive | 505 |preemp | used by other slice instances, and | | 506 |tive | uable to be retrieved if other slice| | 507 | | instances are usring them | | 508 | | | | 509 +-------+-------------------------------------+-----------------------+ 510 | | | | 511 |shared-| More stringent resouce reservation, |Shared and preemptive | 512 |preemp | the free reserved resources could be| | 513 |tive | used by other slice instances, and | | 514 | | will be retrieved if the network | | 515 | | slice needs them | | 516 | | | | 517 +-------+-------------------------------------+-----------------------+ 518 | | | | 519 |exclus | The reserved resources couldn't be |The highest resource | 520 |ive | used by other slice instances, even |reservartion level, | 521 | | if these resources are free |exclusive | 522 | | | | 523 +=======+=====================================+=======================+ 525 Table 2: Explanation of resource-reservation-level 527 4. Operations 529 The defined information model should be able to support the following 530 operations on network slices. Except for support the operations on a 531 complete network slice, each element insides a network slice also 532 should be able to be operated specifically. 534 o construct: construct a network slice 535 o delete: delete a network slice 537 o modify: modify a constructed network slice 539 o set_element_value: set the value of an indicated element in a 540 network slice 542 o get_element_value: get the value of an indicated element in a 543 network slice 545 o monitor: monitor the status of a network slice 547 o enable_report: enable the active report to the subscribes/ 548 management system when the monitored status changes beyond 549 expectation 551 5. Yang Module 553 module ietf-coms-core { 554 yang-version 1.1; 555 namespace "urn:ietf:params:xml:ns:yang:ietf-coms-core"; 556 prefix netslice; 558 import ietf-yang-types { prefix "yang"; } 559 import ietf-inet-types { prefix inet; } 560 import ietf-network { prefix nd; } 561 import ietf-network-topology { prefix lnk; } 563 organization 564 "IETF"; 566 contact 567 "Editors: X. de Foy, Cristina QIANG 568 "; 570 description 571 "This module contains a collection of YANG definitions for COMS. 573 Copyright (c) 2016 IETF Trust and the persons identified as 574 authors of the code. All rights reserved. 576 Redistribution and use in source and binary forms, with or 577 without modification, is permitted pursuant to, and subject 578 to the license terms contained in, the Simplified BSD License 579 set forth in Section 4.c of the IETF Trust's Legal Provisions 580 Relating to IETF Documents 581 (http://trustee.ietf.org/license-info). 582 This version of this YANG module is part of 583 draft-...; 584 see the RFC itself for full legal notices."; 586 revision "2018-01-26" { 587 description 588 "Initial revision of COMS topology."; 589 reference 590 "draft-qiang-coms-netslicing-information-model-02"; 591 } 593 /* 594 Types 595 */ 597 typedef read-write-mode-type { 598 type enumeration { 599 enum read-write { 600 description "R/W"; 601 } 602 enum read-only { 603 description "R/O"; 604 } 605 } 606 description "Indicates if entity is read-write, 607 read-only, etc."; 608 } 610 typedef access-mode { 611 type enumeration { 612 enum access-mode-public { 613 description "Underlying storage can be 614 shared with other instances"; 615 } 616 enum access-mode-dedicated { 617 description "Underlying storage is not 618 shared with other instances"; 619 } 620 } 621 description "access-mode"; 622 } 624 typedef compute-unit-type { 625 type enumeration { 626 enum compute-unit-cpu { 627 description "Underlying compute unit is CPU based"; 628 } 629 enum compute-unit-gpu { 630 description "Underlying compute unit is GPU based"; 631 } 632 } 633 description "compute-unit-type"; 634 } 636 typedef lifecycle-status-type { 637 type enumeration { 638 enum construction { 639 description "construction"; 640 } 641 enum modification { 642 description "modification"; 643 } 644 enum activation { 645 description "activation"; 646 } 647 enum deletion { 648 description "deletion"; 649 } 650 } 651 description "Lifecycle status"; 652 } 654 typedef resource-reservation-level-type { 655 type enumeration { 656 enum none { 657 description "No specific reliability requirement"; 658 } 659 enum shared-non-preemptive { 660 description "Each path has a backup path"; 661 } 662 enum shared-preemptive { 663 description "Each node/link has a backup node/link"; 664 } 665 enum exclusive { 666 description "Each node/link has a backup node/link, 667 mapped to different physical devices/paths"; 668 } 669 } 670 description "Resource reservation level"; 671 } 673 typedef reliability-level-type { 674 type enumeration { 675 enum none { 676 description "No specific reliability requirement"; 677 } 678 enum path-backup { 679 description "Each path has a backup path"; 680 } 681 enum logical-backup { 682 description "Each node/link has a backup node/link"; 683 } 684 enum physical-backup { 685 description "Each node/link has a backup node/link, 686 mapped to different physical devices/paths"; 687 } 688 } 689 description "Reliability level"; 690 } 692 typedef redundancy-type { 693 type enumeration { 694 enum none { 695 description "no redundancy"; 696 } 697 enum n+1 { 698 description "n storage units with one extra backup"; 699 } 700 enum 2n { 701 description "each storage unit has one backup"; 702 } 703 enum 2n+1 { 704 description "n storage units with n+1 extra backup"; 705 } 706 } 707 description "Redundancy type"; 708 } 710 typedef node-ref { 711 type instance-identifier; 712 description "A reference to a node"; 713 } 715 typedef link-ref { 716 type instance-identifier; 717 description "A reference to a link"; 718 } 720 typedef compute-unit-ref { 721 type instance-identifier; 722 description "A reference to a compute unit"; 723 } 725 typedef storage-unit-ref { 726 type instance-identifier; 727 description "A reference to a storage unit"; 728 } 730 typedef service-instance-ref { 731 type instance-identifier; 732 description "A reference to a service instance"; 733 } 735 grouping rule { 736 description "Access Control Rule"; 737 leaf match{ 738 type string; 739 description "Match"; 740 } 741 leaf action{ 742 type string; 743 description "Action"; 744 } 745 leaf priority{ 746 type string; 747 description "Priority"; 748 } 749 leaf counter{ 750 type int64; 751 description "Counter"; 752 } 753 } 755 grouping port-config { 756 description "Configuration of a port/connection point"; 757 leaf packet-rate { 758 type int64; 759 description "Data rate in packets per seconds"; 760 } 761 leaf packet-loss-probability { 762 type int64; 763 description "Packet loss probability (actual type is TBD)"; 764 } 765 leaf packet-loss-threshold { 766 type int64; 767 description "Packet loss probability threshold to alert 768 management system (actual type is TBD)"; 769 } 770 } 772 grouping port-stats { 773 description "Statistics of a port/connection point"; 774 leaf received-packets { 775 type int64; 776 description "Total number of packets received"; 777 } 778 leaf sent-packets { 779 type int64; 780 description "Total number of packets sent"; 781 } 782 } 784 grouping storage-unit-specs { 785 description "Storage unit specs"; 786 leaf size { 787 type int64; 788 description "storage size in MB"; 789 } 790 leaf access-rate { 791 type int32; 792 description "lower limit of storage access rate"; 793 } 794 leaf access-mode { 795 type access-mode; 796 description "access-mode"; 797 } 798 leaf read-write-mode-type { 799 type read-write-mode-type; 800 description "Read and write mode"; 801 } 802 leaf redundancy-type { 803 type redundancy-type; 804 description "Redundancy type"; 805 } 806 } 808 grouping storage-unit-desc { 809 description "Storage unit description"; 810 leaf storage-unit-id { 811 type inet:uri; 812 description "storage-unit ID"; 813 } 814 uses storage-unit-specs; 815 leaf location { 816 type string; 817 description "Location hint"; 818 } 819 } 821 grouping compute-unit-specs { 822 description "Compute unit specs"; 823 leaf num-cores { 824 type int8; 825 description "Number of CPU Cores"; 826 } 827 leaf ram { 828 type int64; 829 description "RAM in bytes"; 830 } 831 leaf access-mode { 832 type access-mode-type; 833 description "access mode"; 834 } 835 } 837 grouping compute-unit-desc { 838 description "Compute unit description"; 839 leaf compute-unit-id { 840 type inet:uri; 841 description "storage-unit ID"; 842 } 843 uses compute-unit-specs; 844 leaf location { 845 type string; 846 description "Location hint"; 847 } 848 leaf unit-type { 849 type compute-unit-type; 850 description "specify the category of compute unit"; 851 } 852 } 854 grouping path-restrictions { 855 description "Physical path restriction type: nodes and 856 links of underlying networks 857 that must or must not be traversed by a link"; 858 list mandatory-node { 859 key "node-ref"; 860 description "List of mandatory nodes"; 861 leaf node-ref { 862 type node-ref; 863 description "Node"; 864 } 865 } 866 list mandatory-link { 867 key "link-ref"; 868 description "List of mandatory links"; 869 leaf link-ref { 870 type link-ref; 871 description "Link"; 872 } 873 } 874 list excluded-node { 875 key "node-ref"; 876 description "List of excluded nodes"; 877 leaf node-ref { 878 type node-ref; 879 description "Node"; 880 } 881 } 882 list excluded-link { 883 key "link-ref"; 884 description "List of excluded links"; 885 leaf link-ref { 886 type link-ref; 887 description "Link"; 888 } 889 } 890 } 892 grouping link-qos-desc { 893 description "QoS associated with a link"; 894 leaf link-bandwidth-agreement { 895 type int64; 896 description "Link bandwidth agreement"; 897 } 898 leaf link-throughput { 899 type int64; 900 description "Link throughput"; 901 } 902 leaf link-throughput-threshold { 903 type int64; 904 description "Link throughput threshold"; 905 } 906 leaf link-latency-agreement { 907 type int64; 908 description "Link latency agreement"; 909 } 910 leaf link-latency { 911 type int64; 912 description "Link latency"; 913 } 914 leaf link-jitter-agreement { 915 type int64; 916 description "Link jitter agreement"; 917 } 918 leaf link-jitter { 919 type int64; 920 description "Link jitter"; 921 } 922 leaf link-jitter-threshold { 923 type int64; 924 description "Link jitter threshold"; 925 } 926 uses path-restrictions; 927 } 929 grouping slice-level-attributes { 930 description "network slice level attributes"; 931 leaf service-time-start { 932 type yang:date-and-time; 933 description "Start of service"; 934 } 935 leaf service-time-end { 936 type yang:date-and-time; 937 description "End of service"; 938 } 939 leaf lifecycle-status { 940 type lifecycle-status-type; 941 description "Step in the slice lifecycle"; 942 } 943 container access-control { 944 uses rule; 945 description "Control of access to operations per role"; 946 } 947 leaf reliability-level { 948 type reliability-level-type; 949 description "Reliability level"; 950 } 951 leaf resource-reservation-level { 952 type resource-reservation-level-type; 953 description "Resource reservation level"; 954 } 955 leaf availability { 956 type int64; 957 description "Measure of probability to work with 958 expected SLA (TBD: type should be expanded)"; 959 } 960 leaf availability-threshold { 961 type string; 962 description "Availability threshold to actively 963 notify the management system"; 964 } 965 } 966 grouping generalized-function-block { 967 description "generalized function blocks that can be 968 used to create an instance (more funcution blocks TBD)"; 970 container domain-agent { 971 description "a network slice agent to receive manager request"; 972 leaf agent-name { 973 type string; 974 description "agent name"; 975 } 976 leaf sb-ip-address { 977 type string; 978 description "IP Address of the server which for southbound protocols"; 979 } 980 leaf sb-port { 981 type string; 982 description "Port of the server which for southbound protocols"; 983 } 984 leaf nb-ip-address { 985 type string; 986 description "IP Address of the server which for northbound protocols"; 987 } 988 leaf nb-port { 989 type string; 990 description "Port of the server which for northbound protocols"; 991 } 992 } 994 container load-balancer { 995 description "load balancer (type TBD)"; 996 leaf element-id { 997 type inet:uri; 998 description "load balancer element id"; 999 } 1000 list termination-point { 1001 use termination-point-desc; 1002 } 1004 leaf LB-name { 1005 type string; 1006 description "load balancer name"; 1007 } 1008 leaf ip-address { 1009 type string; 1010 description "IP Address of the load balancer (type TBD)"; 1011 } 1012 leaf port { 1013 type string; 1014 description "Port of the load balancer (type TBD)"; 1015 } 1016 } 1017 } 1019 grouping termination-point-desc { 1020 description "Augment network nodes termination points with 1021 port information."; 1023 leaf tp-id { 1024 type tp-id; 1025 description 1026 "Termination point identifier."; 1027 } 1029 list supporting-termination-point { 1030 key "network-ref node-ref tp-ref"; 1031 description 1032 "This list identifies any termination points that 1033 the termination point is dependent on, or maps onto. 1034 Those termination points will themselves be contained 1035 in a supporting node. 1036 This dependency information can be inferred from 1037 the dependencies between links. For this reason, 1038 this item is not separately configurable. Hence no 1039 corresponding constraint needs to be articulated. 1040 The corresponding information is simply provided by the 1041 implementing system."; 1042 leaf network-ref { 1043 type leafref { 1044 path 1045 "../../../nw:supporting-node/nw:network-ref"; 1046 } 1047 description 1048 "This leaf identifies in which topology the 1049 supporting termination point is present."; 1050 } 1052 leaf node-ref { 1053 type leafref { 1054 path 1055 "../../../nw:supporting-node/nw:node-ref"; 1056 } 1057 description 1058 "This leaf identifies in which node the supporting 1059 termination point is present."; 1060 } 1061 leaf tp-ref { 1062 type leafref { 1063 path 1064 "/nw:networks/nw:network[nw:network-id=current()/" 1065 + "../network-ref]/nw:node[nw:node-id=current()/../" 1066 + "node-ref]/termination-point/tp-id"; 1067 } 1068 description 1069 "Reference to the underlay node, must be in a 1070 different topology"; 1071 } 1072 } // list supporting-termination-point 1073 uses port-config; 1074 uses port-stats; 1075 } 1077 grouping service-instance-desc { 1078 description "Service instance description. An instance 1079 is based on a predefined function block"; 1080 leaf service-instance-id { 1081 type inet:uri; 1082 description "service instance ID"; 1083 } 1084 uses generalized-function-block; 1085 } 1087 /* 1088 Model 1089 */ 1091 augment "/nd:networks/nd:network" { 1092 description "Augment network nodes with slice information."; 1093 list compute-unit { 1094 key "compute-unit-id"; 1095 description "Compute units"; 1096 uses compute-unit-desc; 1097 } 1098 list storage-unit { 1099 key "storage-unit-id"; 1100 description "Storage units"; 1101 uses storage-unit-desc; 1102 } 1103 list service-instance { 1104 key "service-instance-id"; 1105 description "Service instance"; 1106 uses service-instance-desc; 1107 } 1108 container slice-level-attributes { 1109 description "Attributes that apply to a whole network slice"; 1110 uses slice-level-attributes; 1111 } 1112 } 1114 augment "/nd:networks/nd:network/nd:node" { 1115 description "Augment network nodes with slice information."; 1116 list compute-unit { 1117 key "compute-unit-ref"; 1118 description "List of compute units present in node"; 1119 leaf compute-unit-ref { 1120 type compute-unit-ref; 1121 description "Compute unit present in node"; 1122 } 1123 } 1124 list storage-unit { 1125 key "storage-unit-ref"; 1126 description "List of storage units present in node"; 1127 leaf storage-unit-ref { 1128 type storage-unit-ref; 1129 description "Storage unit present in node"; 1130 } 1131 } 1132 list service-instance { 1133 key "service-instance-ref"; 1134 description "an instance of a service provided by the node"; 1135 leaf service-instance-ref { 1136 type service-instance-ref; 1137 description "Service instance present in node"; 1138 } 1139 } 1140 } 1142 augment "/nd:networks/nd:network/nd:node/lnk:termination-point" { 1143 description "Augment network nodes termination points with 1144 port information."; 1145 uses port-config; 1146 uses port-stats; 1147 } 1149 augment "/nd:networks/nd:network/lnk:link" { 1150 description "Augment network links with slice information."; 1151 container link-qos { 1152 description "QoS specifications for this link"; 1153 uses link-qos-desc; 1154 } 1155 } 1156 } 1157 1159 6. Security Considerations 1161 Each component of the network slice has its own security 1162 requirements. 1164 7. IANA Considerations 1166 There is no IANA action required by this document. 1168 8. Acknowledgements 1170 Authors would like to acknowledge Guangpeng Li for help coding. 1172 9. References 1174 9.1. Normative References 1176 [draft-ietf-i2rs-yang-network-topo] 1177 "i2rs-yang-network-topo", . 1180 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1181 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1182 . 1184 9.2. Informative References 1186 [COMS-PS] "COMS Problem Statement", . 1189 [NGMN-NS-Framework] 1190 "NGMN Network Slicing Framework", 1191 . 1194 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1195 Requirement Levels", BCP 14, RFC 2119, 1196 DOI 10.17487/RFC2119, March 1997, 1197 . 1199 Authors' Addresses 1201 Li Qiang 1202 Huawei 1204 Email: qiangli3@huawei.com 1205 Alex Galis 1206 University College London 1208 Email: a.galis@ucl.ac.uk 1210 Liang Geng 1211 China Mobile 1213 Email: gengliang@chinamobile.com 1215 Kiran Makhijani 1216 Huawei 1218 Email: Kiran.Makhijani@huawei.com 1220 Pedro Martinez-Julia 1221 NICT 1223 Email: pedro@nict.go.jp 1225 Hannu Flinck 1226 Nokia 1228 Email: hannu.flinck@nokia.com 1230 Xavier de Foy 1231 InterDigital Inc. 1233 Email: Xavier.DeFoy@InterDigital.com