TRILL Working Group W. Hao
INTERNET-DRAFT Y. Li
Intended status: Standards Track Huawei Technologies
D. Kumar
Cisco
M. Durrani
Cisco
H. Zhai
JIT
L. Xia
Huawei Technologies
Expires: October 2015 April 30, 2015
TRILL YANG Data Model
draft-ietf-trill-yang-01.txt
Abstract
This document defines a YANG data model for TRILL protocol.
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with
the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in
progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Hao & Li, et al Expires October 30, 2015 [Page 1]
Internet-Draft TRILL YANG Data Model April 2015
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without
warranty as described in the Simplified BSD License.
Table of Contents
1. Introduction ................................................ 2
2. Conventions Used in This Document............................ 2
3. Design of Data model......................................... 3
4. TRILL YANG Data model........................................ 6
5. Security Considerations..................................... 22
6. IANA Considerations ........................................ 22
7. References ................................................. 22
7.1. Normative References................................... 22
7.2. Informative References................................. 23
8. Acknowledgments ............................................ 23
1. Introduction
YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241].
This document defines a YANG [RFC6020] data model for the operation
of TRILL base protocol.
2. Conventions Used in This Document
This document uses the acronyms defined in [RFC6325], in addition to
the following:
CSNP: Complete Sequence Number Protocol Data Unit
DRB: Designated RBridge
Hao & Li, et al Expires October 30, 2015 [Page 2]
Internet-Draft TRILL YANG Data Model April 2015
IS-IS: Intermediate System to Intermediate System
LSDB: Link State Database
MAC: Media Access Control address
MTU: Maximum Transmission Unit
NETCONF: Network Configuration Protocol
PSNP: Partial Sequence Number Packet
RBridge: An alternative name for a TRILL Switch
RPF: Reverse Path Forward
SNP: Scalable Network Pack
SSH: Secure Shell
VLAN: Virtual Local-Area Network
3. Design of Data model
There is only one module for the TRILL base protocol. The module can
be augmented for other TRILL extended features with their specific
definitions, such as TRILL active-active connection, TRILL Fine
Grained Label, etc.
The TRILL Yang module includes one container of trillSites which
contains a list of instances as many implementations are currently
supporting multiple ISIS instances within a single RBridge. The
configuration data is divided into four categories which include per
RBridge, per nickname per RBridge, per port per RBridge, and per
VLAN per RBridge. The operating status includes the information of
LSDB, unicast and multicast routing table, RPF check, nickname, peer
and some statistics.
The figure below describes the overall structure of the TRILL Yang
model:
Hao & Li, et al Expires October 30, 2015 [Page 3]
Internet-Draft TRILL YANG Data Model April 2015
module: trill
+--rw instances* [instanceID]
| +--rw instanceID
| +--rw name
| +--rw network-entity* [netEntity]
| +--rw lspTimer
| | +--rw lspLife
| | +--rw lspRefresh
| | +--rw lspGeneration
| +--rw nickNumber
| +--rw treeNumber
| +--rw referenceBandwidth
| +--rw nativeConfidence
| +--rw remoteConfidence
| +--rw minLinkMTU
| +--rw MTUProbes
| +--rw nicknames* [nickname]
| | +--rw nickname
| | +--rw priority
| | +--rw rootPriority
| +--rw trillPorts* [ifName]
| | +--rw ifName
| | +--rw portMode
| | +--rw timer
| | | +--rw csnp
| | | +--rw hello
| | | +--rw holdingMultiplier
| | | +--rw lspRetransmit
| | | +--rw lspThrottle
| | | | +--rw throttleInterval
| | | | +--rw countNumber
| | | +--rw inhibitionTimer
| | +--rw drbConfig
| | | +--rw drbPriority
| | | +--rw holdingTimer
| | +--rw macLearningFlag
| | +--rw trillFrameReceiveFlag
| | +--rw cost
| | +--rw enabledVlans
| | +--rw announcingVlans
| | +--rw forwardingVlans
| | +--rw designatedVlan
| | +--ro circuitId
| | +--ro circuitMTU
| | +--ro drbStatus
| | +--ro trillStatus
Hao & Li, et al Expires October 30, 2015 [Page 4]
Internet-Draft TRILL YANG Data Model April 2015
| | +--ro designatedVlan
| +--rw vlanConfigs* [vlanID]
| | +--rw vlanID
| | +--rw participationFlag
| | +--rw priority
| | +--rw priority
| | +--rw holdingTimer
| +--ro trillLsdbInfos* [lspId]
| | +--ro lspId
| | +--ro seqenceNumber
| | +--ro checkSum
| | +--ro lspLength
| | +--ro attBit
| | +--ro partitionBit
| | +--ro overloadBit
| | +--ro holdTime
| | +--ro localLsp
| +--ro trillRouteInfos* [nickname nextHop]
| | +--ro nickName
| | +--ro cost
| | +--ro outInterface
| | +--ro outVlan
| | +--ro nextHop
| | +--ro hopCount
| +--ro trillRpfCheckInfos* [ingressNickname treeNickname]
| | +--ro ingressNickname
| | +--ro treeNickname
| | +--ro interfaceName
| | +--ro neighborMac
| | +--ro designatedVlan
| +--ro trillMRouteInfos* [vlan rootNickname]
| | +--ro vlan
| | +--ro rootNickname
| | +--ro hopCount
| | +--ro outInterfaceinfo* [outInterface outVlan]
| | | +--ro outInterface
| | | +--ro outVlan
| +--ro trillNicknameInfos* [nickname systemId]
| | +--ro nickName
| | +--ro priority
| | +--ro rootPriority
| | +--ro systemId
| | +--ro conflictState
| | +--ro staticFlag
| | +--ro isLocal
| +--ro trillPeerInfos* [hostName circuitId]
| | +--ro hostName
Hao & Li, et al Expires October 30, 2015 [Page 5]
Internet-Draft TRILL YANG Data Model April 2015
| | +--ro interfaceName
| | +--ro circuitId
| | +--ro status
| | +--ro holdTime
| | +--ro priority
| +--ro trillStatistics
| | +--ro interfaceStat
| | | +--ro upNum
| | | +--ro downNum
| | +--ro broadcastPeerStat
| | | +--ro reportNum
| | | +--ro detectNum
| | | +--ro twoWayNum
| | +--ro p2pPeerStat
| | | +--ro upNum
| | | +--ro initNum
| | +--ro unicastRoutesNum
| | +--ro multicastRoutesNum
| | +--ro rpfEntrysNum
| | +--ro remoteNicknamesNum
| | +--ro lsdbLSPsNum
| | +--ro selfLSPsNum
| | +--ro multicastTreesNum
| | +--ro unicastNodesNum
| | +--ro multicastNodesNum
| +--ro pktStatistics* [interfaceName]
| | +--ro interfaceName
| | +--ro sentHellosNum
| | +--ro recvedHellosNum
| | +--ro sentLSPsNum
| | +--ro recvedLSPsNum
| | +--ro sentCSNPsNum
| | +--ro recvedCSNPsNum
| | +--ro sentPSNPsNum
| | +--ro recvedPSNPsNum
| | +--ro lspRetransmissionsNum
| | +--ro drbElectionsNum
+ +
4. TRILL YANG Data model
module trill {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-trill";
prefix ietf-trill;
import ietf-yang-types {
prefix yang;
Hao & Li, et al Expires October 30, 2015 [Page 6]
Internet-Draft TRILL YANG Data Model April 2015
}
revision 2015-04-30{
description "creating trill base model";
}
container trillSites {
list trillSite {
key "instanceId";
leaf instanceId {
config "true";
type uint32 {
range "0..4294967295";
}
}
leaf name {
config "true";
type string;
}
container trillNetEntitys {
list trillNetEntity {
key "netEntity";
leaf netEntity {
config "true";
type string;
}
}
}
container lspTimer {
leaf lspLife {
description "LSP aging timer.Unit:Second";
config "true";
default "1200";
type uint16 {
range "2..65535";
}
}
leaf lspRefresh {
description "LSP refresh timer.Unit:Second";
config "true";
default "900";
type uint16 {
range "1..65534";
}
Hao & Li, et al Expires October 30, 2015 [Page 7]
Internet-Draft TRILL YANG Data Model April 2015
}
leaf lspGeneration {
description "LSP generate timer.Unit:Second";
config "true";
default "2";
type uint8 {
range "1..120";
}
}
}
leaf nickNumber {
config "true";
default "1";
type uint16 {
range "1..256";
}
}
leaf treeNumber {
config "true";
default "1";
type uint16 {
range "1..65535";
}
}
leaf referenceBandwidth {
config "true";
default "20000000";
type uint32 {
range "1..2147483648";
}
}
leaf nativeConfidence {
description "The confidence in { MAC, VLAN, local port }
triples learned from locally received native frames";
config "true";
default "32";
type uint8 {
range "0..255";
}
}
leaf remoteConfidence {
description "The confidence in { MAC, VLAN, remote
RBridge } triples learned from decapsulating frames";
config "true";
default "32";
type uint8 {
range "0..255";
Hao & Li, et al Expires October 30, 2015 [Page 8]
Internet-Draft TRILL YANG Data Model April 2015
}
}
leaf minLinkMTU {
config "true";
default "1470";
type uint16 {
range "1..65535";
}
}
leaf MTUProbes {
description "The number of failed MTU-probes";
config "true";
default "3";
type uint8 {
range "1..255";
}
}
container Nicknames {
list Nickname {
key "nickName";
leaf nickName {
config "true";
mandatory "true";
type uint16 {
range "1..65471";
}
}
leaf priority {
config "true";
default "192";
type uint8 {
range "128..255";
}
}
leaf rootPriority {
config "true";
default "32768";
type uint16 {
range "1..65535";
}
}
}
}
container trillPorts {
list trillPort {
key "ifName";
leaf ifName {
Hao & Li, et al Expires October 30, 2015 [Page 9]
Internet-Draft TRILL YANG Data Model April 2015
description "trill interface";
type string;
}
leaf portMode {
config "true";
default "p2p";
type enumeration {
enum "access" {
value "0";
description "access:only process native
frame";
}
enum "p2p" {
value "1";
description "p2p:use IS-IS P2P Hellos";
}
enum "trunk" {
value "2";
description "trunk:only process TRILL
frames";
}
enum "hybrid" {
value "3";
description "hybrid: both trunk and access
port";
}
}
}
container timer {
leaf csnp {
config "true";
default "10";
type uint16 {
range "1..65535";
}
}
leaf hello {
config "true";
default "10";
type uint8 {
range "3..255";
}
}
leaf holdingMultiplier {
config "true";
default "3";
type uint16 {
Hao & Li, et al Expires October 30, 2015 [Page 10]
Internet-Draft TRILL YANG Data Model April 2015
range "3..1000";
}
}
leaf lspRetransmit {
config "true";
default "5";
type uint16 {
range "1..300";
}
}
container lspThrottle {
leaf throttleInterval {
description "The interval timer between two
LSP messages.Unit:ms";
config "true";
default "50";
type uint16 {
range "1..10000";
}
}
leaf countNumber {
description "The max messages number being sent
each time.Unit:ms";
config "true";
default "10";
type uint16 {
range "1..1000";
}
}
}
leaf inhibitionTimer {
description "The inhibition time for the port
when root bridge changes.Unit:Second";
config "true";
default "30";
type uint8 {
range "0..30";
}
}
}
container drbConfig {
leaf drbPriority {
config "true";
default "64";
type uint8 {
range "0..127";
}
Hao & Li, et al Expires October 30, 2015 [Page 11]
Internet-Draft TRILL YANG Data Model April 2015
}
leaf holdingTimer {
config "true";
default "10";
type uint8 {
range "3..255";
}
}
}
leaf macLearningFlag {
description "if learning MAC address from locally
received native frames";
config "true";
default "true";
type boolean;
}
leaf trillFrameReceiveFlag {
description "if receiving of TRILL frames from non
IS-IS adjacency";
config "true";
default "false";
type boolean;
}
leaf cost {
config "true";
default "0";
type uint32 {
range "0..16777215";
}
}
leaf enabledVlans {
config "true";
type binary{
length "1..4096";
}
}
leaf announcingVlans {
config "true";
type binary{
length "1..4096";
}
}
leaf forwardingVlans {
config "true";
type binary{
length "1..4096";
}
Hao & Li, et al Expires October 30, 2015 [Page 12]
Internet-Draft TRILL YANG Data Model April 2015
}
leaf circuitId {
config "false";
type uint8;
}
leaf circuitMTU {
config "false";
type uint32;
}
leaf designatedVlan {
config "true";
type uint16{
range "1..4096";
}
}
leaf drbStatus {
config "false";
type enumeration {
enum "Non-DRB" {
value "0";
description "Non-DRB:";
}
enum "DRB" {
value "1";
description "DRB:";
}
enum "Down" {
value "2";
description "Down:";
}
enum "Suspended" {
value "3";
description "Suspended:";
}
}
}
}
}
container vlanConfigs {
list vlanConfig{
key "vlanID";
config "true";
leaf vlanID {
config "true";
type uint16 {
Hao & Li, et al Expires October 30, 2015 [Page 13]
Internet-Draft TRILL YANG Data Model April 2015
range "1..4096";
}
}
leaf participationFlag {
config "true";
default "false";
type boolean;
}
leaf priority {
config "true";
default "64";
type uint8 {
range "0..127";
}
}
leaf holdingTimer {
config "true";
default "10";
type uint8 {
range "3..255";
}
}
}
}
container trillRouteInfos {
list trillRouteInfo {
key "nickName nextHop";
config "false";
leaf nickName {
config "false";
type uint32;
}
leaf cost {
config "false";
type uint32;
}
leaf outInterface {
config "false";
type string;
}
leaf outVlan {
config "false";
type uint32;
}
leaf nextHop {
config "false";
Hao & Li, et al Expires October 30, 2015 [Page 14]
Internet-Draft TRILL YANG Data Model April 2015
type string;
}
leaf hopCount {
config "false";
type uint32;
}
}
}
container trillMRouteInfos {
list trillMRouteInfo {
description "Distribution pruning tree route table;
For non-pruning tree, VLAN is set to be 0XFFFF";
key "vlan rootNickname";
config "false";
leaf vlan {
config "false";
type uint16;
}
leaf rootNickname {
config "false";
type uint16;
}
leaf hopCount {
config "false";
type uint16;
}
container outInterfaceinfo {
list trillMRouteOutInterfaceInfo {
key "outInterface outVlan";
config "false";
leaf outInterface {
config "false";
type "string";
}
leaf outVlan {
config "false";
type "uint32";
}
}
}
}
}
Hao & Li, et al Expires October 30, 2015 [Page 15]
Internet-Draft TRILL YANG Data Model April 2015
container trillRpfCheckInfos {
list trillRpfCheckInfo {
key "ingressNickname treeNickname";
config "false";
leaf ingressNickname {
config "false";
type "uint16";
}
leaf treeNickname {
config "false";
type "uint16";
}
leaf interfaceName {
config "false";
type "string";
}
leaf neighborMac {
config "false";
type "string";
}
leaf outVlan {
config "false";
type "uint16";
}
}
}
container trillPeerInfos {
list trillPeerInfo {
key "hostName circuitId";
config "false";
leaf hostName {
description "Peer RBridge name";
config "false";
type "string";
}
leaf interfaceName {
config "false";
type "string";
}
leaf circuitId {
config "false";
type "string";
}
Hao & Li, et al Expires October 30, 2015 [Page 16]
Internet-Draft TRILL YANG Data Model April 2015
leaf status {
config "false";
type enumeration {
enum "report" {
value "0";
description "report:";
}
enum "detect" {
value "1";
description "detect:";
}
enum "down" {
value "2";
description "down:";
}
enum "2way" {
value "3";
description "2way:";
}
}
}
leaf holdTime {
config "false";
type "uint32";
}
leaf priority {
config "false";
type "string";
}
}
}
container trillLsdbInfos {
list trillLsdbInfo {
key "lspId";
config "false";
leaf lspId {
config "false";
type "string";
}
leaf seqenceNumber {
config "false";
type "string";
}
leaf checkSum {
config "false";
Hao & Li, et al Expires October 30, 2015 [Page 17]
Internet-Draft TRILL YANG Data Model April 2015
type "string";
}
leaf lspLength {
config "false";
type uint32 {
range "0..2000";
}
}
leaf attBit {
config "false";
type uint8 {
range "0..1";
}
}
leaf partitionBit {
config "false";
type uint8 {
range "0..1";
}
}
leaf overloadBit {
config "false";
type uint8 {
range "0..1";
}
}
leaf holdTime {
config "false";
type "string";
}
leaf localLsp {
config "false";
type "boolean";
}
}
}
container trillNicknameInfos {
list trillNicknameInfo {
key "nickName systemId";
config "false";
leaf nickName {
config "false";
type uint32;
}
leaf priority {
Hao & Li, et al Expires October 30, 2015 [Page 18]
Internet-Draft TRILL YANG Data Model April 2015
config "false";
type uint32;
}
leaf rootPriority {
config "false";
type uint32;
}
leaf systemId {
config "false";
type string;
}
leaf conflictState {
config "false";
type enumeration {
enum "S" {
value "0";
description "S:";
}
enum "A" {
value "1";
description "A:";
}
}
}
leaf staticFlag {
config "false";
type enumeration {
enum "S" {
value "0";
description "S:";
}
enum "D" {
value "1";
description "D:";
}
}
}
leaf isLocal {
config "false";
type boolean;
}
}
}
container trillStatistics {
container interfaceStat {
leaf upNum {
Hao & Li, et al Expires October 30, 2015 [Page 19]
Internet-Draft TRILL YANG Data Model April 2015
config "false";
type uint32;
}
leaf downNum {
config "false";
type uint32;
}
}
container pktstatistics {
leaf reportNum {
config "false";
type uint32;
}
leaf detectNum {
config "false";
type uint32;
}
leaf twoWayNum {
config "false";
type uint32;
}
}
leaf unicastRoutesNum {
config "false";
type uint32;
}
leaf multicastRoutesNum {
config "false";
type uint32;
}
leaf rpfEntrysNum {
config "false";
type uint32;
}
leaf remoteNicknamesNum {
config "false";
type uint32;
}
leaf lsdbLSPsNum {
config "false";
type uint32;
}
leaf selfLSPsNum {
config "false";
type uint32;
}
leaf multicastTreesNum {
Hao & Li, et al Expires October 30, 2015 [Page 20]
Internet-Draft TRILL YANG Data Model April 2015
config "false";
type uint32;
}
leaf unicastNodesNum {
config "false";
type uint32;
}
leaf multicastNodesNum {
config "false";
type uint32;
}
}
container pktStatistics {
list pktStatistic {
key "interfaceName";
config "false";
leaf interfaceName {
config "false";
type string;
}
leaf sentHellosNum {
config "false";
type uint32;
}
leaf recvedHellosNum {
config "false";
type uint32;
}
leaf sentLSPsNum {
config "false";
type uint32;
}
leaf recvedLSPsNum {
config "false";
type uint32;
}
leaf sentCSNPsNum {
config "false";
type uint32;
}
leaf recvedCSNPsNum {
config "false";
type uint32;
}
leaf sentPSNPsNum {
Hao & Li, et al Expires October 30, 2015 [Page 21]
Internet-Draft TRILL YANG Data Model April 2015
config "false";
type uint32;
}
leaf recvedPSNPsNum {
config "false";
type uint32;
}
leaf lspRetransmissionsNum {
config "false";
type uint32;
}
leaf drbElectionsNum {
config "false";
type uint32;
}
}
}
}
}
}
5. Security Considerations
The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241] [RFC6241]. The lowest NETCONF layer
is the secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242] [RFC6242]. The NETCONF access control
model [RFC6536] [RFC6536] provides the means to restrict access for
particular NETCONF users to a pre-configured subset of all available
NETCONF protocol operations and content.
6. IANA Considerations
This document requires no IANA Actions. RFC Editor: Please remove
this section before publication.
7. References
7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2234] Crocker, D. and Overell, P.(Editors), "Augmented BNF for
Syntax Specifications: ABNF", RFC 2234, Internet Mail
Consortium and Demon Internet Ltd., November 1997.
Hao & Li, et al Expires October 30, 2015 [Page 22]
Internet-Draft TRILL YANG Data Model April 2015
7.2. Informative References
[RFC6325] Perlman, R., et.al., "Routing Bridges (RBridges): Base
Protocol Specification", RFC 6325, July 2011.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman,
"Network Configuration Protocol (NETCONF)", RFC6241, June
2011.
8. Acknowledgments
The authors wish to acknowledge the important contributions of
Donald Eastlake, Susan Hares, Guangying Zheng, Xianping Zhang,
Wenxia Hou, Zhibo Hu.
Authors' Addresses
Weiguo Hao
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Phone: +86-25-56623144
Email: haoweiguo@huawei.com
Yizhou Li
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Phone: +86-25-56625375
Email: liyizhou@huawei.com
Hao & Li, et al Expires October 30, 2015 [Page 23]
Internet-Draft TRILL YANG Data Model April 2015
Deepak Kumar
CISCO Systems
510 McCarthy Blvd
Milpitas, CA 95035.
Email: dekumar@cisco.com
Muhammad Durrani
Cisco
Email: mdurrani@cisco.com
Hongjun Zhai
Jinling Institute of Technology
99 Hongjing Avenue, Jiangning District
Nanjing, Jiangsu 211169
China
Email: honjun.zhai@tom.com
Liang Xia
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Email: frank.xialiang@huawei.com
Hao & Li, et al Expires October 30, 2015 [Page 24]