Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
module ietf-taps-api {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-taps-api";
prefix "taps";
import ietf-inet-types {
prefix "inet";
reference "RFC 6991 Section 4";
}
import ietf-interfaces {
prefix "if";
reference "RFC 8343 Section 5";
}
import iana-if-type {
prefix "ianaift";
reference "RFC 7224 Section 2";
}
organization "IETF";
contact
"Author: Jake Holland
<mailto:jholland@akamai.com>
";
description
"This module contains the definition for the TAPS
interface.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of
draft-jholland-taps-api-yang,
see the internet draft itself for full legal notices.";
revision 2019-03-09 {
description "Draft -01 revision.";
reference
"draft-jholland-taps-api-yang";
}
typedef preference-level {
type enumeration {
enum require {
description
"select only options providing this property, fail otherwise";
}
enum prefer {
description
"prefer options providing this property, proceed otherwise";
}
enum ignore {
description
"cancel any system default preference for this property";
}
enum avoid {
description
"prefer options not providing the property,
proceed otherwise";
}
enum prohibit {
description
"select only options not proiding ths property, fail
otherwise";
}
}
description
"This value represents the preference level of a property.";
}
identity transport-property-type {
description "Base identity for transport properties";
}
identity provisioning-domain {
base transport-property-type;
description "Base for provisioning domain.
TBD: add relevant provisioning domain types";
reference "RFC 7556: Multiple Provisioning Domain Architecture";
}
identity transport-protocol {
base transport-property-type;
description "Identity for a transport selection.
TBD: finish the rest of the protocols in
https://tools.ietf.org/html/rfc8095#section-3.1
maybe add quic, maybe use as external augment demo.
note: this isn't in taps-interface, but is available in
e.g. NEAT-project/neat/examples/client.c";
reference "Section 3 of RFC 8095: Existing Transport Protocols";
}
identity tcp {
base transport-protocol;
description "Identity for TCP";
reference "RFC 793: Transmission Control Protocol.
See also RFC 7414: A Roadmap for TCP Specification Documents.";
}
identity mptcp {
base transport-protocol;
description "Identity for MPTCP";
reference
"RFC 6824: TCP Extensions for Multipath Operation";
}
identity udp {
base transport-protocol;
description "Identity for UDP";
reference "TBD";
}
identity udp-lite {
base transport-protocol;
description "Identity for UDP-Lite";
reference "TBD";
}
identity sctp {
base transport-protocol;
description "Identity for SCTP";
reference "TBD";
}
identity dccp {
base transport-protocol;
description "Identity for DCCP";
reference "TBD";
}
identity tls {
base transport-protocol;
description "Identity for TLS";
reference "TBD";
}
identity rtp {
base transport-protocol;
description "Identity for RTP";
reference "TBD";
}
identity http {
base transport-protocol;
description "Identity for HTTP";
reference "TBD";
}
identity flute {
base transport-protocol;
description "Identity for FLUTE";
reference "TBD";
}
identity norm {
base transport-protocol;
description "Identity for NORM";
reference "TBD";
}
identity icmp {
base transport-protocol;
description "Identity for ICMP";
reference "TBD";
}
identity security-algorithm {
description "Base identity for security algorithms.";
}
identity cipher-suite {
base security-algorithm;
description "Base identity for security cipher suites.";
}
identity signature-algorithm {
base security-algorithm;
description "Base identity for security signature algorithms.";
}
identity ed25519 {
base signature-algorithm;
description "Identity for ED25519";
}
identity TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 {
base cipher-suite;
description "Identity for ECDHE ECDSA with ChaCha20, Poly1305,
and SHA256";
}
grouping security-credentials {
description "security credentials";
leaf identity {
type string;
description "identity for security credentials";
}
leaf trust-ca {
type string;
description "trust-ca for security credentials";
}
leaf algorithm {
type identityref {
base security-algorithm;
}
description "security algorithm for credentials";
}
leaf pre-shared-key {
type string;
description "pre-shared key for security credentials";
}
leaf private-key {
type string;
description "private key for security credentials";
}
leaf private-key-callback-handle {
type string;
description "private key callback handle for
externally managed security credentials";
}
leaf public-key {
type string;
description "public key for security credentials";
}
}
container preconnection {
description "preconnection config for a taps connection";
list local-endpoints {
key "id";
description "list of local endpoints";
leaf id {
type string;
description "id of the local endpoint";
}
leaf local-address {
type inet:ip-address;
description "ip address of local endpoint";
}
leaf local-port {
type inet:port-number;
description "port value of an endpoint port";
}
container stun-info {
description "config for the stun server";
leaf host {
type inet:host;
description "stun server host";
}
leaf port {
type inet:port-number;
description "port number for the stun server";
}
uses security-credentials;
}
leaf multicast-subscription {
type enumeration {
enum "source-specific";
enum "any-source";
}
description "type of multicast join";
}
}
list remote-endpoints {
key "id";
description "list of remote endpoints";
leaf id {
type string;
description "id of the remote endpoint";
}
leaf remote-host {
type inet:host;
description "host value of a remote endpoint";
}
leaf remote-port {
type inet:port-number;
description "port value of an endpoint port";
}
leaf remote-distance {
type union {
type uint8 {
range "1..max";
}
type enumeration {
enum "local";
enum "global";
}
}
description "distance (ttl) for packet transport";
}
}
container transport-properties {
description "transport property constraints";
leaf reliability {
type preference-level;
default "require";
description "Section 5.2.1 of draft-ietf-taps-interface-03";
}
leaf preserve-msg-boundaries {
type preference-level;
default "prefer";
description "Section 5.2.2 of draft-ietf-taps-interface-03";
}
leaf per-message-reliability {
type preference-level;
default "ignore";
description "Section 5.2.3 of draft-ietf-taps-interface-03";
}
leaf preserve-order {
type preference-level;
default "require";
description "Section 5.2.4 of draft-ietf-taps-interface-03";
}
leaf zero-rtt-msg {
type preference-level;
default "prefer";
description "Section 5.2.5 of draft-ietf-taps-interface-03";
}
leaf multistreaming {
type preference-level;
default "prefer";
description "Section 5.2.6 of draft-ietf-taps-interface-03";
}
leaf per-msg-checksum-len-send {
type preference-level;
default "ignore";
description "Section 5.2.7 of draft-ietf-taps-interface-03";
}
leaf per-msg-checksum-len-recv {
type preference-level;
default "ignore";
description "Section 5.2.8 of draft-ietf-taps-interface-03";
}
leaf congestion-control {
type preference-level;
default "require";
description "Section 5.2.9 of draft-ietf-taps-interface-03";
}
list interface {
key "preference value";
leaf preference {
type preference-level;
description "preference for this interface or interface type";
}
leaf value {
type union {
type identityref {
base "ianaift:iana-interface-type";
}
type if:interface-ref {
require-instance false;
}
}
description "name or type of interface constraint";
reference "RFC 7224 Section 2";
}
description "Section 5.2.10 of draft-ietf-taps-interface-03";
}
list pvd {
key "preference value";
leaf preference {
type preference-level;
description "preference for this pvd";
}
leaf value {
type identityref {
base "provisioning-domain";
}
description "the provisioning domain constraint";
}
description "Section 5.2.11 of draft-ietf-taps-interface-03";
}
leaf multipath {
type preference-level;
default "prefer";
description "Section 5.2.12 of draft-ietf-taps-interface-03";
}
leaf direction {
type enumeration {
enum "bidirectional";
enum "unidirection-send";
enum "unidirection-receive";
}
default "bidirectional";
description "Section 5.2.13 of draft-ietf-taps-interface-03";
}
leaf retransmit-notify {
type preference-level;
default "ignore";
description "Section 5.2.14 of draft-ietf-taps-interface-03";
}
leaf soft-error-notify {
type preference-level;
default "ignore";
description "Section 5.2.15 of draft-ietf-taps-interface-03";
}
}
container security {
description "Security properties for the connection";
list credentials {
key "identity algorithm";
uses security-credentials;
description "security credentials";
}
leaf session-cache-capacity {
type uint32;
description "Max number of cache elements";
}
leaf session-cache-lifetime {
type uint32;
description "Number of seconds of session cache lifetime";
}
}
}
}