idnits 2.17.1 draft-ietf-i2rs-yang-l3-topology-09.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 224 has weird spacing: '... prefix ine...' -- The document date (June 26, 2017) is 2495 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: 'RFC2863' is defined on line 1364, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1413, but no explicit reference was found in the text == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-13 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-10) exists of draft-acee-rtgwg-yang-rib-extend-02 == Outdated reference: A later version (-22) exists of draft-ietf-teas-yang-te-topo-09 -- Obsolete informational reference (is this intentional?): RFC 7223 (Obsoleted by RFC 8343) -- Obsolete informational reference (is this intentional?): RFC 8022 (Obsoleted by RFC 8349) Summary: 1 error (**), 0 flaws (~~), 7 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Clemm 3 Internet-Draft Huawei 4 Intended status: Standards Track J. Medved 5 Expires: December 28, 2017 Cisco 6 R. Varga 7 Pantheon Technologies SRO 8 X. Liu 9 Ericsson 10 H. Ananthakrishnan 11 Packet Design 12 N. Bahadur 13 Bracket Computing 14 June 26, 2017 16 A YANG Data Model for Layer 3 Topologies 17 draft-ietf-i2rs-yang-l3-topology-09.txt 19 Abstract 21 This document defines a YANG data model for layer 3 network 22 topologies. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at http://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on December 28, 2017. 41 Copyright Notice 43 Copyright (c) 2017 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (http://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 59 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 60 3. Model Structure . . . . . . . . . . . . . . . . . . . . . . . 4 61 4. Layer 3 Unicast Topology Model Overview . . . . . . . . . . . 5 62 5. Layer 3 Unicast Topology YANG Module . . . . . . . . . . . . 7 63 6. Extending the Model . . . . . . . . . . . . . . . . . . . . . 15 64 6.1. Example 1: OSPF Topology . . . . . . . . . . . . . . . . 15 65 6.1.1. Model Overview . . . . . . . . . . . . . . . . . . . 15 66 6.1.2. OSPF Topology YANG Module . . . . . . . . . . . . . . 17 67 6.2. Example 2: IS-IS Topology . . . . . . . . . . . . . . . . 22 68 6.2.1. Model Overview . . . . . . . . . . . . . . . . . . . 22 69 6.2.2. IS-IS Topology YANG Module . . . . . . . . . . . . . 23 70 7. Interactions with Other YANG Modules . . . . . . . . . . . . 28 71 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 72 9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 73 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 29 74 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 75 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 76 12.1. Normative References . . . . . . . . . . . . . . . . . . 30 77 12.2. Informative References . . . . . . . . . . . . . . . . . 31 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 80 1. Introduction 82 This document introduces a YANG [RFC7950] [RFC6991] data model for 83 Layer 3 network topologies, specifically Layer 3 Unicast. The model 84 allows an application to have a holistic view of the topology of a 85 Layer 3 network, all contained in a single conceptual YANG datastore. 86 The data model builds on top of, and augments, the data model for 87 network topologies defined in 88 [I-D.draft-ietf-i2rs-yang-network-topo]. 90 This document also shows how the model can be further refined to 91 cover different Layer 3 Unicast topology types. For this purpose, 92 example models are introduced that cover IS-IS [RFC1195] and OSPF 93 [RFC2328]. Those examples are intended purely for illustrative 94 purposes; we expect that full-blown IS-IS and OSPF models will be 95 more comprehensive and refined than the examples shown here. 97 There are multiple applications for a topology data model. A number 98 of use cases have been defined in section 6 of 99 [I-D.draft-ietf-i2rs-usecase-reqs-summary]. For example, nodes 100 within the network can use the data model to capture their 101 understanding of the overall network topology and expose it to a 102 network controller. A network controller can then use the 103 instantiated topology data to compare and reconcile its own view of 104 the network topology with that of the network elements that it 105 controls. Alternatively, nodes within the network could propagate 106 this understanding to compare and reconcile this understanding either 107 amongst themselves or with help of a controller. Beyond the network 108 element itself, a network controller might even use the data model to 109 represent its view of the topology that it controls and expose it to 110 applications north of itself. 112 The data model for Layer 3 Unicast topologies defined in this 113 document is specified in a YANG module "ietf-l3-unicast-topology". 114 To do so, it augments general network topology model defined in 115 [I-D.draft-ietf-i2rs-yang-network-topo] with information specific to 116 Layer 3 Unicast. This way, the general topology model is extended to 117 be able to meet the needs of Layer 3 Unicast topologies. 119 Information that is kept in the Traffic Engineering Database (TED) 120 will be specified in a separate model 121 [I-D.draft-ietf-teas-yang-te-topo] and outside the scope of this 122 specification. 124 2. Definitions and Acronyms 126 As this document defines a YANG data model, in this document many 127 terms are used that have been defined in conjunction with YANG 128 [RFC7950] and Netconf [RFC6241]. Some terms, such as datastore and 129 data tree, are repeated here for clarity and to put them in context. 131 Datastore: A conceptual place to store and access information, such 132 as instantiated YANG data. 134 Data tree: An instantiated tree of data modeled with YANG, in which 135 individual data items are represented by data nodes which are 136 arranged in hierarchical manner. 138 Data subtree: An instantiated data node and the data nodes that are 139 hierarchically contained within it. 141 HTTP: Hyper-Text Transfer Protocol 143 IGP: Interior Gateway Protocol 144 IS-IS: Intermediate System to Intermediate System protocol 146 LSP: Label Switched Path 148 NETCONF: Network Configuration Protocol 150 OSPF: Open Shortest Path First, a link state routing protocol 152 URI: Uniform Resource Identifier 154 ReST: Representational State Transfer, a style of stateless interface 155 and protocol that is generally carried over HTTP 157 SRLG: Shared Risk Link Group 159 TED: Traffic Engineering Database 161 YANG: A data definition language for NETCONF 163 3. Model Structure 165 The Layer 3 Unicast topology model is defined by YANG module "l3- 166 unicast-topology". The relationship of this module with other YANG 167 modules is roughly depicted in the figure below. 169 +-----------------------------+ 170 | +-----------------------+ | 171 | | ietf-network | | 172 | +----------^------------+ | 173 | | | 174 | +-----------------------+ | 175 | | ietf-network-topology | | 176 | +----------+------------+ | 177 +-------------^---------------+ 178 | 179 | 180 +-----------^-------------+ 181 | L3-UNICAST-TOPOLOGY | 182 +----+---------------+----+ 183 ^ ^ 184 | | 185 | | 186 +--------^-----+ +-----^---------+ 187 | ospf-topology| | isis-topology | 188 +--------------+ +---------------+ 190 Figure 1: Overall model structure 192 YANG modules "ietf-network" and "ietf-network-topology" collectively 193 define the basic network topology model. YANG module "ietf-l3- 194 unicast-topology" augments those models with additional definitions 195 needed to represent Layer 3 Unicast topologies. This module in turn 196 can be augmented by YANG modules with additional definitions for 197 specific types of Layer 3 Unicast topologies, such as OSPF and for 198 IS-IS topologies. 200 4. Layer 3 Unicast Topology Model Overview 202 The Layer 3 Unicast topology model is defined by YANG module "ietf- 203 l3-unicast-topology" and depicted in the following diagram. Brackets 204 enclose list keys, "rw" means configuration, "ro" operational state 205 data, "?" designates optional nodes, "*" designates nodes that can 206 have multiple instances. Parantheses enclose choice and case nodes. 207 The prefix "nd:" refers to the YANG module for networks; the prefix 208 "lnk:" refers to the YANG module for network topology. In the 209 interest of brevity, notifications are not depicted. 211 module: ietf-l3-unicast-topology 212 augment /nd:networks/nd:network/nd:network-types: 213 +--rw l3-unicast-topology! 214 augment /nd:networks/nd:network: 215 +--rw l3-topology-attributes 216 +--rw name? string 217 +--rw flag* l3-flag-type 218 augment /nd:networks/nd:network/nd:node: 219 +--rw l3-node-attributes 220 +--rw name? inet:domain-name 221 +--rw flag* node-flag-type 222 +--rw router-id* inet:ip-address 223 +--rw prefix* [prefix] 224 +--rw prefix inet:ip-prefix 225 +--rw metric? uint32 226 +--rw flag* prefix-flag-type 227 augment /nd:networks/nd:network/lnk:link: 228 +--rw l3-link-attributes 229 +--rw name? string 230 +--rw flag* link-flag-type 231 +--rw metric? uint32 232 augment /nd:networks/nd:network/nd:node/lnk:termination-point: 233 +--rw l3-termination-point-attributes 234 +--rw (termination-point-type)? 235 +--:(ip) 236 | +--rw ip-address* inet:ip-address 237 +--:(unnumbered) 238 | +--rw unnumbered-id? uint32 239 +--:(interface-name) 240 +--ro interface-name? string 242 The module augments the original ietf-network and ietf-network- 243 topology modules as follows: 245 o A new network topology type is introduced, l3-unicast-topology. 246 The corresponding container augments the network-types of the 247 ietf-network module. 249 o Additional topology attributes are introduced, defined in a 250 grouping, which augments the "network" list of the network module. 251 The attributes include a name for the topology, as well as a set 252 of flags (represented through a leaf-list). Each type of flag is 253 represented by a separate identity. This allows to introduce 254 additional flags in augmenting modules using additional identities 255 without needing to revise this module. 257 o Additional data objects for nodes are introduced by augmenting the 258 "node" list of the network module. New objects include again a 259 set of flags, as well as a list of prefixes. Each prefix in turn 260 includes an ip prefix, a metric, and a prefix-specific set of 261 flags. 263 o Links (in the ietf-network-topology module) are augmented with a 264 set of parameters as well, allowing to associate a link with a 265 link name, another set of flags, and a link metric. 267 o Termination points (in the ietf-network-topology module as well) 268 are augmented with a choice of IP address, identifier, or name. 270 In addition, the module defines a set of notifications to alert 271 clients of any events concerning links, nodes, prefixes, and 272 termination points. Each notification includes an indication of the 273 type of event, the topology from which it originated, and the 274 affected node, or link, or prefix, or termination point. In 275 addition, as a convenience to applications, additional data of the 276 affected node, or link, or termination point (respectively) is 277 included. While this makes notifications larger in volume than they 278 would need to be, it avoids the need for subsequent retrieval of 279 context information, which also might have changed in the meantime. 281 5. Layer 3 Unicast Topology YANG Module 283 file "ietf-l3-unicast-topology@2017-06-26.yang" 284 module ietf-l3-unicast-topology { 285 yang-version 1.1; 286 namespace 287 "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; 288 prefix "l3t"; 289 import ietf-network { 290 prefix "nd"; 291 } 292 import ietf-network-topology { 293 prefix "lnk"; 294 } 295 import ietf-inet-types { 296 prefix "inet"; 297 } 298 organization 299 "IETF I2RS (Interface to the Routing System) Working Group"; 300 contact 301 "WG Web: 302 WG List: 303 WG Chair: Susan Hares 304 305 WG Chair: Russ White 306 308 Editor: Alexander Clemm 309 310 Editor: Jan Medved 311 312 Editor: Robert Varga 313 314 Editor: Xufeng Liu 315 316 Editor: Nitin Bahadur 317 318 Editor: Hariharan Ananthakrishnan 319 "; 320 description 321 "This module defines a model for Layer 3 Unicast 322 topologies. 323 Copyright (c) 2017 IETF Trust and the persons identified as 324 authors of the code. All rights reserved. 325 Redistribution and use in source and binary forms, with or 326 without modification, is permitted pursuant to, and subject 327 to the license terms contained in, the Simplified BSD License 328 set forth in Section 4.c of the IETF Trust's Legal Provisions 329 Relating to IETF Documents 330 (http://trustee.ietf.org/license-info). 331 This version of this YANG module is part of 332 draft-ietf-i2rs-yang-l3-topology-09; 333 see the RFC itself for full legal notices. 334 NOTE TO RFC EDITOR: Please replace above reference to 335 draft-ietf-i2rs-yang-l3-topology-09 with RFC 336 number when published (i.e. RFC xxxx)."; 337 revision "2017-06-26" { 338 description 339 "Initial revision. 340 NOTE TO RFC EDITOR: Please replace the following reference 341 to draft-ietf-i2rs-yang-l3-topology-09 with 342 RFC number when published (i.e. RFC xxxx)."; 343 reference 344 "draft-ietf-i2rs-yang-l3-topology-09"; 345 } 347 identity flag-identity { 348 description "Base type for flags"; 349 } 351 typedef l3-event-type { 352 type enumeration { 353 enum "add" { 354 description 355 "An Layer 3 node or link or prefix or termination-point has 356 been added"; 357 } 358 enum "remove" { 359 description 360 "An Layer 3 node or link or prefix or termination-point has 361 been removed"; 362 } 363 enum "update" { 364 description 365 "An Layer 3 node or link or prefix or termination-point has 366 been updated"; 367 } 368 } 369 description "Layer 3 Event type for notifications"; 370 } 372 typedef prefix-flag-type { 373 type identityref { 374 base "flag-identity"; 375 } 376 description "Prefix flag attributes"; 377 } 379 typedef node-flag-type { 380 type identityref { 381 base "flag-identity"; 382 } 383 description "Node flag attributes"; 384 } 386 typedef link-flag-type { 387 type identityref { 388 base "flag-identity"; 389 } 390 description "Link flag attributes"; 391 } 393 typedef l3-flag-type { 394 type identityref { 395 base "flag-identity"; 396 } 397 description "L3 flag attributes"; 398 } 400 grouping l3-prefix-attributes { 401 description 402 "L3 prefix attributes"; 403 leaf prefix { 404 type inet:ip-prefix; 405 description 406 "IP prefix value"; 407 } 408 leaf metric { 409 type uint32; 410 description 411 "Prefix metric"; 412 } 413 leaf-list flag { 414 type prefix-flag-type; 415 description 416 "Prefix flags"; 417 } 418 } 419 grouping l3-unicast-topology-type { 420 description "Identify the topology type to be L3 unicast."; 421 container l3-unicast-topology { 422 presence "indicates L3 Unicast Topology"; 423 description 424 "The presence of the container node indicates L3 Unicast 425 Topology"; 426 } 427 } 428 grouping l3-topology-attributes { 429 description "Topology scope attributes"; 430 container l3-topology-attributes { 431 description "Containing topology attributes"; 432 leaf name { 433 type string; 434 description 435 "Name of the topology"; 436 } 437 leaf-list flag { 438 type l3-flag-type; 439 description 440 "Topology flags"; 441 } 442 } 443 } 444 grouping l3-node-attributes { 445 description "L3 node scope attributes"; 446 container l3-node-attributes { 447 description 448 "Containing node attributes"; 449 leaf name { 450 type inet:domain-name; 451 description 452 "Node name"; 453 } 454 leaf-list flag { 455 type node-flag-type; 456 description 457 "Node flags"; 458 } 459 leaf-list router-id { 460 type inet:ip-address; 461 description 462 "Router-id for the node"; 463 } 464 list prefix { 465 key "prefix"; 466 description 467 "A list of prefixes along with their attributes"; 468 uses l3-prefix-attributes; 469 } 470 } 471 } 472 grouping l3-link-attributes { 473 description 474 "L3 link scope attributes"; 475 container l3-link-attributes { 476 description 477 "Containing link attributes"; 478 leaf name { 479 type string; 480 description 481 "Link Name"; 482 } 483 leaf-list flag { 484 type link-flag-type; 485 description 486 "Link flags"; 487 } 488 leaf metric { 489 type uint32; 490 description 491 "Link Metric"; 492 } 493 } 494 } 495 grouping l3-termination-point-attributes { 496 description "L3 termination point scope attributes"; 497 container l3-termination-point-attributes { 498 description 499 "Containing termination point attributes"; 501 choice termination-point-type { 502 description 503 "Indicates the termination point type"; 504 case ip { 505 leaf-list ip-address { 506 type inet:ip-address; 507 description 508 "IPv4 or IPv6 address."; 509 } 510 } 511 case unnumbered { 512 leaf unnumbered-id { 513 type uint32; 514 description 515 "Unnumbered interface identifier. 516 The identifier will correspond to the ifIndex value 517 of the interface, i.e. the ifIndex value of the 518 ifEntry that represents the interface in 519 implementations where the Interfaces Group MIB 520 (RFC 2863) is supported."; 521 reference 522 "RFC 2863: The Interfaces Group MIB"; 523 } 524 } 525 case interface-name { 526 leaf interface-name { 527 type string; 528 description 529 "A name of the interface. The name can (but does not 530 have to) correspond to an interface reference of a 531 containing node's interface, i.e. the path name of a 532 corresponding interface data node on the containing 533 node reminiscent of data type if-ref defined in 534 RFC 7223. It should be noted that data type if-ref of 535 RFC 7223 cannot be used directly, as this data type 536 is used to reference an interface in a datastore of 537 a single node in the network, not to uniquely 538 reference interfaces across a network."; 539 } 540 } 541 } 542 } 543 } 544 augment "/nd:networks/nd:network/nd:network-types" { 545 description 546 "Introduce new network type for L3 unicast topology"; 547 uses l3-unicast-topology-type; 548 } 549 augment "/nd:networks/nd:network" { 550 when "nd:network-types/l3-unicast-topology" { 551 description 552 "Augmentation parameters apply only for networks with 553 L3 unicast topology"; 554 } 555 description 556 "L3 unicast for the network as a whole"; 557 uses l3-topology-attributes; 558 } 559 augment "/nd:networks/nd:network/nd:node" { 560 when "../nd:network-types/l3-unicast-topology" { 561 description 562 "Augmentation parameters apply only for networks with 563 L3 unicast topology"; 564 } 565 description 566 "L3 unicast node level attributes "; 567 uses l3-node-attributes; 568 } 569 augment "/nd:networks/nd:network/lnk:link" { 570 when "../nd:network-types/l3-unicast-topology" { 571 description 572 "Augmentation parameters apply only for networks with 573 L3 unicast topology"; 574 } 575 description 576 "Augment topology link attributes"; 577 uses l3-link-attributes; 578 } 579 augment "/nd:networks/nd:network/nd:node/" 580 +"lnk:termination-point" { 581 when "../../nd:network-types/l3-unicast-topology" { 582 description 583 "Augmentation parameters apply only for networks with 584 L3 unicast topology"; 585 } 586 description "Augment topology termination point configuration"; 587 uses l3-termination-point-attributes; 588 } 589 notification l3-node-event { 590 description 591 "Notification event for L3 node"; 592 leaf l3-event-type { 593 type l3-event-type; 594 description 595 "Event type"; 596 } 597 uses nd:node-ref; 598 uses l3-unicast-topology-type; 599 uses l3-node-attributes; 600 } 601 notification l3-link-event { 602 description 603 "Notification event for L3 link"; 604 leaf l3-event-type { 605 type l3-event-type; 606 description 607 "Event type"; 608 } 609 uses lnk:link-ref; 610 uses l3-unicast-topology-type; 611 uses l3-link-attributes; 612 } 613 notification l3-prefix-event { 614 description 615 "Notification event for L3 prefix"; 616 leaf l3-event-type { 617 type l3-event-type; 618 description 619 "Event type"; 620 } 621 uses nd:node-ref; 622 uses l3-unicast-topology-type; 623 container prefix { 624 description 625 "Containing L3 prefix attributes"; 626 uses l3-prefix-attributes; 627 } 628 } 629 notification termination-point-event { 630 description 631 "Notification event for L3 termination point"; 632 leaf l3-event-type { 633 type l3-event-type; 634 description 635 "Event type"; 636 } 637 uses lnk:tp-ref; 638 uses l3-unicast-topology-type; 639 uses l3-termination-point-attributes; 640 } 641 } 643 645 6. Extending the Model 647 The model can be extended for specific Layer 3 Unicast types. 648 Examples include OSPF and IS-IS topologies. In the following, two 649 additional YANG modules are introduced that define simple topology 650 models for OSPF and IS-IS, respectively. These modules intended to 651 serve as examples that illustrate how the general topology model can 652 be refined across multiple levels; they do not constitute full- 653 fledged OSPF and IS-IS topology models which may be more 654 comprehensive and refined than the models that are described here. 656 6.1. Example 1: OSPF Topology 658 6.1.1. Model Overview 660 The following model shows how the Layer 3 Unicast topology model can 661 be extended to cover OSFP topologies. For this purpose, a set of 662 augmentations are introduced in a separate YANG module, "example- 663 ietf-ospf-topology", whose structure is depicted in the following 664 diagram. Like before, brackets enclose list keys, "rw" means 665 configuration, "ro" operational state data, "?" designates optional 666 nodes, "*" designates nodes that can have multiple instances. 667 Parantheses enclose choice and case nodes. A "+" at the end of a 668 line indicates a line break. 670 module: example-ietf-ospf-topology 671 augment /nd:networks/nd:network/nd:network-types/+ 672 l3t:l3-unicast-topology: 673 +--rw ospf! 674 augment /nd:networks/nd:network/l3t:l3-topology-attributes: 675 +--rw ospf-topology-attributes 676 +--rw area-id? area-id-type 677 augment /nd:networks/nd:network/nd:node/l3t:l3-node-attributes: 678 +--rw ospf-node-attributes 679 +--rw (router-type)? 680 | +--:(abr) 681 | | +--rw abr? empty 682 | +--:(asbr) 683 | | +--rw asbr? empty 684 | +--:(internal) 685 | | +--rw internal? empty 686 | +--:(pseudonode) 687 | +--rw pseudonode? empty 688 +--rw dr-interface-id? uint32 689 +--rw multi-topology-id* uint8 690 augment /nd:networks/nd:network/lnk:link/l3t:l3-link-attributes: 691 +--rw ospf-link-attributes 692 +--rw multi-topology-id? uint8 693 augment /l3t:l3-node-event: 694 +---- ospf! 695 +---- ospf-node-attributes 696 +---- (router-type)? 697 | +--:(abr) 698 | | +---- abr? empty 699 | +--:(asbr) 700 | | +---- asbr? empty 701 | +--:(internal) 702 | | +---- internal? empty 703 | +--:(pseudonode) 704 | +---- pseudonode? empty 705 +---- dr-interface-id? uint32 706 +---- multi-topology-id* uint8 707 augment /l3t:l3-link-event: 708 +---- ospf! 709 +---- ospf-link-attributes 710 +---- multi-topology-id? uint8 712 The module augments "ietf-l3-unicast-topology" as follows: 714 o A new topology type for an OSPF topology is introduced. 716 o Additional topology attributes are defined in a new grouping which 717 augments l3-topology-attributes of the ietf-l3-unicast-topology 718 module. The attributes include an OSPF area-id identifying the 719 OSPF area. 721 o Additional data objects for nodes are introduced by augmenting the 722 l3-node-attributes of the l3-unicast-topology module. New objects 723 include router-type, dr-interface-id for pseudonodes, list of 724 multi-topology-ids, ospf node capabilities, and traffic 725 engineering attributes. 727 o Links are augmented with a multi-topology-id and traffic 728 engineering link attributes. 730 o Prefixes are augmented with OSPF specific forwarding address. 732 In addition, the module extends notifications for events concerning 733 Layer 3 nodes, links, termination points, and prefixes with OSPF 734 attributes. 736 It should be noted that the model defined here represents topology 737 and is intended as an example. It does not define how to configure 738 OSPF routers or interfaces. 740 6.1.2. OSPF Topology YANG Module 742 The OSPF Topology YANG Module is specified below. As mentioned, the 743 module is intended as an example for how the Layer 3 Unicast topology 744 model can be extended to cover OSFP topologies, but it is not 745 normative. Accordingly, the module is not delimited with CODE BEGINS 746 and CODE ENDS tags. 748 file "example-ietf-ospf-topology@2017-06-26.yang" 749 module example-ietf-ospf-topology { 750 yang-version 1.1; 751 namespace "urn:ietf:params:xml:ns:yang:example-ietf-ospf-topology"; 752 prefix "ospft"; 753 import ietf-yang-types { 754 prefix "yang"; 755 } 756 import ietf-network { 757 prefix "nd"; 758 } 759 import ietf-network-topology { 760 prefix "lnk"; 761 } 762 import ietf-l3-unicast-topology { 763 prefix "l3t"; 765 } 766 organization 767 "IETF I2RS (Interface to the Routing System) Working Group"; 768 contact 769 "WG Web: 770 WG List: 771 WG Chair: Susan Hares 772 773 WG Chair: Russ White 774 775 Editor: Alexander Clemm 776 777 Editor: Jan Medved 778 779 Editor: Robert Varga 780 781 Editor: Xufeng Liu 782 783 Editor: Nitin Bahadur 784 785 Editor: Hariharan Ananthakrishnan 786 "; 787 description 788 "This module defines a model for OSPF network topologies. 789 Copyright (c) 2017 IETF Trust and the persons identified as 790 authors of the code. All rights reserved. 791 Redistribution and use in source and binary forms, with or 792 without modification, is permitted pursuant to, and subject 793 to the license terms contained in, the Simplified BSD License 794 set forth in Section 4.c of the IETF Trust's Legal Provisions 795 Relating to IETF Documents 796 (http://trustee.ietf.org/license-info). 797 This version of this YANG module is part of 798 draft-ietf-i2rs-yang-l3-topology-09; 799 see the RFC itself for full legal notices. 800 NOTE TO RFC EDITOR: Please replace above reference to 801 draft-ietf-i2rs-yang-l3-topology-09 with RFC 802 number when published (i.e. RFC xxxx)."; 803 revision "2017-06-26" { 804 description 805 "Initial revision. 806 NOTE TO RFC EDITOR: Please replace the following reference 807 to draft-ietf-i2rs-yang-l3-topology-09 with 808 RFC number when published (i.e. RFC xxxx)."; 809 reference 810 "draft-ietf-i2rs-yang-l3-topology-09"; 811 } 812 typedef area-id-type { 813 type yang:dotted-quad; 814 description 815 "Area ID type."; 816 } 817 grouping ospf-topology-type { 818 description 819 "Identifies the OSPF topology type."; 820 container ospf { 821 presence "indiates OSPF Topology"; 822 description 823 "Its presence identifies the OSPF topology type."; 824 } 825 } 826 augment "/nd:networks/nd:network/nd:network-types/" 827 + "l3t:l3-unicast-topology" { 828 description 829 "Defines the OSPF topology type."; 830 uses ospf-topology-type; 831 } 832 augment "/nd:networks/nd:network/l3t:l3-topology-attributes" { 833 when "../nd:network-types/l3t:l3-unicast-topology/ospf" { 834 description 835 "Augment only for OSPF topology"; 836 } 837 description 838 "Augment topology configuration"; 839 container ospf-topology-attributes { 840 description 841 "Containing topology attributes"; 842 leaf area-id { 843 type area-id-type; 844 description 845 "OSPF area ID"; 846 } 847 } 848 } 849 augment "/nd:networks/nd:network/nd:node/l3t:l3-node-attributes" { 850 when "../../nd:network-types/l3t:l3-unicast-topology/ospf" { 851 description 852 "Augment only for OSPF topology"; 853 } 854 description 855 "Augment node configuration"; 856 uses ospf-node-attributes; 857 } 858 augment "/nd:networks/nd:network/lnk:link/l3t:l3-link-attributes" { 859 when "../../nd:network-types/l3t:l3-unicast-topology/ospf" { 860 description 861 "Augment only for OSPF topology"; 862 } 863 description 864 "Augment link configuration"; 865 uses ospf-link-attributes; 866 } 867 grouping ospf-node-attributes { 868 description 869 "OSPF node scope attributes"; 870 container ospf-node-attributes { 871 description 872 "Containing node attributes"; 873 choice router-type { 874 description 875 "Indicates router type"; 876 case abr { 877 leaf abr { 878 type empty; 879 description 880 "The node is ABR"; 881 } 882 } 883 case asbr { 884 leaf asbr { 885 type empty; 886 description 887 "The node is ASBR"; 888 } 889 } 890 case internal { 891 leaf internal { 892 type empty; 893 description 894 "The node is internal"; 895 } 896 } 897 case pseudonode { 898 leaf pseudonode { 899 type empty; 900 description 901 "The node is pseudonode"; 902 } 903 } 904 } 905 leaf dr-interface-id { 906 when "../pseudonode" { 907 description 908 "Valid only for pseudonode"; 910 } 911 type uint32; 912 default "0"; 913 description 914 "For pseudonodes, DR interface-id"; 915 } 916 leaf-list multi-topology-id { 917 type uint8 { 918 range "0..127"; 919 } 920 max-elements "128"; 921 description 922 "List of Multi-Topology Identifier up-to 128 (0-127). 923 See RFC 4915"; 924 } 925 } 926 } 927 grouping ospf-link-attributes { 928 description 929 "OSPF link scope attributes"; 930 container ospf-link-attributes { 931 description 932 "Containing OSPF link attributes"; 933 leaf multi-topology-id { 934 type uint8 { 935 range "0..127"; 936 } 937 description "Multi topology ID"; 938 } 939 } 940 } // ospf-link-attributes 941 augment "/l3t:l3-node-event" { 942 description 943 "OSPF node event"; 944 uses ospf-topology-type; 945 uses ospft:ospf-node-attributes; 946 } 947 augment "/l3t:l3-link-event" { 948 description 949 "OSPF link event"; 950 uses ospf-topology-type; 951 uses ospft:ospf-link-attributes; 952 } 953 } 955 6.2. Example 2: IS-IS Topology 957 6.2.1. Model Overview 959 IS-IS topologies are another type of Layer 3 Unicast topology. Like 960 in the case of OSPF topology, a model for IS-IS topology can be 961 defined in a separate module which augments "ietf-l3-unicast-igp- 962 topology". The structure of a corresponding model, "ietf-isis- 963 topology", is depicted in the following diagram. Like before, 964 brackets enclose list keys, "rw" means configuration, "ro" 965 operational state data, "?" designates optional nodes, "*" designates 966 nodes that can have multiple instances. Parantheses enclose choice 967 and case nodes. A "+" at the end of a line indicates a line break. 969 module: example-ietf-isis-topology 970 augment /nd:networks/nd:network/nd:network-types/+ 971 l3t:l3-unicast-topology: 972 +--rw isis! 973 augment /nd:networks/nd:network/l3t:l3-topology-attributes: 974 +--rw isis-topology-attributes 975 +--rw net? area-address 976 augment /nd:networks/nd:network/nd:node/l3t:l3-node-attributes: 977 +--rw isis-node-attributes 978 +--rw iso 979 | +--rw iso-system-id? system-id 980 | +--rw iso-pseudonode-id? iso-pseudonode-id 981 +--rw net* area-address 982 +--rw multi-topology-id* uint16 983 +--rw level? level 984 augment /nd:networks/nd:network/lnk:link/l3t:l3-link-attributes: 985 +--rw isis-link-attributes 986 +--rw multi-topology-id? uint16 987 augment /l3t:l3-node-event: 988 +---- isis! 989 +---- isis-node-attributes 990 +---- iso 991 | +---- iso-system-id? system-id 992 | +---- iso-pseudonode-id? iso-pseudonode-id 993 +---- net* area-address 994 +---- multi-topology-id* uint16 995 +---- level? level 996 augment /l3t:l3-link-event: 997 +---- isis! 998 +---- isis-link-attributes 999 +---- multi-topology-id? uint16 1001 The module augments the ietf-l3-unicast-topology as follows: 1003 o A new topology type is introduced for isis. 1005 o Additional topology attributes are introduced in a new grouping 1006 which augments "topology-attributes" of the ietf-l3-unicast- 1007 topology module. The attributes include an ISIS NET-id 1008 identifying the area. 1010 o Additional data objects for nodes are introduced by augmenting 1011 "node-attributes" of the ietf-l3-unicast-topology module. New 1012 objects include router-type, iso-system-id to identify the router, 1013 a list of multi-topology-id, a list of NET ids, and traffic 1014 engineering attributes. 1016 o Links are augmented with multi-topology-id and traffic engineering 1017 link attributes. 1019 In addition, the module augments nodes and links with IS-IS 1020 attributes. 1022 Again, it should be noted that the model defined here represents a 1023 topology and is intended as an example. It does not define how to 1024 configure IS-IS routers or interfaces. 1026 6.2.2. IS-IS Topology YANG Module 1028 The IS-IS Topology YANG Module is specified as follows. As 1029 mentioned, the module is intended as an example for how the Layer 3 1030 Unicast topology model can be extended to cover IS-IS topologies, but 1031 it is not normative. Accordingly, the module is not delimited with 1032 CODE BEGINS and CODE ENDS tags. 1034 file "example-ietf-isis-topology@2017-06-26.yang" 1035 module example-ietf-isis-topology { 1036 yang-version 1.1; 1037 namespace "urn:ietf:params:xml:ns:yang:example-ietf-isis-topology"; 1038 prefix "isist"; 1039 import ietf-network { 1040 prefix "nd"; 1041 } 1042 import ietf-network-topology { 1043 prefix "lnk"; 1044 } 1045 import ietf-l3-unicast-topology { 1046 prefix "l3t"; 1047 } 1048 organization 1049 "IETF I2RS (Interface to the Routing System) Working Group"; 1050 contact 1051 "WG Web: 1052 WG List: 1053 WG Chair: Susan Hares 1054 1055 WG Chair: Russ White 1056 1057 Editor: Alexander Clemm 1058 1059 Editor: Jan Medved 1060 1061 Editor: Robert Varga 1062 1063 Editor: Xufeng Liu 1064 1065 Editor: Nitin Bahadur 1066 1067 Editor: Hariharan Ananthakrishnan 1068 "; 1069 description 1070 "This module defines a model for IS-IS network topologies. 1071 Copyright (c) 2017 IETF Trust and the persons identified as 1072 authors of the code. All rights reserved. 1073 Redistribution and use in source and binary forms, with or 1074 without modification, is permitted pursuant to, and subject 1075 to the license terms contained in, the Simplified BSD License 1076 set forth in Section 4.c of the IETF Trust's Legal Provisions 1077 Relating to IETF Documents 1078 (http://trustee.ietf.org/license-info). 1079 This version of this YANG module is part of 1080 draft-ietf-i2rs-yang-l3-topology-08; 1081 see the RFC itself for full legal notices. 1082 NOTE TO RFC EDITOR: Please replace above reference to 1083 draft-ietf-i2rs-yang-l3-topology-08 with RFC 1084 number when published (i.e. RFC xxxx)."; 1085 revision "2017-06-26" { 1086 description 1087 "Initial revision. 1088 NOTE TO RFC EDITOR: Please replace the following reference 1089 to draft-ietf-i2rs-yang-l3-topology-08 with 1090 RFC number when published (i.e. RFC xxxx)."; 1091 reference 1092 draft-ietf-i2rs-yang-l3-topology-08; 1093 } 1094 typedef iso-pseudonode-id { 1095 type string { 1096 pattern '[0-9a-fA-F]{2}'; 1098 } 1099 description 1100 "ISO pseudonode id for broadcast network."; 1101 } 1102 typedef area-address{ 1103 type string { 1104 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1105 } 1106 description 1107 "This type defines the area address."; 1108 } 1109 typedef system-id { 1110 type string { 1111 pattern 1112 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1113 } 1114 description 1115 "This type defines ISIS system id using a pattern; 1116 an example of a system id looks like: 0143.0438.AeF0."; 1117 } 1118 typedef level { 1119 type enumeration { 1120 enum "level-1" { 1121 description 1122 "This enum describes L1 only capability."; 1123 } 1124 enum "level-2" { 1125 description 1126 "This enum describes L2 only capability."; 1127 } 1128 enum "level-all" { 1129 description 1130 "This enum describes both levels (L1 and L2) capability."; 1131 } 1132 } 1133 default "level-all"; 1134 description 1135 "This type defines the ISIS level of an object."; 1136 } 1137 grouping isis-topology-type { 1138 description 1139 "Identifies the ISIS topology type."; 1140 container isis { 1141 presence "Indicates ISIS Topology"; 1142 description 1143 "Its presence identifies the ISIS topology type."; 1144 } 1145 } 1146 augment "/nd:networks/nd:network/nd:network-types/" 1147 +"l3t:l3-unicast-topology" { 1148 description 1149 "Defines the ISIS topology type."; 1150 uses isis-topology-type; 1151 } 1152 augment "/nd:networks/nd:network/l3t:l3-topology-attributes" { 1153 when "../nd:network-types/l3t:l3-unicast-topology/isis" { 1154 description 1155 "Augment only for ISIS topology"; 1156 } 1157 description 1158 "Augment topology configuration"; 1159 container isis-topology-attributes { 1160 description 1161 "Containing topology attributes"; 1162 leaf net { 1163 type area-address; 1164 description 1165 "ISO NET ID value"; 1166 } 1167 } 1168 } 1169 augment "/nd:networks/nd:network/nd:node/"+ 1170 "l3t:l3-node-attributes" { 1171 when "../../nd:network-types/l3t:l3-unicast-topology/isis" { 1172 description 1173 "Augment only for ISIS topology"; 1174 } 1175 description 1176 "Augment node configuration"; 1177 uses isis-node-attributes; 1178 } 1179 augment "/nd:networks/nd:network/lnk:link/l3t:l3-link-attributes" { 1180 when "../../nd:network-types/l3t:l3-unicast-topology/isis" { 1181 description 1182 "Augment only for ISIS topology"; 1183 } 1184 description 1185 "Augment link configuration"; 1186 uses isis-link-attributes; 1187 } 1188 grouping isis-node-attributes { 1189 description 1190 "ISIS node scope attributes"; 1191 container isis-node-attributes { 1192 description 1193 "Containing node attributes"; 1195 container iso { 1196 description 1197 "Containing ISO atrributes"; 1198 leaf iso-system-id { 1199 type system-id; 1200 description 1201 "ISO system ID"; 1202 } 1203 leaf iso-pseudonode-id { 1204 type iso-pseudonode-id; 1205 default "00"; 1206 description 1207 "Pseudonode ID"; 1208 } 1209 } 1210 leaf-list net { 1211 type area-address; 1212 max-elements 3; 1213 description 1214 "List of ISO NET IDs"; 1215 } 1216 leaf-list multi-topology-id { 1217 type uint16 { 1218 range "0..4095"; 1219 } 1220 max-elements "128"; 1221 description 1222 "List of Multi Topology Identifier up to 128 (0-127). 1223 RFC 4915"; 1224 } 1225 leaf level { 1226 type level; 1227 description "Level 1, Level 2 or Level 1 and 2"; 1228 } 1229 } 1230 } 1231 grouping isis-link-attributes { 1232 description 1233 "ISIS link scope attributes"; 1234 container isis-link-attributes { 1235 description 1236 "Containing link attributes"; 1237 leaf multi-topology-id { 1238 type uint16 { 1239 range "0..4095"; 1240 } 1241 description 1242 "Multi topology ID"; 1244 } 1245 } 1246 } 1247 augment "/l3t:l3-node-event" { 1248 description 1249 "ISIS node event"; 1250 uses isis-topology-type; 1251 uses isis-node-attributes; 1252 } 1253 augment "/l3t:l3-link-event" { 1254 description 1255 "ISIS link event"; 1256 uses isis-topology-type; 1257 uses isis-link-attributes; 1258 } 1259 } 1261 7. Interactions with Other YANG Modules 1263 As described in section Section 3, the model builds on top of, and 1264 augments, the YANG modules defined in 1265 [I-D.draft-ietf-i2rs-yang-network-topo]. Specifically, module ietf- 1266 l3-unicast-topology augments modules "ietf-network" and "ietf- 1267 network-topology". In addition, the model makes use of data types 1268 that have been defined in [RFC6991]. 1270 The moodel defines a protocol independent YANG data model with layer 1271 3 topology information. It is separate from and not linked with data 1272 models that are used to configure routing protocols or routing 1273 information. This includes e.g. model "ietf-routing" [RFC8022] and 1274 model "ietf-fb-rib" [I-D.draft-acee-rtgwg-yang-rib-extend]. 1276 The model obeys the requirements for the ephemeral state found in the 1277 document [I-D.draft-ietf-i2rs-ephemeral-state]. For ephemeral 1278 topology data that is server provided, the process tasked with 1279 maintaining topology information will load information from the 1280 routing process (such as OSPF) into the data model without relying on 1281 a configuration datastore. 1283 8. IANA Considerations 1285 This document registers the following namespace URI in the "IETF XML 1286 Registry" [RFC3688]: 1288 URI: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology 1289 Registrant Contact: The IESG. 1290 XML: N/A; the requested URI is an XML namespace. 1292 This document registers the following YANG module in the "YANG Module 1293 Names" registry [RFC6020]: 1295 Name: ietf-l3-unicast-topology 1296 Namespace: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology 1297 Prefix: l3t 1298 Reference: draft-ietf-i2rs-yang-l3-topology-08.txt (RFC form) 1300 9. Security Considerations 1302 The YANG module defined in this memo is designed to be accessed via 1303 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1304 secure transport layer, and the mandatory-to-implement secure 1305 transport is Secure Shell (SSH) [RFC6242]. The NETCONF access 1306 control model [RFC6536] provides the means to restrict access for 1307 particular NETCONF users to a pre-configured subset of all available 1308 NETCONF protocol operations and content. 1310 In general, Layer 3 Unicast topologies are server-provided and 1311 provide ephemeral topology information. As they provide read-only 1312 access to clients, they are less vulnerable. That said, the YANG 1313 module does in principle allow information to be configurable in 1314 certain instances (when the server-provided flag for the topology is 1315 set to false). In such cases, a malicious client could introduce 1316 topologies that are undesired. For example, a client could remove or 1317 add topological links between nodes, which could lead to an undesired 1318 and suboptimal topology, which might impact service levels and 1319 network utilization. It is therefore important that the NETCONF 1320 access control model is vigorously applied to prevent topology 1321 configuration by unauthorized clients. 1323 10. Contributors 1325 The model presented in this paper was contributed to by more people 1326 than can be listed on the author list. Additional contributors 1327 include: 1329 o Vishnu Pavan Beeram, Juniper 1331 o Igor Bryskin, Huawei 1333 o Ken Gray, Cisco 1335 o Aihua Guo, Huawei 1337 o Tom Nadeau, Brocade 1339 o Tony Tkacik 1340 o Aleksandr Zhdankin, Cisco 1342 11. Acknowledgements 1344 We wish to acknowledge the helpful contributions, comments, and 1345 suggestions that were received from Ladislav Lhotka, Andy Bierman, 1346 Carlos Pignataro, Joel Halpern, Juergen Schoenwaelder, Alia Atlas, 1347 Susan Hares, Benoit Claise, and Carl Moberg. 1349 12. References 1351 12.1. Normative References 1353 [I-D.draft-ietf-i2rs-yang-network-topo] 1354 Clemm, A., Medved, J., Varga, R., Bahadur, N., 1355 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 1356 Network Topologies", I-D draft-ietf-i2rs-yang-network- 1357 topo-13, June 2017. 1359 [RFC1195] Callon, R., "Use of OSI IS-IS for Routing in TCP/IP and 1360 Dual Environments", RFC 1195, December 1990. 1362 [RFC2328] Moy, J., "OSPF Version 2", RFC 2328, April 1998. 1364 [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group 1365 MIB", RFC 2863, June 2000. 1367 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January 1368 2004. 1370 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1371 Network Configuration Protocol (NETCONF)", RFC 6020, 1372 October 2010. 1374 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1375 Bierman, "Network Configuration Protocol (NETCONF)", 1376 RFC 6241, June 2011. 1378 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1379 Shell (SSH)", RFC 6242, June 2011. 1381 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1382 Protocol (NETCONF) Access Control Model", RFC 6536, March 1383 2012. 1385 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1386 July 2013. 1388 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1389 RFC 7950, August 2016. 1391 12.2. Informative References 1393 [I-D.draft-acee-rtgwg-yang-rib-extend] 1394 Lindem, A. and Y. Qu, "YANG Data Model for RIB 1395 Extensions", I-D draft-acee-rtgwg-yang-rib-extend-02, 1396 October 2016. 1398 [I-D.draft-ietf-i2rs-ephemeral-state] 1399 Haas, J. and S. Hares, "I2RS Ephemeral State 1400 Requirements", I-D draft-ietf-i2rs-ephemeral-state-23, 1401 November 2016. 1403 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1404 Hares, S. and M. Chen, "Summary of I2RS Use Case 1405 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- 1406 03, November 2016. 1408 [I-D.draft-ietf-teas-yang-te-topo] 1409 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 1410 O. Gonzalez De Dios, "YANG Data Model for TE Topologies", 1411 I-D draft-ietf-teas-yang-te-topo-09, June 2017. 1413 [RFC7223] Bjorklund, M., "A YANG Data Model for Routing Management", 1414 RFC 7223, May 2014. 1416 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1417 Management", RFC 8022, November 2016. 1419 Authors' Addresses 1421 Alexander Clemm 1422 Huawei 1424 EMail: ludwig@clemm.org 1426 Jan Medved 1427 Cisco 1429 EMail: jmedved@cisco.com 1430 Robert Varga 1431 Pantheon Technologies SRO 1433 EMail: robert.varga@pantheon.sk 1435 Xufeng Liu 1436 Ericsson 1438 EMail: xliu@kuatrotech.com 1440 Hariharan Ananthakrishnan 1441 Packet Design 1443 EMail: hari@packetdesign.com 1445 Nitin Bahadur 1446 Bracket Computing 1448 EMail: nitin_bahadur@yahoo.com