idnits 2.17.1 draft-vassilev-netmod-network-bridge-00.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 271 has weird spacing: '...address yan...' == Line 274 has weird spacing: '...address yan...' == Line 277 has weird spacing: '...rw type eth...' == Line 290 has weird spacing: '...address yan...' == Line 293 has weird spacing: '...address yan...' == (6 more instances...) -- The document date (July 14, 2018) is 2111 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) == Unused Reference: 'RFC3688' is defined on line 1314, but no explicit reference was found in the text == Unused Reference: 'RFC6241' is defined on line 1317, but no explicit reference was found in the text == Unused Reference: 'RFC6991' is defined on line 1321, but no explicit reference was found in the text == Unused Reference: 'XSD' is defined on line 1332, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'OpenFlow' -- Possible downref: Non-RFC (?) normative reference: ref. 'XSD' Summary: 0 errors (**), 0 flaws (~~), 11 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group V. Vassilev 3 Internet-Draft Transpacket 4 Intended status: Standards Track July 14, 2018 5 Expires: January 15, 2019 7 A YANG Data Model for Network Bridge Management 8 draft-vassilev-netmod-network-bridge-00 10 Abstract 12 This document introduces new YANG model of a network bridge. 14 Status of This Memo 16 This Internet-Draft is submitted in full conformance with the 17 provisions of BCP 78 and BCP 79. 19 Internet-Drafts are working documents of the Internet Engineering 20 Task Force (IETF). Note that other groups may also distribute 21 working documents as Internet-Drafts. The list of current Internet- 22 Drafts is at https://datatracker.ietf.org/drafts/current/. 24 Internet-Drafts are draft documents valid for a maximum of six months 25 and may be updated, replaced, or obsoleted by other documents at any 26 time. It is inappropriate to use Internet-Drafts as reference 27 material or to cite them other than as "work in progress." 29 This Internet-Draft will expire on January 15, 2019. 31 Copyright Notice 33 Copyright (c) 2018 IETF Trust and the persons identified as the 34 document authors. All rights reserved. 36 This document is subject to BCP 78 and the IETF Trust's Legal 37 Provisions Relating to IETF Documents 38 (https://trustee.ietf.org/license-info) in effect on the date of 39 publication of this document. Please review these documents 40 carefully, as they describe your rights and restrictions with respect 41 to this document. Code Components extracted from this document must 42 include Simplified BSD License text as described in Section 4.e of 43 the Trust Legal Provisions and are provided without warranty as 44 described in the Simplified BSD License. 46 Table of Contents 48 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 49 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 50 1.1.1. YANG . . . . . . . . . . . . . . . . . . . . . . . . 2 51 1.1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . 3 52 1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 3 53 1.3. Solution . . . . . . . . . . . . . . . . . . . . . . . . 3 54 1.3.1. Forwarding . . . . . . . . . . . . . . . . . . . . . 3 55 1.3.2. Scheduling . . . . . . . . . . . . . . . . . . . . . 4 56 2. Network Bridge Module Tree Diagram . . . . . . . . . . . . . 6 57 3. Network Bridge Flows Module Tree Diagram . . . . . . . . . . 6 58 4. Network Bridge Scheduler Module Tree Diagram . . . . . . . . 9 59 5. Network Bridge Module YANG . . . . . . . . . . . . . . . . . 11 60 6. Network Bridge Flows Module YANG . . . . . . . . . . . . . . 12 61 7. Network Bridge Scheduler Module YANG . . . . . . . . . . . . 19 62 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 63 8.1. NETWORK BRIDGE YANG Modules . . . . . . . . . . . . . . . 27 64 9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 65 10. Normative References . . . . . . . . . . . . . . . . . . . . 28 66 Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 29 67 A.1. Model . . . . . . . . . . . . . . . . . . . . . . . . . . 29 68 A.2. Scheduler diagram . . . . . . . . . . . . . . . . . . . . 31 69 A.3. Topology . . . . . . . . . . . . . . . . . . . . . . . . 32 70 A.4. CLI listing . . . . . . . . . . . . . . . . . . . . . . . 32 71 A.5. Configuration Data Instance . . . . . . . . . . . . . . . 34 72 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 44 74 1. Introduction 76 There is a need for a YANG model for management of network bridges. 77 The model should allow the variety of existing forwarding and 78 scheduling technologies to be defined as interoperable modules that 79 can be interconnected and extended. 81 1.1. Terminology 83 The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 84 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 85 "OPTIONAL" in this document are to be interpreted as described in BCP 86 14, [RFC2119]. 88 1.1.1. YANG 90 The following terms are defined in [RFC7950]: 92 o must statement 93 o augment statement 95 o context node 97 o container 99 o data node 101 o key leaf 103 o leaf 105 o leaf-list 107 o list 109 1.1.2. Tree Diagrams 111 Tree diagrams used in this document follow the notation defined in 112 [RFC8340]. 114 1.2. Problem Statement 116 This document attempts to address the problem of defining YANG model 117 of a network bridge that can be used as common framework by different 118 forwarding and scheduling implementations. 120 1.3. Solution 122 A Network bridge has more then 1 ingress and 1 or more egress ports. 123 It has 1 or more traffic classes. The proposed model splits the 124 design into 2 components - 1) Forwarding component and 2) Scheduling 125 component. The forwarding component is connected to all ingress 126 ports and forwards traffic from them to the scheduler instances 127 connected to the egress ports. The scheduling component is a set of 128 scheduler instances - topologies of interconnected aggregators and 129 filters connected to a single egress port and as many as 130 ingress_ports_count*traffic_class_count datapaths from the forwarding 131 component. 133 1.3.1. Forwarding 135 The simple idea of creating a YANG model for a subset of the original 136 [OpenFlow] specification is used as base for the model for management 137 of the Forwarding Information Base (FIB) of the bridge. 139 1.3.2. Scheduling 141 The scheduler(s) have 1 or more input datapaths and 1 output. To 142 each datapath the forwarding component can forward flows. Many 143 different scheduler implementations have structure based on common 144 modular abstractions flow meters, delay lines, queues, gates and gate 145 control logic that determines the gate states based on variables 146 defined in the flow meter, the delay line or the queue or signals and 147 timers available to the gate control logic algorithm. The concept is 148 illustrated with the following model of a 2 ingress ports, 2 traffic 149 classes implementation of a 2 class strict priority scheduling 150 bridge: 152 ingress0 ingress1 153 V V 154 | | 155 +------------------------------+ 156 | FIB | 157 | class0 class1 | 158 | 0->0 1->0 0->0 1->0 | 159 +------------------------------+ 160 | | | | 161 {M} {M} {M} {M} 162 | | | | 163 \ / \ / 164 \ / \ / 165 +-------+ +-------+ 166 | Queue | | Queue | 167 |=======| |=======| 168 |=======| |=======| 169 |=======| |=======| 170 |=======| |=======| 171 +-------+ +-------+ 172 | | 173 G0 G1 174 +-----------------------------+ 175 | C | 176 | strict-priority | 177 +-----------------------------+ 178 | 179 V 180 egress* 182 The common structure of a scheduler module (S) consisting of topology 183 of consecutive flow-meters (M), gates (G) connected to a common gate 184 control - (C) with a single egress port. A new module type 185 representing delay line (D) is added to the structure of the 186 scheduler before Q. The delay line (D) is important for time- 187 sensitive scheduler models where propagation delays, store-and- 188 forward delays and even programmable delays in some cases need to be 189 represented. For certain time sensitive applications it is important 190 to differentiate between different ports due to rate conversion, 191 store and forward and other factors influencing the behavior of the 192 bridge. This is why the concept of a port class is introduced in the 193 model. 195 v v 196 | | 197 {M0} {Mn} 198 | | 199 +---+ +---+ 200 | D | | D | 201 | e | | e | 202 | l | | l | 203 | a | | a | 204 | y | | y | 205 +---+ +---+ 206 | | 207 +-----+ +-----+ 208 | Q0 | | Qn | 209 |=====| |=====| 210 |=====| ... |=====| 211 |=====| |=====| 212 |=====| |=====| 213 +-----+ +-----+ 214 | | 215 G0 Gn 216 +--------------------+ 217 | C | 218 +--------------------+ 219 | 220 v 222 Depending on the scheduler design the ingress flows can specify 223 different D and Q parameters e.g. D.time=0 means no delay, Q.len=0 224 means no buffering and immediate drop of packets in case the gate is 225 closed. With the submodules collapsed to an integral generic gate 226 controller module (GC) the diagram becomes much simpler. 228 ingress0 ingress1 229 V V 230 | | 231 +------------------------------+ 232 | FIB | 233 | class0 class1 | 234 | 0->0 1->0 0->0 1->0 | 235 +------------------------------+ 236 | | | | 237 +-----------------------------+ 238 | GC | 239 +-----------------------------+ 240 | 241 V 242 egress0 244 Complex scheduler designs exist that can combine several different 245 gate controllers into complex topology. This concept is demonstrated 246 in the example bridge. 248 2. Network Bridge Module Tree Diagram 250 module: ietf-network-bridge 251 +--rw bridge 252 +--rw ports 253 +--rw port* [name] 254 +--rw name string 255 +--rw index? uint64 257 augment /if:interfaces/if:interface: 258 +--rw port-name? -> /bridge/ports/port/name 260 3. Network Bridge Flows Module Tree Diagram 262 module: ietf-network-bridge-flows 263 +--rw packet-in-message 264 | +--rw packet-in-reason? identityref 265 | +--rw ingress? netbr:port-ref 266 | +--rw payload? binary 267 | +--rw match 268 | +--rw in-port? netbr:port-ref 269 | +--rw ethernet-match 270 | | +--rw ethernet-source! 271 | | | +--rw address yang:mac-address 272 | | | +--rw mask? yang:mac-address 273 | | +--rw ethernet-destination! 274 | | | +--rw address yang:mac-address 275 | | | +--rw mask? yang:mac-address 276 | | +--rw ethernet-type! 277 | | +--rw type ether-type 278 | +--rw vlan-match 279 | +--rw vlan-id! 280 | | +--rw vlan-id-present? boolean 281 | | +--rw vlan-id? vlan-id 282 | +--rw vlan-pcp? vlan-pcp 283 +--rw flows 284 +--rw flow* [id] 285 +--rw id flow-id 286 +--rw match 287 | +--rw in-port? netbr:port-ref 288 | +--rw ethernet-match 289 | | +--rw ethernet-source! 290 | | | +--rw address yang:mac-address 291 | | | +--rw mask? yang:mac-address 292 | | +--rw ethernet-destination! 293 | | | +--rw address yang:mac-address 294 | | | +--rw mask? yang:mac-address 295 | | +--rw ethernet-type! 296 | | +--rw type ether-type 297 | +--rw vlan-match 298 | +--rw vlan-id! 299 | | +--rw vlan-id-present? boolean 300 | | +--rw vlan-id? vlan-id 301 | +--rw vlan-pcp? vlan-pcp 302 +--rw actions 303 | +--rw action* [order] 304 | +--rw order int32 305 | +--(action)? 306 | +--:(output-action-case) 307 | | +--rw output-action 308 | | +--rw out-port? netbr:port-ref 309 | | +--rw max-length? uint16 310 | +--:(controller-action-case) 311 | | +--rw controller-action 312 | | +--rw max-length? uint16 313 | +--:(drop-action-case) 314 | | +--rw drop-action! 315 | +--:(pop-vlan-action-case) 316 | | +--rw pop-vlan-action! 317 | +--:(push-vlan-action-case) 318 | | +--rw push-vlan-action 319 | | +--rw ethernet-type? uint16 320 | | +--rw tag? int32 321 | | +--rw pcp? int32 322 | | +--rw cfi? vlan-cfi 323 | | +--rw vlan-id? vlan-id 324 | +--:(set-vlan-cfi-action-case) 325 | | +--rw set-vlan-cfi-action 326 | | +--rw vlan-cfi? vlan-cfi 327 | +--:(set-vlan-id-action-case) 328 | | +--rw set-vlan-id-action 329 | | +--rw vlan-id? vlan-id 330 | +--:(set-vlan-pcp-action-case) 331 | | +--rw set-vlan-pcp-action 332 | | +--rw vlan-pcp? vlan-pcp 333 | +--:(strip-vlan-action-case) 334 | +--rw strip-vlan-action! 335 +--rw priority? uint16 336 +--rw container-name? string 337 +--rw flow-name? string 339 rpcs: 340 +---x transmit-packet 341 +---w input 342 +---w egress? netbr:port-ref 343 +---w ingress? netbr:port-ref 344 +---w payload? binary 345 +---w action* [order] 346 +---w order int32 347 +--(action)? 348 +--:(output-action-case) 349 | +---w output-action 350 | +---w out-port? netbr:port-ref 351 | +---w max-length? uint16 352 +--:(controller-action-case) 353 | +---w controller-action 354 | +---w max-length? uint16 355 +--:(drop-action-case) 356 | +---w drop-action! 357 +--:(pop-vlan-action-case) 358 | +---w pop-vlan-action! 359 +--:(push-vlan-action-case) 360 | +---w push-vlan-action 361 | +---w ethernet-type? uint16 362 | +---w tag? int32 363 | +---w pcp? int32 364 | +---w cfi? vlan-cfi 365 | +---w vlan-id? vlan-id 366 +--:(set-vlan-cfi-action-case) 367 | +---w set-vlan-cfi-action 368 | +---w vlan-cfi? vlan-cfi 369 +--:(set-vlan-id-action-case) 370 | +---w set-vlan-id-action 371 | +---w vlan-id? vlan-id 372 +--:(set-vlan-pcp-action-case) 373 | +---w set-vlan-pcp-action 374 | +---w vlan-pcp? vlan-pcp 375 +--:(strip-vlan-action-case) 376 +---w strip-vlan-action! 378 notifications: 379 +---n packet-received 380 +--ro packet-in-reason? identityref 381 +--ro ingress? netbr:port-ref 382 +--ro payload? binary 383 +--ro match 384 +--ro in-port? netbr:port-ref 385 +--ro ethernet-match 386 | +--ro ethernet-source! 387 | | +--ro address yang:mac-address 388 | | +--ro mask? yang:mac-address 389 | +--ro ethernet-destination! 390 | | +--ro address yang:mac-address 391 | | +--ro mask? yang:mac-address 392 | +--ro ethernet-type! 393 | +--ro type ether-type 394 +--ro vlan-match 395 +--ro vlan-id! 396 | +--ro vlan-id-present? boolean 397 | +--ro vlan-id? vlan-id 398 +--ro vlan-pcp? vlan-pcp 400 4. Network Bridge Scheduler Module Tree Diagram 402 module: ietf-network-bridge-scheduler 403 augment /flow:flows/flow:flow: 404 +--rw traffic-class? 405 -> /netbr:bridge/sched:traffic-classes/traffic-class 406 augment /netbr:bridge/netbr:ports/netbr:port: 407 +--rw class? port-class-ref 408 +--rw class-instance-index? uint32 409 augment /netbr:bridge: 410 +--rw default-traffic-class? traffic-class-ref 411 +--rw default-port-class? traffic-class-ref 412 +--rw traffic-classes 413 | +--rw traffic-class* identityref 414 +--rw port-classes 415 +--rw port-class* identityref 416 augment /if:interfaces/if:interface: 417 +--rw scheduler 418 +--rw gate-controllers 419 +--rw gate-controller* [id type] 420 +--rw id string 421 +--rw type identityref 422 +--rw inputs 423 | +--rw input* [class index] 424 | +--rw class identityref 425 | +--rw index uint32 426 | +--ro queued-pkts? uint64 427 | +--ro queued-bytes? uint64 428 | +--ro discards? uint64 429 | +--ro overflow-discards? uint64 430 | +--ro error-discards? uint64 431 +--rw input-classes 432 +--rw input-class* [class] 433 +--rw class identityref 434 +--ro queued-pkts? uint64 435 +--ro queued-bytes? uint64 436 +--ro discards? uint64 437 +--ro overflow-discards? uint64 438 +--ro error-discards? uint64 439 augment /netbr:bridge: 440 +--rw scheduler-classes 441 +--rw scheduler-class* [egress-port-class] 442 +--rw egress-port-class sched:port-class-ref 443 +--rw inputs 444 | +--rw input* [traffic-class ingress-port-class] 445 | +--rw traffic-class traffic-class-ref 446 | +--rw ingress-port-class port-class-ref 447 | +--rw gate-controller? leafref 448 | +--rw input-class? leafref 449 | +--rw base-index? uint32 450 +--rw gate-controllers 451 +--rw gate-controller* [id] 452 +--rw id string 453 +--rw type identityref 454 +--rw inputs 455 | +--rw input* [class] 456 | +--rw class identityref 457 | +--rw instance-count? uint32 458 | +--rw constant-propagation-delay? uint64 459 | +--rw configurable-delay-line? uint64 460 | +--rw queue-len? uint32 461 +--rw output 462 +--rw gate-controller? 463 | -> ../../../gate-controller/id 464 +--rw input-class? leafref 465 +--rw index? uint32 467 5. Network Bridge Module YANG 469 file "ietf-network-bridge@2018-07-15.yang" 471 module ietf-network-bridge { 472 namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge"; 473 prefix netbr; 475 import ietf-interfaces { 476 prefix if; 477 } 479 organization 480 "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; 481 contact 482 "WG Web: 483 WG List: 485 Editor: Vladimir Vassilev 486 "; 487 description 488 "This module contains a collection of YANG definitions for 489 description and management of network bridges. 491 Copyright (c) 2015 IETF Trust and the persons identified as 492 authors of the code. All rights reserved. 494 Redistribution and use in source and binary forms, with or 495 without modification, is permitted pursuant to, and subject 496 to the license terms contained in, the Simplified BSD License 497 set forth in Section 4.c of the IETF Trust's Legal Provisions 498 Relating to IETF Documents 499 (http://trustee.ietf.org/license-info). 501 This version of this YANG module is part of RFC XXXX; see 502 the RFC itself for full legal notices."; 504 revision 2018-07-15 { 505 description 506 "Initial revision."; 507 reference "RFC XXXX: Network Bridge"; 508 } 510 container bridge { 511 container ports { 512 list port { 513 key "name"; 514 unique "index"; 515 leaf name { 516 type string; 517 } 518 leaf index { 519 type uint64; 520 } 521 } 522 } 523 } 524 augment "/if:interfaces/if:interface" { 525 leaf port-name { 526 type leafref { 527 path "/netbr:bridge/netbr:ports/netbr:port/netbr:name"; 528 } 529 } 530 } 532 typedef port-ref { 533 type leafref { 534 path "/if:interfaces/if:interface/netbr:port-name"; 535 } 536 description 537 "This type is used by data models that need to reference 538 configured bridge ports."; 539 } 540 } 542 544 6. Network Bridge Flows Module YANG 546 file "ietf-network-bridge-flows@2018-07-15.yang" 548 module ietf-network-bridge-flows { 549 namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge-flows"; 550 prefix flow; 552 import ietf-network-bridge { 553 prefix netbr; 554 } 555 import ietf-inet-types { 556 prefix inet; 557 revision-date 2013-07-15; 558 } 559 import ietf-yang-types { 560 prefix yang; 561 revision-date 2013-07-15; 562 } 563 organization 564 "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; 565 contact 566 "WG Web: 567 WG List: 569 Editor: Vladimir Vassilev 570 "; 572 description 573 "This module contains a collection of YANG definitions for 574 description and management of network bridge based on 575 flows."; 577 revision 2018-07-15 { 578 description 579 "Unreleased revision."; 580 reference "RFC XXXX: Network Bridge"; 581 } 583 typedef vlan-cfi { 584 type int32; 585 } 587 grouping address { 588 choice address { 589 case ipv4 { 590 leaf ipv4-address { 591 type inet:ipv4-prefix; 592 } 593 } 594 case ipv6 { 595 leaf ipv6-address { 596 type inet:ipv6-prefix; 597 } 598 } 599 } 600 } 602 grouping ordered { 603 leaf order { 604 type int32; 605 } 606 } 608 grouping action-list { 609 list action { 610 key "order"; 611 uses ordered; 612 uses action; 613 } 614 } 616 grouping action { 617 choice action { 618 case output-action-case { 619 container output-action { 620 leaf out-port { 621 type netbr:port-ref; 622 } 623 leaf max-length { 624 type uint16; 625 } 626 } 627 } 628 case controller-action-case { 629 container controller-action { 630 leaf max-length { 631 type uint16; 632 } 633 } 634 } 635 case drop-action-case { 636 container drop-action { 637 presence "no content action"; 638 } 639 } 640 case pop-vlan-action-case { 641 container pop-vlan-action { 642 presence "no content action"; 643 } 644 } 645 case push-vlan-action-case { 646 container push-vlan-action { 647 leaf ethernet-type { 648 type uint16; 649 } 650 leaf tag { 651 type int32; 652 } 653 leaf pcp { 654 type int32; 655 } 656 leaf cfi { 657 type vlan-cfi; 658 } 659 leaf vlan-id { 660 type vlan-id; 661 } 662 } 663 } 664 case set-vlan-cfi-action-case { 665 container set-vlan-cfi-action { 666 leaf vlan-cfi { 667 type vlan-cfi; 668 } 669 } 670 } 671 case set-vlan-id-action-case { 672 container set-vlan-id-action { 673 leaf vlan-id { 674 type vlan-id; 675 } 676 } 677 } 678 case set-vlan-pcp-action-case { 679 container set-vlan-pcp-action { 680 leaf vlan-pcp { 681 type vlan-pcp; 682 } 683 } 684 } 685 case strip-vlan-action-case { 686 container strip-vlan-action { 687 presence "no content action"; 688 } 689 } 690 } 691 } 693 typedef vlan-pcp { 694 description 695 "IEEE 802.1p priority. It indicates the frame priority level. 696 Values are from 0 (best effort) to 7 (highest); 697 1 represents the lowest priority."; 698 type uint8 { 699 range "0..7"; 700 } 701 } 703 typedef vlan-id { 704 type uint16 { 705 range "0..4095"; 706 } 708 } 710 typedef ether-type { 711 type uint32; 712 } 714 grouping mac-address-filter { 715 leaf address { 716 mandatory true; 717 type yang:mac-address; 718 } 719 leaf mask { 720 type yang:mac-address; 721 } 722 } 724 grouping ethernet-match-fields { 725 container ethernet-source { 726 description 727 "Ethernet source address."; 728 presence "Match field is active and set"; 729 uses mac-address-filter; 730 } 731 container ethernet-destination { 732 description 733 "Ethernet destination address."; 734 presence "Match field is active and set"; 735 uses mac-address-filter; 736 } 737 container ethernet-type { 738 description 739 "Ethernet frame type."; 740 presence "Match field is active and set"; 741 leaf type { 742 mandatory true; 743 type ether-type; 744 } 745 } 746 } 748 grouping vlan-match-fields { 749 container vlan-id { 750 description 751 "VLAN id."; 752 presence "Match field is active and set"; 753 leaf vlan-id-present { 754 type boolean; 755 } 756 leaf vlan-id { 757 type vlan-id; 758 } 759 } 760 leaf vlan-pcp { 761 description 762 "VLAN priority."; 763 type vlan-pcp; 764 } 765 } 767 grouping match { 768 leaf in-port { 769 type netbr:port-ref; 770 } 771 container ethernet-match { 772 uses ethernet-match-fields; 773 } 774 container vlan-match { 775 uses vlan-match-fields; 776 } 777 } 779 grouping raw-packet { 780 description 781 "Basic packet structure."; 782 leaf ingress { 783 type netbr:port-ref; 784 } 785 leaf payload { 786 type binary; 787 } 788 } 790 grouping packet-in { 791 leaf packet-in-reason { 792 type identityref { 793 base packet-in-reason; 794 } 795 } 796 uses raw-packet; 797 } 799 grouping ethernet-packet { 800 description 801 "Ethernet packet headers structure."; 802 leaf source { 803 type yang:mac-address; 805 } 806 leaf destination { 807 type yang:mac-address; 808 } 809 } 811 identity packet-in-reason { 812 description 813 "Base identity for all the available packet in reasons."; 814 } 816 identity no-match { 817 base packet-in-reason; 818 description 819 "No matching flow in the classifier"; 820 } 822 identity send-to-controller { 823 base packet-in-reason; 824 description 825 "Explicit instruction to send packet to controller"; 826 } 828 identity invalid-ttl { 829 base packet-in-reason; 830 description 831 "Packet with invalid TTL"; 832 } 834 notification packet-received { 835 description 836 "Delivery of incoming packet."; 837 uses packet-in; 838 container match { 839 uses match; 840 } 841 } 842 rpc transmit-packet { 843 description 844 "Sending packet out."; 845 input { 846 leaf egress { 847 type netbr:port-ref; 848 } 849 uses raw-packet; 850 uses action-list; 851 } 852 } 853 container packet-in-message { 854 uses packet-in; 855 container match { 856 uses match; 857 } 858 } 860 grouping flow { 861 container match { 862 uses match; 863 } 864 container actions { 865 uses action-list; 866 } 867 leaf priority { 868 type uint16; 869 } 870 leaf container-name { 871 type string; 872 } 873 leaf flow-name { 874 type string; 875 } 876 } 878 typedef flow-id { 879 type inet:uri; 880 } 882 container flows { 883 list flow { 884 key "id"; 885 leaf id { 886 type flow-id; 887 } 888 uses flow; 889 } 890 } 891 } 893 895 7. Network Bridge Scheduler Module YANG 897 file "ietf-network-bridge-scheduler@2018-07-15.yang" 899 module ietf-network-bridge-scheduler { 900 namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge-scheduler"; 901 prefix sched; 903 import ietf-network-bridge { 904 prefix netbr; 905 } 906 import ietf-network-bridge-flows { 907 prefix flow; 908 } 909 import ietf-interfaces { 910 prefix if; 911 } 913 organization 914 "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; 915 contact 916 "WG Web: 917 WG List: 919 Editor: Vladimir Vassilev 920 "; 921 description 922 "This module contains a collection of YANG definitions for 923 description and management of network bridge schedulers. 925 Copyright (c) 2015 IETF Trust and the persons identified as 926 authors of the code. All rights reserved. 928 Redistribution and use in source and binary forms, with or 929 without modification, is permitted pursuant to, and subject 930 to the license terms contained in, the Simplified BSD License 931 set forth in Section 4.c of the IETF Trust's Legal Provisions 932 Relating to IETF Documents 933 (http://trustee.ietf.org/license-info). 935 This version of this YANG module is part of RFC XXXX; see 936 the RFC itself for full legal notices."; 938 revision 2018-07-15 { 939 description 940 "Initial revision."; 941 reference "RFC XXXX: Network Bridge"; 942 } 944 identity gate-controller { 945 description 946 "Represents the gate control block type e.g. round-robin, 947 priority-based, time-aware-802dot1qbv etc."; 948 } 949 identity aggregator { 950 base gate-controller; 951 description 952 "Abstract identity that all gate control blocks with multiple 953 inputs and single output use as basetype e.g. round-robin, 954 priority-based, time-aware-802dot1qbv etc."; 955 } 957 identity filter { 958 base gate-controller; 959 description 960 "Abstract identity that all gate control blocks with corresponding 961 input and output instances use as basetype e.g. rate-limiters, 962 simple propagation delays, shapers etc."; 963 } 965 identity gate-controller-input { 966 description 967 "Identifies gate controller input type."; 968 } 970 identity private-queue-aggregator-input { 971 base gate-controller-input; 972 description 973 "Abstract input identifier for gate controller 974 inputs of the aggregator type where all 975 instances of the input types derived from 976 this identifier have their own private queue."; 977 } 979 identity shared-queue-aggregator-input { 980 base gate-controller-input; 981 description 982 "Abstract input identifier for gate controller 983 inputs of the aggregator type where all 984 instances of the input types derived from 985 this identifier have shared queue."; 986 } 988 identity filter-input { 989 base gate-controller-input; 990 description 991 "Abstract input identifier for gate controller 992 inputs of the filter type."; 993 } 995 identity traffic-class { 996 description 997 "Identifies traffic class."; 998 } 1000 identity port-class { 1001 description 1002 "Identifies port class. Ports that belong to a class 1003 will have the same scheduler-class on their egress 1004 and have identical flow path through the rest of 1005 the scheduler classes."; 1006 } 1008 typedef port-class-ref { 1009 type leafref { 1010 path "/netbr:bridge/sched:port-classes/sched:port-class"; 1011 } 1012 description 1013 "This type is used by data models that need to reference 1014 configured port-class."; 1015 } 1017 typedef traffic-class-ref { 1018 type leafref { 1019 path "/netbr:bridge/sched:traffic-classes/sched:traffic-class"; 1020 } 1021 description 1022 "This type is used by data models that need to reference 1023 configured traffic-class."; 1024 } 1026 augment "/flow:flows/flow:flow" { 1027 leaf traffic-class { 1028 type leafref { 1029 path "/netbr:bridge/sched:traffic-classes/sched:traffic-class"; 1030 } 1031 description 1032 "Specifies the traffic class of a flow. 1033 When not present the default traffic class is used."; 1034 } 1035 } 1036 augment "/netbr:bridge/netbr:ports/netbr:port" { 1037 leaf class { 1038 type port-class-ref; 1039 } 1040 leaf class-instance-index { 1041 type uint32; 1042 } 1043 } 1044 augment "/netbr:bridge" { 1045 leaf default-traffic-class { 1046 type traffic-class-ref; 1047 description 1048 "Specifies the traffic-class for flows without 1049 /flow:flows/flow:flow/sched:traffic-class leaf."; 1050 } 1051 leaf default-port-class { 1052 type traffic-class-ref; 1053 description 1054 "Specifies the traffic-class for flows without 1055 /flow:flows/flow:flow/sched:traffic-class leaf."; 1056 } 1057 container traffic-classes { 1058 leaf-list traffic-class { 1059 type identityref { 1060 base traffic-class; 1061 } 1062 } 1063 } 1064 container port-classes { 1065 leaf-list port-class { 1066 type identityref { 1067 base port-class; 1068 } 1069 } 1070 } 1071 } 1073 grouping gate-controller-input-config { 1074 leaf constant-propagation-delay { 1075 type uint64; 1076 description 1077 "Constant delay attributed to delays in the gate-controller."; 1078 units "picoseconds"; 1079 } 1080 leaf configurable-delay-line { 1081 type uint64; 1082 description 1083 "Some gate controllers can delay the flow of packets with 1084 configurable delay which is added to the constant 1085 propagation-delay. Only inputs with zero queue lengths 1086 have deterministic delays equal to the sum of the 1087 constant-propagation-delay and the configurable-delay-line 1088 leafs. Inputs with queues have variable higher delay with 1089 dynamic component based on the controllers logic."; 1090 units "picoseconds"; 1091 } 1092 leaf queue-len { 1093 type uint32; 1094 units "bytes"; 1095 } 1096 } 1098 grouping gate-controller-queue-state { 1099 leaf queued-pkts { 1100 config false; 1101 type uint64; 1102 } 1103 leaf queued-bytes { 1104 config false; 1105 type uint64; 1106 } 1107 leaf discards { 1108 config false; 1109 type uint64; 1110 description 1111 "The total number of discarded packets that were 1112 received on this input. This includes but is not 1113 limited to the overflow-discards. For example 1114 gate-controllers can start discarding certain 1115 packets before the input queue is filled. These 1116 discards are not registered as overflow-discards."; 1117 } 1118 leaf overflow-discards { 1119 config false; 1120 type uint64; 1121 description 1122 "Unintended discard caused by overflow of 1123 the input queue of the gate controller."; 1124 } 1125 leaf error-discards { 1126 config false; 1127 type uint64; 1128 } 1129 } 1131 augment "/if:interfaces/if:interface" { 1132 container scheduler { 1133 container gate-controllers { 1134 list gate-controller { 1135 key "id type"; 1136 leaf id { 1137 type string; 1138 } 1139 leaf type { 1140 type identityref { 1141 base gate-controller; 1142 } 1143 mandatory true; 1144 } 1145 container inputs { 1146 list input { 1147 key "class index"; 1148 leaf class { 1149 type identityref { 1150 base gate-controller-input; 1151 } 1152 } 1153 leaf index { 1154 type uint32; 1155 } 1156 uses gate-controller-queue-state; 1157 } 1158 } 1159 container input-classes { 1160 list input-class { 1161 key "class"; 1162 leaf class { 1163 type identityref { 1164 base gate-controller-input; 1165 } 1166 } 1167 uses gate-controller-queue-state; 1168 } 1169 } 1170 } 1171 } 1172 } 1173 } 1174 augment "/netbr:bridge" { 1175 container scheduler-classes { 1176 list scheduler-class { 1177 key "egress-port-class"; 1178 leaf egress-port-class { 1179 type sched:port-class-ref; 1180 } 1181 container inputs { 1182 list input { 1183 key "traffic-class ingress-port-class"; 1184 leaf traffic-class { 1185 type traffic-class-ref; 1186 } 1187 leaf ingress-port-class { 1188 type port-class-ref; 1190 } 1191 leaf gate-controller { 1192 type leafref { 1193 path "../../../gate-controllers/gate-controller/id"; 1194 } 1195 } 1196 leaf input-class { 1197 type leafref { 1198 path "../../../gate-controllers/gate-controller" 1199 + "[id=current()/../gate-controller]" 1200 + "/inputs/input/class"; 1201 } 1202 } 1203 leaf base-index { 1204 type uint32; 1205 default "0"; 1206 } 1207 } 1208 } 1209 container gate-controllers { 1210 list gate-controller { 1211 key "id"; 1212 leaf id { 1213 type string; 1214 } 1215 leaf type { 1216 type identityref { 1217 base gate-controller; 1218 } 1219 mandatory true; 1220 } 1221 container inputs { 1222 list input { 1223 key "class"; 1224 leaf class { 1225 type identityref { 1226 base gate-controller-input; 1227 } 1228 mandatory true; 1229 } 1230 leaf instance-count { 1231 type uint32; 1232 } 1233 uses gate-controller-input-config; 1234 } 1235 } 1236 container output { 1237 leaf gate-controller { 1238 type leafref { 1239 path "../../../gate-controller/id"; 1240 } 1241 } 1242 leaf input-class { 1243 type leafref { 1244 path "../../../gate-controller" 1245 + "[id=current()/../gate-controller]/" 1246 + "inputs/input/class"; 1247 } 1248 } 1249 leaf index { 1250 type uint32; 1251 description 1252 "In case the gate-controller is aggregator this is the 1253 index of the only input it is connected to from the 1254 specified class. 1255 If the gate-controller is filter with more then one 1256 input-output pairs this is the base index and the 1257 remaining indexes are connected to consecutive input 1258 indexes of the specified input class."; 1259 } 1260 } 1261 } 1262 } 1263 } 1264 } 1265 } 1266 } 1268 1270 8. IANA Considerations 1272 8.1. NETWORK BRIDGE YANG Modules 1274 This document registers 3 YANG modules in the YANG Module Names 1275 registry [RFC7950]. 1277 name: ietf-network-bridge 1278 namespace: 1279 urn:ietf:params:xml:ns:yang:ietf-network-bridge 1280 prefix: netbr 1281 // RFC Ed. remove this line and replace XXXX in next line 1282 reference: RFC XXXX 1283 name: ietf-network-bridge-flows 1284 namespace: 1285 urn:ietf:params:xml:ns:yang:ietf-network-bridge-flows 1286 prefix: flow 1287 // RFC Ed. remove this line and replace XXXX in next line 1288 reference: RFC XXXX 1290 name: ietf-network-bridge-scheduler 1291 namespace: 1292 urn:ietf:params:xml:ns:yang:ietf-network-bridge-scheduler 1293 prefix: sched 1294 // RFC Ed. remove this line and replace XXXX in next line 1295 reference: RFC XXXX 1297 9. Security Considerations 1299 This document does not introduce any new security concerns in 1300 addition to those specified in [RFC7950], section 15. 1302 10. Normative References 1304 [OpenFlow] 1305 "Open Networking Foundation", ""OpenFlow Switch 1306 Specification"", December 2009, 1307 . 1311 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1312 Requirement Levels", BCP 14, RFC 2119, March 1997. 1314 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1315 January 2004. 1317 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1318 and A. Bierman, Ed., "Network Configuration Protocol 1319 (NETCONF)", RFC 6241, June 2011. 1321 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1322 July 2013. 1324 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1325 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1326 . 1328 [RFC8340] Bjorklund, M., Ed. and L. Berger, Ed., "YANG Tree 1329 Diagrams", RFC 8340, DOI 10.17487/RFC8340, March 2018, 1330 . 1332 [XSD] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes 1333 Second Edition", World Wide Web Consortium Recommendation 1334 REC-xmlschema-2-20041028, October 2004, 1335 . 1337 Appendix A. Example 1339 Example bridge with signaling, video0, video1 and best-effort traffic 1340 classes. 1342 A.1. Model 1344 file "example-bridge@2018-07-15.yang" 1346 module example-bridge { 1347 yang-version 1.1; 1348 namespace "http://example.com/ns/example-bridge"; 1349 prefix example; 1351 import ietf-network-bridge { 1352 prefix netbr; 1353 } 1354 import ietf-network-bridge-scheduler { 1355 prefix sched; 1356 } 1358 organization 1359 "example.com"; 1360 description 1361 "Example of bridge."; 1363 revision 2018-07-15 { 1364 description 1365 "Initial."; 1366 } 1368 identity video0 { 1369 base sched:traffic-class; 1370 } 1372 identity video1 { 1373 base sched:traffic-class; 1374 } 1376 identity signaling { 1377 base sched:traffic-class; 1378 } 1379 identity best-effort { 1380 base sched:traffic-class; 1381 } 1383 identity default-port { 1384 base sched:port-class; 1385 } 1387 //Strict priority aggregator with 3 classes: 1388 identity strict-priority-aggregator { 1389 base sched:aggregator; 1390 } 1392 identity pri0 { 1393 base sched:shared-queue-aggregator-input; 1394 base strict-priority-aggregator; 1395 } 1397 identity pri1 { 1398 base sched:shared-queue-aggregator-input; 1399 base strict-priority-aggregator; 1400 } 1402 identity pri2 { 1403 base sched:shared-queue-aggregator-input; 1404 base strict-priority-aggregator; 1405 } 1407 //Cyclic timeslot schedule aggregator with 2 timeslots: 1408 identity cyclic-timeslot-schedule-aggregator { 1409 base sched:aggregator; 1410 } 1412 identity timeslot0 { 1413 base sched:shared-queue-aggregator-input; 1414 base cyclic-timeslot-schedule-aggregator; 1415 } 1417 identity timeslot1 { 1418 base sched:shared-queue-aggregator-input; 1419 base cyclic-timeslot-schedule-aggregator; 1420 } 1422 augment "/netbr:bridge/sched:scheduler-classes/sched:scheduler-class" 1423 + "/sched:gate-controllers/sched:gate-controller" { 1424 when "./sched:type = 'example:cyclic-timeslot-schedule-aggregator'"; 1425 leaf period { 1426 type uint32; 1427 units "nanoseconds"; 1428 } 1429 leaf time-slot0-interval { 1430 type uint32; 1431 units "nanoseconds"; 1432 } 1433 leaf time-slot1-interval { 1434 type uint32; 1435 units "nanoseconds"; 1436 } 1437 } 1439 //Rate limiter - filter: 1440 identity rate-limiter { 1441 base sched:filter; 1442 } 1444 identity in { 1445 base sched:filter-input; 1446 base rate-limiter; 1447 } 1449 augment "/netbr:bridge/sched:scheduler-classes/sched:scheduler-class" 1450 + "/sched:gate-controllers/sched:gate-controller" { 1451 when "./sched:type = 'example:rate-limiter'"; 1452 leaf interval { 1453 type uint32; 1454 units "nanoseconds"; 1455 } 1456 leaf limit { 1457 type uint32; 1458 units "octets"; 1459 } 1460 } 1461 } 1463 1465 A.2. Scheduler diagram 1467 The scheduler toplogy and the gate controller instances are specified 1468 in the operational configuration data that can be modified or not 1469 depending on the underlying implementation. The single letter 1470 identifiers for the gate-controllers have the following identities: 1472 o r1,r2 - rate-limiter instances 1473 o a - trivial aggregator instance (implemented using strict- 1474 priority-aggregator) 1476 o t - cyclic-timeslot-schedule-aggregator instance 1478 o p - strict-priority-aggregator instance 1480 signaling video0 video1 best-effort 1481 v v v v 1482 | | | | 1483 +--+ +-----------+ / 1484 |r1| | t | / 1485 +--+ +-----------+ / 1486 | | / 1487 +-+ | / 1488 |a| | / 1489 +-+ | / 1490 | / / 1491 +--+ / / 1492 |r2| / / 1493 +--+ / / 1494 | / / 1495 +---------------+ 1496 | p | 1497 +---------------+ 1498 | 1499 v 1501 A.3. Topology 1503 The example flow configuration is for the topology in the diagram 1504 below. 1506 +-------+ p0 +-------+ p1 +-------+ 1507 | host0 |------| br0 |-----| host1 | 1508 +-------+ +-------+ +-------+ 1509 p2| 1510 +-------+ 1511 | host2 | 1512 +-------+ 1514 A.4. CLI listing 1516 CLI commands configuring flows and assigning flows to traffic- 1517 classes: 1519 > create /flows/flow[id='video0'] -- \ 1520 match/vlan-match/vlan-id/vlan-id=10 \ 1521 actions/action[order='0']/output-action/out-port=p2 1522 > merge /flows/flow[id='video0'] -- traffic-class=video0 1523 > create /flows/flow[id='video1'] -- \ 1524 match/vlan-match/vlan-id/vlan-id=11 \ 1525 actions/action[order='0']/output-action/out-port=p2 1526 > merge /flows/flow[id='video1'] -- traffic-class=video1 1527 > create /flows/flow[id='best-effort-to-host0'] -- \ 1528 match/ethernet-match/ethernet-destination\ 1529 /address=00:01:02:03:00:00 \ 1530 actions/action[order='0']/output-action/out-port=p0 1531 > merge /flows/flow[id='best-effort-to-host0'] -- \ 1532 traffic-class=best-effort 1533 > create /flows/flow[id='best-effort-to-host1'] -- \ 1534 match/ethernet-match/ethernet-destination\ 1535 /address=00:01:02:03:00:01 \ 1536 actions/action[order='0']/output-action/out-port=p1 1537 > merge /flows/flow[id='best-effort-to-host1'] -- \ 1538 traffic-class=best-effort 1539 > create /flows/flow[id='best-effort-to-host2'] -- \ 1540 match/ethernet-match/ethernet-destination\ 1541 /address=00:01:02:03:00:02 \ 1542 actions/action[order='0']/output-action/out-port=p2 1543 > merge /flows/flow[id='best-effort-to-host2'] -- \ 1544 traffic-class=best-effort 1545 > create /flows/flow[id='ptp-to-host0'] -- \ 1546 match/ethernet-match/ethernet-destination\ 1547 /address=00:01:02:03:00:00 \ 1548 actions/action[order='0']/output-action/out-port=p0 1549 > merge /flows/flow[id='ptp-to-host0'] -- \ 1550 traffic-class=signaling 1551 > create /flows/flow[id='ptp-to-host1'] -- \ 1552 match/ethernet-match/ethernet-destination\ 1553 /address=00:01:02:03:00:01 \ 1554 actions/action[order='0']/output-action/out-port=p1 1555 > merge /flows/flow[id='ptp-to-host1'] -- \ 1556 traffic-class=signaling 1557 > create /flows/flow[id='ptp-to-host2'] -- \ 1558 match/ethernet-match/ethernet-destination\ 1559 /address=00:01:02:03:00:02 \ 1560 actions/action[order='0']/output-action/out-port=p2 1561 > merge /flows/flow[id='ptp-to-host2'] -- \ 1562 traffic-class=signaling 1563 > commit 1565 CLI commands configuring and monitorig the scheduler: 1567 > replace /bridge/scheduler-classes/scheduler-class/gate-controllers\ 1568 /gate-controller[id='p']/inputs/input/queue-len value=1048576 1569 > replace /bridge/scheduler-classes/scheduler-class/gate-controllers\ 1570 /gate-controller[id='t']/time-slot0-interval value=5000000 1571 > commit 1572 > xget /interfaces/interface[name='if2']/scheduler/gate-controllers\ 1573 /gate-controller[id='r1']/inputs/input[index='1']/overflow-discards 1574 ... 1575 overflow-discards 33 1576 ... 1577 > xget /interfaces/interface[name='if2']/scheduler/gate-controllers\ 1578 /gate-controller[id='p']/input-classes/ 1579 input-class[class='pri2']/overflow-discards 1580 ... 1581 overflow-discards 1000000 1582 ... 1584 A.5. Configuration Data Instance 1586 1587 1588 1589 1590 1591 p0 1592 0 1593 1596 example:default-port 1597 1599 0 1600 1601 1602 p1 1603 1 1604 1607 example:default-port 1608 1610 1 1611 1612 1613 p2 1614 2 1615 1618 example:default-port 1619 1621 2 1622 1623 1624 1627 example:best-effort 1628 1631 example:best-effort 1632 1635 1637 example:best-effort 1638 1640 example:signaling 1641 1643 example:video0 1644 1646 example:video1 1647 1648 1651 1652 example:default-port 1653 1654 1657 1658 1660 example:default-port 1661 1662 1663 1665 example:best-effort 1666 1668 example:default-port 1669 p 1670 1672 example:pri2 1673 0 1674 1675 1676 1678 example:signaling 1679 1681 example:default-port 1682 r1 1683 1685 example:in 1686 0 1687 1688 1689 1691 example:video0 1692 1694 example:default-port 1695 t 1696 1698 example:timeslot0 1699 0 1700 1701 1702 1704 example:video1 1705 1707 example:default-port 1708 t 1709 1711 example:timeslot1 1712 0 1713 1714 1715 1716 1717 a 1718 1720 example:strict-priority-aggregator 1721 1722 1723 1725 example:pri0 1726 3 1727 2048 1728 1729 1730 1731 r2 1732 1734 example:in 1735 0 1736 1737 1738 1739 p 1740 1741 example:strict-priority-aggregator 1742 1743 1744 1746 example:pri0 1747 1 1748 2048 1749 1750 1751 1753 example:pri1 1754 1 1755 32768 1756 1757 1758 1760 example:pri2 1761 3 1762 1048576 1763 1764 1765 1766 1767 r1 1768 1770 example:rate-limiter 1771 1772 1773 1775 example:in 1776 3 1777 1778 1779 1780 a 1781 1783 example:pri0 1784 0 1785 1786 1787 10000000 1788 1789 12500 1790 1791 1792 r2 1793 1794 example:rate-limiter 1795 1796 1797 1799 example:in 1800 1 1801 1802 1803 1804 p 1805 1807 example:pri0 1808 0 1809 1810 1811 10000000 1812 1813 125000 1814 1815 1816 t 1817 1818 example:cyclic-timeslot-schedule-aggregator 1819 1820 1821 1823 example:timeslot0 1824 3 1825 1048576 1826 1827 1828 1830 example:timeslot1 1831 3 1832 1048576 1833 1834 1835 1836 p 1837 1839 example:pri0 1840 2 1841 1842 1843 10000000 1844 1846 5000000 1847 1849 5000000 1850 1851 1852 1853 1854 1855 1856 1857 best-effort-to-host0 1858 1859 1860 1861
00:01:02:03:00:00
1862
1863
1864
1865 1866 1867 0 1868 1869 p0 1870 1871 1872 1873 1876 example:best-effort 1877
1878 1879 best-effort-to-host1 1880 1881 1882 1883
00:01:02:03:00:01
1884
1885
1886
1887 1888 1889 0 1890 1891 p1 1892 1893 1894 1895 1898 example:best-effort 1899
1900 1901 best-effort-to-host2 1902 1903 1904 1905
00:01:02:03:00:02
1906
1907
1908
1909 1910 1911 0 1912 1913 p2 1914 1915 1916 1917 1920 example:best-effort 1921
1922 1923 ptp-to-host0 1924 1925 1926 1927
00:01:02:03:00:00
1928
1929
1930
1931 1932 1933 0 1934 1935 p0 1936 1937 1938 1939 1942 example:signaling 1943
1944 1945 ptp-to-host1 1946 1947 1948 1949
00:01:02:03:00:01
1950
1952
1953
1954 1955 1956 0 1957 1958 p1 1959 1960 1961 1962 1965 example:signaling 1966
1967 1968 ptp-to-host2 1969 1970 1971 1972
00:01:02:03:00:02
1973
1974
1975
1976 1977 1978 0 1979 1980 p2 1981 1982 1983 1984 1987 example:signaling 1988
1989 1990 video0 1991 1992 1993 1994 10 1995 1996 1997 1998 1999 2000 0 2001 2002 p2 2003 2004 2005 2006 2009 example:video0 2010 2011 2012 video1 2013 2014 2015 2016 11 2017 2018 2019 2020 2021 2022 0 2023 2024 p2 2025 2026 2027 2028 2031 example:video1 2032 2033
2034 2035 2036 if0 2037 2039 ianaift:ethernetCsmacd 2040 2042 p0 2043 2044 2045 if1 2046 2047 ianaift:ethernetCsmacd 2048 2050 p1 2051 2052 2053 if2 2054 2055 ianaift:ethernetCsmacd 2056 2058 p2 2059 2060 2061 2062 2063
2065 Author's Address 2067 Vladimir Vassilev 2068 Transpacket 2070 Email: vladimir@transpacket.com