initial realease

This commit is contained in:
FRUCHARD Damien
2023-09-21 11:07:20 +02:00
parent d369acc857
commit e102d8725d
32 changed files with 20526 additions and 1 deletions

View File

@@ -0,0 +1,60 @@
module irt-eden-usecases {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-eden-usecases;
prefix irtuc;
import ietf-network {
prefix nw;
}
import irt-types {
prefix irtty;
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"TSN network use cases definition for IRT EDEN project";
revision 2023-04-28 {
description
"Initial revision.";
}
container usecases {
description "Set of use cases";
list usecase {
description
"A use case is composed of a network (topology, data flows,
TSN configuration of the equipments), a duration (the duration
of the test), etc...";
key "usecase-id";
leaf usecase-id {
type string {
length "1..max";
}
description
"Identifies a usecase.";
}
leaf network-ref {
type leafref {
path "/nw:networks/nw:network/nw:network-id";
}
}
leaf duration {
type irtty:tDuration;
description "Duration of the use case execution.";
}
}
}
}

58
irt/irt-frer.yang Normal file
View File

@@ -0,0 +1,58 @@
module irt-frer {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-frer;
prefix irtfrer;
import ieee802-dot1cb-stream-identification
{
prefix dot1cb-sid;
revision-date
"2021-05-06";
}
import ieee802-dot1cb-frer
{
prefix dot1cb-frer;
revision-date
"2021-05-06";
}
import ietf-network {
prefix nw;
revision-date
"2018-02-26";
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing augments to adapt IEEE802.1CB model to a whole network.";
augment "/dot1cb-sid:stream-identity" {
description
"Addtition a a node-ref, to associate a stream-identity to a node in the network.";
uses nw:node-ref;
}
augment "/dot1cb-frer:frer/dot1cb-frer:sequence-generation" {
description
"Addtition a a node-ref, to associate a sequence-generation to a node in the network.";
uses nw:node-ref;
}
augment "/dot1cb-frer:frer/dot1cb-frer:sequence-recovery" {
description
"Addtition a a node-ref, to associate a sequence-recovery to a node in the network.";
uses nw:node-ref;
}
}

66
irt/irt-interface.yang Normal file
View File

@@ -0,0 +1,66 @@
module irt-interface {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-interface;
prefix irtif;
import ietf-network-topology {
prefix nt;
revision-date
"2018-02-26";
}
import ietf-interfaces {
prefix if;
revision-date
"2018-02-20";
}
import ieee802-types {
prefix ieee;
revision-date
"2020-10-23";
}
import irt-types {
prefix irtty;
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing augments to complete the standard IETF interface.";
revision 2023-04-28 {
description
"Initial revision.";
}
augment "/if:interfaces/if:interface" {
description
"Adds reference to the topology, and identifier for operating
system / management firmware.";
uses nt:tp-ref;
leaf bench-interface-id {
description
"Identifies the network interface as seen from inside the node.
For example eno0, eth0, enp1s0 are typical names for Linux";
type string;
}
leaf mac-address {
description "MAC address of the interface";
type ieee:mac-address;
}
leaf chipset {
description "The hardware chipset reference for this interface";
type irtty:tIfChipset;
}
}
}

51
irt/irt-ptp.yang Normal file
View File

@@ -0,0 +1,51 @@
module irt-ptp {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-ptp;
prefix irtptp;
import ieee1588-ptp {
prefix ptp;
revision-date
"2022-08-30";
}
import ietf-network {
prefix nw;
revision-date
"2018-02-26";
}
import ietf-network-topology {
prefix nt;
revision-date
"2018-02-26";
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing augments to complete the standard
IEEE 1588 PTP model, for association with the ietf topology model.";
revision 2023-05-04 {
description
"Initial revision.";
}
augment "/ptp:ptp/ptp:instances/ptp:instance/ptp:ports/ptp:port" {
description
"Adds the reference the termination point in the topology.";
uses nt:tp-ref;
}
augment "/ptp:ptp/ptp:instances/ptp:instance" {
description
"Adds the reference the termination point in the topology.";
uses nw:node-ref;
}
}

172
irt/irt-topology.yang Normal file
View File

@@ -0,0 +1,172 @@
module irt-topology {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-topology;
prefix irtto;
import ietf-inet-types {
prefix inet;
revision-date
"2013-07-15";
}
import ietf-network {
prefix nw;
revision-date
"2018-02-26";
}
import ietf-network-topology {
prefix nt;
revision-date
"2018-02-26";
}
import irt-types {
prefix irtty ;
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing augments to complete the standard IETF topology.";
augment "/nw:networks/nw:network" {
description
"Improvement of the network implementation";
leaf project-mode {
description
"Project mode like Automotive, Aeronautic or Spatial";
type string;
}
}
augment "/nw:networks/nw:network/nw:node" {
description
"Improvement of the node implementation";
leaf transmission-capacity {
description
"Data rate processing capacity for transmission";
type irtty:tThroughputMbps ;
}
leaf manufacturer-reference {
description
"Manufaturer reference of the equipment";
type irtty:tManufacturerRefence;
}
leaf node-type {
type irtty:tNodeType;
}
leaf bench-node-id {
type string;
description
"Uniquely identifies a node within the IRT hardware test bench network.";
}
leaf management-host {
type inet:host;
description
"IP address (as host name or in dotted notation) of the management
interface of the node.";
}
}
augment "/nw:networks/nw:network/nw:node" {
description
"Improvement of the node implementation with behavioral properties";
leaf supports-preemption {
type boolean;
}
leaf supports-TAS {
type boolean;
}
leaf supports-QCF {
type boolean;
}
leaf supports-ATS {
type boolean;
}
leaf supports-CBS {
type boolean;
}
leaf supports-FRER {
type boolean;
}
}
augment "/nw:networks/nw:network/nw:node" {
description
"Improvement of the node implementation with switches properties";
leaf memory {
type irtty:tDataByte;
}
leaf memory-management-policy {
type irtty:tMemoryManagementPolicy;
}
leaf storage-policy {
type irtty:tStoragePolicy;
}
leaf tech-latency-min {
type irtty:tDurationMicro;
}
leaf tech-latency-max {
type irtty:tDurationMicro;
}
}
augment "/nw:networks/nw:network/nt:link" {
description
"Improvement of the link implementation";
leaf transmission-capacity {
type irtty:tThroughputMbps ;
}
}
augment "/nw:networks/nw:network" {
description
"Add of some network global configurations.";
leaf physical-overhead {
type irtty:tDataByte ;
description
"The phycical overhead in bytes. Shall be 20 bytes.";
}
leaf mac-overhead {
type irtty:tDataByte ;
description
"The mac overhead in bytes. Shall be 22 bytes.";
}
leaf protocol-overhead {
description
"The protocol overhead in bytes. This field is used if the
network uses a single protocol.";
type irtty:tDataByte ;
}
leaf minimal-payload {
description
"The minimal payload of a frame";
type irtty:tDataByte ;
}
leaf maximal-payload {
description
"The maximal payload of a frame";
type irtty:tDataByte ;
}
}
}

398
irt/irt-traffic.yang Normal file
View File

@@ -0,0 +1,398 @@
module irt-traffic {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-traffic;
prefix irttf;
import ietf-network {
prefix nw;
revision-date
"2018-02-26";
}
import ietf-interfaces {
prefix if;
revision-date
"2018-02-20";
}
import irt-types {
prefix irtty;
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing a whole set of artifacts in order to describe the traffic.";
revision 2023-04-28 {
description
"Initial revision.";
}
typedef tBenchGenerator {
type enumeration {
enum automatic {
description
"The traffic is to be automatically generated,
based on its characteristics (periodic, burst, protocol,...),
for example with trafgen.
No parameter is used in that case.";
}
enum manual {
description
"The traffic must not automatically generated:
the operator has to generate the traffic for this
flow manually.
No parameter is used in that case.";
}
enum command {
description
"One parameter is used, and is the command to execute
remotely on the emitter node.";
}
enum script {
description
"One parameter is used, and is the path to a shell script
to upload and execute remotely on the emitter node";
}
enum mediaStream {
description
"Two parameter are used, both are a path to a shell script.
The first is to be uploaded and executed remotely on the talker node,
the second is to upload and executed remotely on the emitter node";
}
enum pcapReplay {
description
"Two parameters are used.
The first is the path to a pcap file to upload and replay on
the emitter node.
The second contains the pcap replay utility parameters, if needed.";
}
}
}
container traffics {
list Traffic {
key "name";
leaf name {
type string;
}
container flows {
list Flow {
key "name";
leaf name {
type string;
}
leaf vlan-id {
type uint16 {
range "0..4094";
}
description "VLAN identifier. Special value 0 means no QTAG.
Note: the presence/absence of QTAG is accounted in protocol-overhead";
}
leaf payload-min {
type irtty:tDataByte;
description "Minimal number of bytes for the payload.
Note: it is the payload at system/functional level, not the Ethernet payload. As a consequence,
if this payload size is 0, the Ethernet payload will be padded up to minimal Ethernet
PDU size, 42 bytes";
}
leaf payload-max {
type irtty:tDataByte;
description "Maximal number of bytes for the payload.
Note: it is the payload at system/functional level, not the Ethernet payload. As a consequence,
if this payload size is 0, the Ethernet payload will be padded up to minimal Ethernet
PDU size, 42 bytes";
}
leaf protocol-id {
type leafref {
path "/traffics/Traffic/protocols/Protocol/name";
}
}
leaf protocol-overhead {
type irtty:tDataByte;
}
leaf burst {
type irtty:tDataByte;
}
leaf periodic {
type boolean;
}
leaf minimal-inter-arrival-time {
type irtty:tDurationMilli;
}
leaf interFrame {
type irtty:tDurationMilli;
}
leaf offset {
type irtty:tDurationNano;
}
leaf offset-type {
type irtty:tOffsetType;
}
leaf source-jitter {
type irtty:tDurationMilli;
}
leaf synchronization {
type boolean;
}
leaf best-effort {
type boolean;
}
leaf source-id {
type nw:node-id;
}
leaf class-id {
type leafref {
path "/traffics/Traffic/classes/Class/name";
}
}
leaf maximal-latency {
type irtty:tDurationMilli;
}
leaf maximal-jitter {
type irtty:tDurationMilli;
}
list Cast {
description "One (unicast) or more (multicast) ways to reach different destinations.";
key "id";
leaf id {
type uint32;
description
"Uniquely identifies an entry in the list.";
}
leaf label {
type string;
}
leaf dest-id {
description "Destination of the cast";
type nw:node-id;
}
container path {
description "Definition of the sub-paths of the path, with or without
redundancy.
If there is no redundancy, a unique Segment
is used to define the the path of a cast, whereas multiple
segments are needed to describe the redondancy.";
list Sub-path {
key "id";
leaf id {
description
"Uniquely identifies an entry in the list.";
type uint32;
}
list Segment {
description "The list of segments of the subpath. When there is a unique
segment, there is no FRER.
When there are at least two segments means FRER is used. The
first port gives the replication node. The elimination port is
given by the first segment of the next subpath.";
key "id";
leaf id {
type uint32;
description
"Uniquely identifies an entry in the list.";
}
leaf-list egress-port {
type if:interface-ref;
}
}
}
}
}
container bench-generator {
leaf type {
type tBenchGenerator;
}
leaf-list parameters {
type string;
description
"Depends on the generator type: see tBenchGenerator descriptions.";
}
}
}
}
container classes {
list Class {
key "name";
leaf name {
type string;
}
leaf priority {
type irtty:tPriority;
}
leaf ATS {
type boolean;
}
leaf CBS {
type boolean;
}
leaf CQF {
type boolean;
}
leaf TAS {
type boolean;
}
leaf FRER {
type boolean;
}
leaf synchronization {
type boolean;
}
leaf preemptive {
type boolean;
}
leaf iDSL {
type irtty:tCBSSlope;
}
}
}
container protocols {
list Protocol {
key "name";
leaf name {
type string;
}
leaf overHead {
type int32;
units
"byte";
}
leaf supportsFragmentation {
type boolean;
}
}
}
container cycles {
list CEW {
key "name";
leaf name {
type string;
}
leaf period {
type irtty:tDurationNano;
}
leaf offset {
type irtty:tDurationNano;
}
leaf duration {
type irtty:tDurationNano;
}
}
}
list Constraint {
key "name";
leaf name {
type string;
}
leaf cycle-id {
type leafref {
path "/traffics/Traffic/cycles/CEW/name";
}
}
leaf maximal-delay {
type irtty:tDurationMicro;
}
leaf maximal-jitter {
type irtty:tDurationMicro;
}
leaf cycle-shift {
type uint16;
}
choice ConstraintCategory{
case ChainedConstraint {
list ChainItem {
key "id";
leaf id {
type uint16;
}
leaf flow-id {
type leafref {
path "/traffics/Traffic/flows/Flow/name";
}
}
leaf minimal-latency {
type irtty:tDurationMicro;
}
leaf maximal-latency {
type irtty:tDurationMicro;
}
leaf exclusive {
type boolean;
}
}
}
case SingleFlowConstraint {
leaf flow-id {
type leafref {
path "/traffics/Traffic/flows/Flow/name";
}
}
leaf from-id {
type nw:node-id;
}
leaf to-id {
type nw:node-id;
}
}
}
}
}
}
}

65
irt/irt-tsn.yang Normal file
View File

@@ -0,0 +1,65 @@
module irt-tsn {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-tsn;
prefix irttsn;
import ietf-interfaces {
prefix if;
revision-date
"2018-02-20";
}
import ieee802-dot1q-bridge {
prefix dot1q;
revision-date
"2020-11-06";
}
import irt-types {
prefix irtty;
}
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing augments to complete the standard IETF interface for TSN purpose.";
revision 2023-04-28 {
description
"Initial revision.";
}
augment "/if:interfaces/if:interface/dot1q:bridge-port" {
description
"CBS configuration items an interface";
container cbs-configurations {
list cbs-configuration {
key "priority";
description "CBS configuration for a priority queue";
leaf priority {
description "The priority of the stream";
type irtty:tPriority;
}
leaf slope {
description "The current idle slope value in Mbps";
type irtty:tThroughputMbps;
}
leaf cbs-traffic {
description "The current CBS traffic on this port for this priority in Mbps";
type irtty:tThroughputMbps;
}
leaf higher-traffic {
description "The higher priority non CBS traffic on this port in Mbps";
type irtty:tThroughputMbps;
}
}
}
}
}

159
irt/irt-types.yang Normal file
View File

@@ -0,0 +1,159 @@
module irt-types {
yang-version 1.1;
namespace urn:fr:irt:eden:yang:irt-types;
prefix irtty;
organization
"IRT Saint Exupéry - Toulouse";
contact
"IRT Saint Exupéry - Toulouse
EDEN project team
<mailto:embedded-systems@irt-saintexupery.com>";
description
"This module is containing a whole set of artifacts in order to describe the traffic.";
revision 2023-04-28 {
description
"Initial revision.";
}
typedef tDataByte {
type uint32 ;
units
"byte";
}
typedef tDuration {
type decimal64 {
fraction-digits 9;
}
description
"A duration in seconds";
units
"s";
}
typedef tDurationMilli {
type decimal64 {
fraction-digits 6;
}
description
"A duration in milli seconds";
units
"ms";
}
typedef tDurationMicro {
type decimal64 {
fraction-digits 3;
}
description
"A duration in micro seconds";
units
"µs";
}
typedef tDurationNano {
type uint64 ;
description
"A duration in nano seconds";
units
"ns";
}
typedef tThroughput {
type uint64 ;
description
"The throughput in bits per second";
units
"bit/s";
}
typedef tThroughputMbps {
type decimal64 {
fraction-digits 6;
}
description
"Throughput in Mega Bits per second";
units
"Mb/s";
}
typedef tPriority {
description
"The TSN priority";
type uint8 {
range "0..7";
}
}
typedef tCBSSlope {
type decimal64 {
fraction-digits 6;
}
}
typedef tOffsetType {
type enumeration {
enum "Not Defined";
enum Computed ;
enum Manual ;
}
}
typedef tData {
type uint32 ;
description
"The type for a data in bits";
units
"bit";
}
typedef tNodeType {
type enumeration {
enum bridge;
enum end-station;
}
}
typedef tManufacturerRefence {
type enumeration {
enum SW_fraunhofer;
enum SW_nxp_sja1110_EVM;
enum SW_microchip_evb_LAN9668;
enum ES_linuxGeneric;
enum ES_linuxUbuntu;
enum ES_linuxRPI_4;
enum ES_linuxRPI_CM4;
enum ES_linuxRPI_1Bplus;
enum ES_Meinberg_microsync;
enum ES_custom;
enum SW_custom;
}
}
typedef tIfChipset {
type enumeration {
enum IFCHIP_i210;
enum IFCHIP_i225;
enum IFCHIP_i350;
enum IFCHIP_generic;
}
description
"Network interface chipsets";
}
typedef tMemoryManagementPolicy {
type enumeration {
enum Shared_Memory ;
enum Dedicated_Memory ;
}
}
typedef tStoragePolicy {
type enumeration {
enum Store_And_Forward ;
enum Cut_Through ;
}
}
}