Routing Area Common YANG Data Types draft-rtgyangdt-rtgwg-routing-types-00 Routing Area Yang Design Team Xufeng Liu Yingzhen Qu Acee Lindem Christian Hopps Lou Berger IETF97
Introduction Same or similar YANG types are used in the routing area YANG models Defined multiple times in individual models Definitions not Consistent These common types are collected and defined in this model In a sharable module Should be imported in routing area models Ensures consistent definitions for common routing types Analogous to ietf-yang-types but types specific to routing area
Types router-id address-family route-target route-distinguisher ieee-bandwidth link-access-type multicast-source-ipv4-addr-type multicast-source-ipv6-addr-type
Types timer-multiplier timer-value-seconds16 timer-value-seconds32 timer-value-milliseconds
Router ID Example usage: OSPF, BGP, LDP typedef router-id { type yang:dotted-quad; } Example usage: OSPF, BGP, LDP
Address Family Example usage: OSPF, BGP, ISIS, LDP, PIM identity address-family { } identity ipv4 { base address-family; identity ipv6 { identity nsap { identity hdlc { ...... Example usage: OSPF, BGP, ISIS, LDP, PIM
Route target Example usage: BGP, L3VPN, L2VPN, MVPN typedef route-target { type string { pattern '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|' + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|' + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|' + '[0-3]?\d{0,8}\d))|' + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|' + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|' + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|' + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|' + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|' + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):' + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' + '[0-5]?\d{0,3}\d))'; } description “Type 0, 1, and 2 defined in RFC4360: 0:2-byte-asn:4-byte-number 1:4-byte-ipv4addr:2-byte-number 2:4-byte-asn:2-byte-number. Examples: 0:100:100, 1:1.1.1.1:100, and 2:1234567890:203."; } Example usage: BGP, L3VPN, L2VPN, MVPN
Route Distinguisher Example usage: BGP, L3VPN, L2VPN, LDP typedef route-distinguisher { type string { pattern '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|' + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|' + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|' + '[0-3]?\d{0,8}\d))|' + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|' + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|' + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|' + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|' + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|' + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):' + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' + '[0-5]?\d{0,3}\d))|' + '(([3-9a-fA-F]|[1-9a-fA-F][\da-fA-F]{1,3}):' + '[\da-fA-F]{1,12})'; } description “Type 0, 1, and 2 defined in RFC4364: 0:2-byte-asn:4-byte-number 1:4-byte-ipv4addr:2-byte-number 2:4-byte-asn:2-byte-number. 2-byte-other-hex-number:6-byte-hex-number”;} Example usage: BGP, L3VPN, L2VPN, LDP
Bandwidth in IEEE Format typedef ieee-bandwidth { type string { pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}'; } description "IEEE 754 floating point 32-bit binary format: (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), Examples: Fast Ethernet(100.00 Mbps) 0x4B3EBC20 The encoding format is the external hexadecimal-significand character sequences: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D Examples: 0x0p0, 0x1p10, and 0x1.abcde2p+20"; Example usage: OSPF, ISIS, RSVP-TE
Link Access Type Example usage: OSPF, ISIS, TE Topology typedef link-access-type { type enumeration { enum "broadcast" { } enum "non-broadcast" { enum "point-to-multipoint" { enum "point-to-point" { Example usage: OSPF, ISIS, TE Topology
IPv4 Multicast Source Address typedef multicast-source-ipv4-addr-type { type union { type enumeration { enum '*' { description "Any source address."; } type inet:ipv4-address; ”IPv4 Multicast source address type."; Example usage: PIM, ISMP-MLD, MSDP
IPv6 Multicast Source Address typedef multicast-source-ipv6-addr-type { type union { type enumeration { enum '*' { description "Any source address."; } type inet:ipv6-address; ”IPv6 Multicast source address type."; Example usage: PIM, ISMP-MLD, MSDP
Timer Value Example usage: OSPF, ISIS, LDP, PIM, IGMP-MLD typedef timer-value-seconds16 { type union { type uint16 { range "1..65535"; } type enumeration { enum "infinity" { description "The timer is set to infinity."; enum "no-expiry" { description "The timer is not set."; units seconds; description "Timer value type, in seconds (16 bit range)."; Other Variants: seconds32, milliseconds Example usage: OSPF, ISIS, LDP, PIM, IGMP-MLD
Timer Multiplier Example usage: RSVP, PIM, BFD typedef timer-multiplier { type uint8; description "The number of timer value intervals that should be interpreted as a failure."; } Example usage: RSVP, PIM, BFD
Next Steps Align with other models Solicit comments Additional common routing types for initial model? WG adoption Most useful if it progress at the same cadence as first wave of routing models.