idnits 2.17.1 draft-qiang-coms-netslicing-information-model-01.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 : ---------------------------------------------------------------------------- No issues found here. 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 (October 30, 2017) is 2369 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: 0 errors (**), 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: May 3, 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 October 30, 2017 18 Technology Independent Information Model for Network Slicing 19 draft-qiang-coms-netslicing-information-model-01 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 May 3, 2018. 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 (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 . . . . . . . . . . . . . . . . . 9 70 4. Operations . . . . . . . . . . . . . . . . . . . . . . . . . 12 71 5. Yang Module . . . . . . . . . . . . . . . . . . . . . . . . . 13 72 6. Security Considerations . . . . . . . . . . . . . . . . . . . 24 73 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 74 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 75 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 76 9.1. Normative References . . . . . . . . . . . . . . . . . . 24 77 9.2. Informative References . . . . . . . . . . . . . . . . . 24 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 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 calculated by 299 algorithm. 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 calculated by 310 algorithm. 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 calculated by algorithm. 318 link-jitter: the current jitter of this link. 320 link-jitter-threshold: a threshold for link jitter. If the value of 321 link-jitter is larger than link-jitter-threshold, should actively 322 notify the management system. 324 mandatory-node/link: a list of underlying nodes/links that must be 325 passed by the mapped physical path of this link. 327 exclusive-node/link: a list of underlying nodes/links that cannot be 328 traversed by the mapped physical path of this link. 330 3.1.3. storage-units 332 +--rw netslice:storage-unit* [storage-unit-id] 333 | +--rw netslice:storage-unit-id inet:uri 334 | +--rw netslice:size? int64 335 | +--rw netslice:isolation-mode? isolation-mode-type 336 | +--rw netslice:read-write-mode-type? read-write-mode-type 337 | +--rw netslice:redundancy-type? redundancy-type 338 | +--rw netslice:location? string 340 size: size of the storage unit in M. 342 isolation-mode: two options include shared or dedicated. 344 read-write-mode: there are two options include read only, and read & 345 write. 347 redundancy-type: there are four options include best efforts (i.e, no 348 redundancy), n+1 (n storage units with one extra backup), 2n (each 349 storage unit has one backup), 2n+1 (n storage units with n+1 extra 350 backup). 352 location: a string describing the location of the storage unit. 354 3.1.4. compute-units 356 +--rw netslice:compute-unit* [compute-unit-id] 357 | +--rw netslice:compute-unit-id inet:uri 358 | +--rw netslice:num-cores? int8 359 | +--rw netslice:ram? int64 360 | +--rw netslice:isolation-mode? isolation-mode-type 361 | +--rw netslice:location? string 363 num-cores: the number of arithmetic logic unit. 365 ram: RAM in bytes. 367 isolation-mode: two options include shared or dedicated. 369 location: a string describing the location of the compute unit. 371 3.2. generalized-function-block 373 +--rw netslice:service-instance* [service-instance-id] 374 | +--rw netslice:service-instance-id inet:uri 375 | +--rw netslice:domain-agent 376 | | +--rw netslice:agent-name? string 377 | | +--rw netslice:ip-address? string 378 | | +--rw netslice:port? string 379 | +--rw netslice:load-balancer 380 | +--rw netslice:lb-name? string 381 | +--rw netslice:ip-address? string 382 | +--rw netslice:port? string 384 Some general features could be packaged into function blocks in 385 advance, such as agent, firewall, load balancer, etc. 387 3.3. slice-level-attributes 388 +--rw netslice:slice-level-attributes 389 +--rw netslice:service-time-start? yang:date-and-time 390 +--rw netslice:service-time-end? yang:date-and-time 391 +--rw netslice:lifecycle-status? lifecycle-status-type 392 +--rw netslice:access-control 393 | +--rw netslice:match? string 394 | +--rw netslice:action? string 395 | +--rw netslice:priority? string 396 | +--rw netslice:counter? int64 397 +--rw netslice:reliability-level? reliability-level-type 398 +--rw netslice:resource-reservation-level? 399 resource-reservation-level-type 400 +--rw netslice:availability? int64 401 +--rw netslice:availability-threshold? string 403 The slice-level-attributes refers to a set of attributes applicable 404 to a network slice. Some explanations are provided as follows for 405 easy going: 407 service-time-start/end: specify the time during which the network 408 slice service exists (e.g., three months, one year). 410 lifecycle-status: specify the status of the network slice, there are 411 four enumeration values: construction, modification, activation and 412 deletion. 414 access-control: illustrates each role can take what kind of 415 operations on the network slice. 417 reliability-level: the ability of a network slice to be in a stable 418 state. In this document, the main method to achieve reliability is 419 "backup". If necessary, other methods also can be extended based on 420 the current definition. The detailed definition of Reliability_Level 421 is provided in Table 1. 423 resource-reservation-level: classify different resource reservation 424 levels of a network slice. This attribute is related to the slice 425 isolation but is not strictly bound. The detailed definition is 426 provided in Table 2. 428 availability: a statistical value which reflects the probability for 429 a network slice instance to work with expected SLA in a period of 430 time (e.g., 99.999% of time). 432 availability-threshold: a threshold of the availability. If the 433 value of Availability is smaller than Availability_Threshold, should 434 actively notify the management system. 436 +=================================================+===================+ 437 | | | | 438 | Value | Explanation | Note | 439 | | | | 440 +=================================================+===================+ 441 | | | | 442 | none | No specific reliability requirement | The lowest | 443 | | | reliability level | 444 +-----------+-------------------------------------+-------------------+ 445 | | | | 446 |path-backup| Each path has a backup path | Path reliability | 447 | | | | 448 +-----------+-------------------------------------+-------------------+ 449 | | | | 450 | logical- | Each node/link has a backup node/ | Logical resource | 451 | backup | link | reliability | 452 +-----------+-------------------------------------+-------------------+ 453 | | | | 454 | | Each node/link has a backup node/ | Physical resource | 455 | | link, and the primary and backup | reliability | 456 | physical-| nodes/links must be mapped to | | 457 | backup | different physical devices/paths | | 458 | | (the mapped two physical paths | | 459 | | couldn't have any shared device) | | 460 | | | | 461 ==================================================+===================+ 463 Table 1: Explanation of reliability-level 465 +=======+=====================================+=======================+ 466 | | | | 467 | Value | Explanation | Note | 468 | | | | 469 +=======+=====================================+=======================+ 470 | | | | 471 | none | No specific resource reservation |The lowest resource | 472 | | requirement |reservation level, the | 473 | | |network slice instance | 474 | | |will share and compete | 475 | | |for resource with other| 476 | | |network slice instances| 477 | | | | 478 +-------+-------------------------------------+-----------------------+ 479 | | | | 480 |shared-| A certain of resource reservation, |Shared and | 481 |non- | the free reserved resources could be|non-preemptive | 482 |preemp | used by other slice instances, and | | 483 |tive | uable to be retrieved if other slice| | 484 | | instances are usring them | | 485 | | | | 486 +-------+-------------------------------------+-----------------------+ 487 | | | | 488 |shared-| More stringent resouce reservation, |Shared and preemptive | 489 |preemp | the free reserved resources could be| | 490 |tive | used by other slice instances, and | | 491 | | will be retrieved if the network | | 492 | | slice needs them | | 493 | | | | 494 +-------+-------------------------------------+-----------------------+ 495 | | | | 496 |exclus | The reserved resources couldn't be |The highest resource | 497 |ive | used by other slice instances, even |reservartion level, | 498 | | if these resources are free |exclusive | 499 | | | | 500 +=======+=====================================+=======================+ 502 Table 2: Explanation of resource-reservation-level 504 4. Operations 506 The defined information model should be able to support the following 507 operations on network slices. Except for support the operations on a 508 complete network slice, each element insides a network slice also 509 should be able to be operated specifically. 511 o construct: construct a network slice 512 o delete: delete a network slice 514 o modify: modify a constructed network slice 516 o set_element_value: set the value of an indicated element in a 517 network slice 519 o get_element_value: get the value of an indicated element in a 520 network slice 522 o monitor: monitor the status of a network slice 524 o enable_report: enable the active report to the subscribes/ 525 management system when the monitored status changes beyond 526 expectation 528 5. Yang Module 530 file "ietf-coms-core@2017-10-28.yang" 531 module ietf-coms-core { 532 yang-version 1.1; 533 namespace "urn:ietf:params:xml:ns:yang:ietf-coms-core"; 534 prefix netslice; 536 import ietf-yang-types { prefix "yang"; } 537 import ietf-inet-types { prefix inet; } 538 import ietf-network { prefix nd; } 539 import ietf-network-topology { prefix lnk; } 541 organization 542 "IETF"; 544 contact 545 "Editors: X. de Foy, Cristina QIANG 546 "; 548 description 549 "This module contains a collection of YANG definitions for COMS. 551 Copyright (c) 2016 IETF Trust and the persons identified as 552 authors of the code. All rights reserved. 554 Redistribution and use in source and binary forms, with or 555 without modification, is permitted pursuant to, and subject 556 to the license terms contained in, the Simplified BSD License 557 set forth in Section 4.c of the IETF Trust's Legal Provisions 558 Relating to IETF Documents 559 (http://trustee.ietf.org/license-info). 560 This version of this YANG module is part of 561 draft-...; 562 see the RFC itself for full legal notices."; 564 revision "2017-10-27" { 565 description 566 "Initial revision of COMS topology."; 567 reference 568 "draft-qiang-coms-netslicing-information-model-02"; 569 } 571 /* 572 Types 573 */ 575 typedef read-write-mode-type { 576 type enumeration { 577 enum read-write { 578 description "R/W"; 579 } 580 enum read-only { 581 description "R/O"; 582 } 583 } 584 description "Indicates if entity is read-write, 585 read-only, etc."; 586 } 588 typedef isolation-mode-type { 589 type enumeration { 590 enum isolation-mode-shared { 591 description "Underlying compute or storage can be 592 shared with other instances"; 593 } 594 enum isolation-mode-dedicated { 595 description "Underlying compute or storage is not 596 shared with other instances"; 597 } 598 } 599 description "Isolation mode"; 600 } 602 typedef lifecycle-status-type { 603 type enumeration { 604 enum construction { 605 description "construction"; 606 } 607 enum modification { 608 description "modification"; 609 } 610 enum activation { 611 description "activation"; 612 } 613 enum deletion { 614 description "deletion"; 615 } 616 } 617 description "Lifecycle status"; 618 } 620 typedef resource-reservation-level-type { 621 type enumeration { 622 enum none { 623 description "No specific reliability requirement"; 624 } 625 enum shared-non-preemptive { 626 description "Each path has a backup path"; 627 } 628 enum shared-preemptive { 629 description "Each node/link has a backup node/link"; 630 } 631 enum exclusive { 632 description "Each node/link has a backup node/link, 633 mapped to different physical devices/paths"; 634 } 635 } 636 description "Resource reservation level"; 637 } 639 typedef reliability-level-type { 640 type enumeration { 641 enum none { 642 description "No specific reliability requirement"; 643 } 644 enum path-backup { 645 description "Each path has a backup path"; 646 } 647 enum logical-backup { 648 description "Each node/link has a backup node/link"; 649 } 650 enum physical-backup { 651 description "Each node/link has a backup node/link, 652 mapped to different physical devices/paths"; 653 } 654 } 655 description "Reliability level"; 657 } 659 typedef redundancy-type { 660 type enumeration { 661 enum none { 662 description "no redundancy"; 663 } 664 enum n+1 { 665 description "n storage units with one extra backup"; 666 } 667 enum 2n { 668 description "each storage unit has one backup"; 669 } 670 enum 2n+1 { 671 description "n storage units with n+1 extra backup"; 672 } 673 } 674 description "Redundancy type"; 675 } 677 typedef node-ref { 678 type instance-identifier; 679 description "A reference to a node"; 680 } 682 typedef link-ref { 683 type instance-identifier; 684 description "A reference to a link"; 685 } 687 typedef compute-unit-ref { 688 type instance-identifier; 689 description "A reference to a compute unit"; 690 } 692 typedef storage-unit-ref { 693 type instance-identifier; 694 description "A reference to a storage unit"; 695 } 697 typedef service-instance-ref { 698 type instance-identifier; 699 description "A reference to a service instance"; 700 } 702 grouping rule { 703 description "Access Control Rule"; 704 leaf match{ 705 type string; 706 description "Match"; 707 } 708 leaf action{ 709 type string; 710 description "Action"; 711 } 712 leaf priority{ 713 type string; 714 description "Priority"; 715 } 716 leaf counter{ 717 type int64; 718 description "Counter"; 719 } 720 } 722 grouping port-config { 723 description "Configuration of a port/connection point"; 724 leaf packet-rate { 725 type int64; 726 description "Data rate in packets per seconds"; 727 } 728 leaf packet-loss-probability { 729 type int64; 730 description "Packet loss probability (actual type is TBD)"; 731 } 732 leaf packet-loss-threshold { 733 type int64; 734 description "Packet loss probability threshold to alert 735 management system (actual type is TBD)"; 736 } 737 } 739 grouping port-stats { 740 description "Statistics of a port/connection point"; 741 leaf received-packets { 742 type int64; 743 description "Total number of packets received"; 744 } 745 leaf sent-packets { 746 type int64; 747 description "Total number of packets sent"; 748 } 749 } 751 grouping storage-unit-specs { 752 description "Storage unit specs"; 753 leaf size { 754 type int64; 755 description "storage size in M"; 756 } 757 leaf isolation-mode { 758 type isolation-mode-type; 759 description "isolation mode"; 760 } 761 leaf read-write-mode-type { 762 type read-write-mode-type; 763 description "Read and write mode"; 764 } 765 leaf redundancy-type { 766 type redundancy-type; 767 description "Redundancy type"; 768 } 769 } 771 grouping storage-unit-desc { 772 description "Storage unit description"; 773 leaf storage-unit-id { 774 type inet:uri; 775 description "storage-unit ID"; 776 } 777 uses storage-unit-specs; 778 leaf location { 779 type string; 780 description "Location hint"; 781 } 782 } 784 grouping compute-unit-specs { 785 description "Compute unit specs"; 786 leaf num-cores { 787 type int8; 788 description "Number of CPU Cores"; 789 } 790 leaf ram { 791 type int64; 792 description "RAM in bytes"; 793 } 794 leaf isolation-mode { 795 type isolation-mode-type; 796 description "isolation mode"; 797 } 798 } 800 grouping compute-unit-desc { 801 description "Compute unit description"; 802 leaf compute-unit-id { 803 type inet:uri; 804 description "storage-unit ID"; 805 } 806 uses compute-unit-specs; 807 leaf location { 808 type string; 809 description "Location hint"; 810 } 811 } 813 grouping path-restrictions { 814 description "Physical path restriction type: nodes and 815 links of underlying networks 816 that must or must not be traversed by a link"; 817 list mandatory-node { 818 key "node-ref"; 819 description "List of mandatory nodes"; 820 leaf node-ref { 821 type node-ref; 822 description "Node"; 823 } 824 } 825 list mandatory-link { 826 key "link-ref"; 827 description "List of mandatory links"; 828 leaf link-ref { 829 type link-ref; 830 description "Link"; 831 } 832 } 833 list excluded-node { 834 key "node-ref"; 835 description "List of excluded nodes"; 836 leaf node-ref { 837 type node-ref; 838 description "Node"; 839 } 840 } 841 list excluded-link { 842 key "link-ref"; 843 description "List of excluded links"; 844 leaf link-ref { 845 type link-ref; 846 description "Link"; 847 } 848 } 850 } 852 grouping link-qos-desc { 853 description "QoS associated with a link"; 854 leaf link-bandwidth-agreement { 855 type int64; 856 description "Link bandwidth agreement"; 857 } 858 leaf link-throughput { 859 type int64; 860 description "Link throughput"; 861 } 862 leaf link-throughput-threshold { 863 type int64; 864 description "Link throughput threshold"; 865 } 866 leaf link-latency-agreement { 867 type int64; 868 description "Link latency agreement"; 869 } 870 leaf link-latency { 871 type int64; 872 description "Link latency"; 873 } 874 leaf link-jitter-agreement { 875 type int64; 876 description "Link jitter agreement"; 877 } 878 leaf link-jitter { 879 type int64; 880 description "Link jitter"; 881 } 882 leaf link-jitter-threshold { 883 type int64; 884 description "Link jitter threshold"; 885 } 886 uses path-restrictions; 887 } 889 grouping slice-level-attributes { 890 description "network slice level attributes"; 891 leaf service-time-start { 892 type yang:date-and-time; 893 description "Start of service"; 894 } 895 leaf service-time-end { 896 type yang:date-and-time; 897 description "End of service"; 899 } 900 leaf lifecycle-status { 901 type lifecycle-status-type; 902 description "Step in the slice lifecycle"; 903 } 904 container access-control { 905 uses rule; 906 description "Control of access to operations per role"; 907 } 908 leaf reliability-level { 909 type reliability-level-type; 910 description "Reliability level"; 911 } 912 leaf resource-reservation-level { 913 type resource-reservation-level-type; 914 description "Resource reservation level"; 915 } 916 leaf availability { 917 type int64; 918 description "Measure of probability to work with 919 expected SLA (TBD: type should be expanded)"; 920 } 921 leaf availability-threshold { 922 type string; 923 description "Availability threshold to actively 924 notify the management system"; 925 } 926 } 928 grouping generalized-function-block { 929 description "generalized function blocks that can be 930 used to create an instance (more funcution blocks TBD)"; 932 container domain-agent { 933 description "a network slice agent to receive manager request"; 934 leaf agent-name { 935 type string; 936 description "agent name"; 937 } 938 leaf ip-address { 939 type string; 940 description "IP Address of the server (type TBD)"; 941 } 942 leaf port { 943 type string; 944 description "Port of the server (type TBD)"; 945 } 946 } 947 container load-balancer { 948 description "load balancer (type TBD)"; 949 leaf LB-name { 950 type string; 951 description "load balancer name"; 952 } 953 leaf ip-address { 954 type string; 955 description "IP Address of the load balancer (type TBD)"; 956 } 957 leaf port { 958 type string; 959 description "Port of the load balancer (type TBD)"; 960 } 961 } 963 } 965 grouping service-instance-desc { 966 description "Service instance description. An instance 967 is based on a predefined function block"; 968 leaf service-instance-id { 969 type inet:uri; 970 description "service instance ID"; 971 } 972 uses generalized-function-block; 973 } 975 /* 976 Model 977 */ 979 augment "/nd:networks/nd:network" { 980 description "Augment network nodes with slice information."; 981 list compute-unit { 982 key "compute-unit-id"; 983 description "Compute units"; 984 uses compute-unit-desc; 985 } 986 list storage-unit { 987 key "storage-unit-id"; 988 description "Storage units"; 989 uses storage-unit-desc; 990 } 991 list service-instance { 992 key "service-instance-id"; 993 description "Service instance"; 994 uses service-instance-desc; 996 } 997 container slice-level-attributes { 998 description "Attributes that apply to a whole network slice"; 999 uses slice-level-attributes; 1000 } 1001 } 1003 augment "/nd:networks/nd:network/nd:node" { 1004 description "Augment network nodes with slice information."; 1005 list compute-unit { 1006 key "compute-unit-ref"; 1007 description "List of compute units present in node"; 1008 leaf compute-unit-ref { 1009 type compute-unit-ref; 1010 description "Compute unit present in node"; 1011 } 1012 } 1013 list storage-unit { 1014 key "storage-unit-ref"; 1015 description "List of storage units present in node"; 1016 leaf storage-unit-ref { 1017 type storage-unit-ref; 1018 description "Storage unit present in node"; 1019 } 1020 } 1021 list service-instance { 1022 key "service-instance-ref"; 1023 description "an instance of a service provided by the node"; 1024 leaf service-instance-ref { 1025 type service-instance-ref; 1026 description "Service instance present in node"; 1027 } 1028 } 1029 } 1031 augment "/nd:networks/nd:network/nd:node/lnk:termination-point" { 1032 description "Augment network nodes termination points with 1033 port information."; 1034 uses port-config; 1035 uses port-stats; 1036 } 1038 augment "/nd:networks/nd:network/lnk:link" { 1039 description "Augment network links with slice information."; 1040 container link-qos { 1041 description "QoS specifications for this link"; 1042 uses link-qos-desc; 1043 } 1045 } 1046 } 1048 1050 6. Security Considerations 1052 Each component of the network slice has its own security 1053 requirements. 1055 7. IANA Considerations 1057 There is no IANA action required by this document. 1059 8. Acknowledgements 1061 TBD 1063 9. References 1065 9.1. Normative References 1067 [draft-ietf-i2rs-yang-network-topo] 1068 "i2rs-yang-network-topo", . 1071 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1072 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1073 . 1075 9.2. Informative References 1077 [COMS-PS] "COMS Problem Statement", . 1080 [NGMN-NS-Framework] 1081 "NGMN Network Slicing Framework", 1082 . 1085 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1086 Requirement Levels", BCP 14, RFC 2119, 1087 DOI 10.17487/RFC2119, March 1997, 1088 . 1090 Authors' Addresses 1092 Li Qiang 1093 Huawei 1095 Email: qiangli3@huawei.com 1097 Alex Galis 1098 University College London 1100 Email: a.galis@ucl.ac.uk 1102 Liang Geng 1103 China Mobile 1105 Email: gengliang@chinamobile.com 1107 Kiran Makhijani 1108 Huawei 1110 Email: Kiran.Makhijani@huawei.com 1112 Pedro Martinez-Julia 1113 NICT 1115 Email: pedro@nict.go.jp 1117 Hannu Flinck 1118 Nokia 1120 Email: hannu.flinck@nokia.com 1122 Xavier de Foy 1123 InterDigital Inc. 1125 Email: Xavier.DeFoy@InterDigital.com