module ieee1906-dot1-2015 {
yang-version 1;
namespace "urn:ieee:std:1906.1:yang:ieee1906-dot1";
prefix "ieee1906";
import ietf-interfaces {
prefix if;
}
import iana-if-type {
prefix ianaift;
}
//import ietf-inet-types {
// prefix "inet";
//}
//import network-topology {
// prefix "nt";
//}
//import ietf-yang-types {
// prefix "yang";
//}
organization "P1906.1.1/D1.0 Draft Standard Data Model for Nanoscale Communication Systems Working Group";
contact "IEEE P1906.1.1 Working Group
Chair: Stephen F. Bush
Secretary: Guillaume Mantelet ";
description "This experimental YANG module is an individual contribution, and
does not represent a formally sanctioned YANG module by IEEE.
Therefore, this YANG module will change in incompatible ways
from its current revision to the formally published YANG
module for IEEE 1906.1.1 Standard Data Model for Nanoscale
Communication Systems.
This is the YANG model for the IEEE 1906.1-2015 - Recommended Practice for Nanoscale and Molecular Communication Framework.
There are several objectives for this model.
(1) From an implementation standpoint, it provides a common management and configuration model for nanoscale communication devices compliant to IEEE 1906.1-2015.
(2) From a design standpoint, it embodies the requirements to be compliant with IEEE 1906.1-2015. Thus, it serves to help inform the design on any nanoscale communication system.
(3) From an archival perspective, it serves to document nanoscale communication systems. By populating this YANG model for specific models and use-cases, it serves to describe the nanoscale communication system. This can be useful for keeping repositories of research into such systems.
(4) Finally, it exercises the ability of the YANG modeling language to handle fundamental physics. Because nanoscale communication exists on a scale that necessarily relies directly upon underlying physical properties and interactions, it begins to create a direct bridge between communications and physics.
(5) TBD: The YANG model can serve as input and monitoring for ns-3 simulation and Mathematica/MATLAB models. Features/deviations can be added for these if necessary.
(6) TBD: The YANG model can log and track message carriers.
(7) TBD: Notifications from the simulation/math tools can be defined.
(8) TBD: The YANG model can serve as a self-documenting archival tool for experimental results.
TODO:
1. Explain to integrate with standard IETF YANG models
2. Demonstrate using this module with use-cases
3. Write companion paper";
revision 2016-12-20 {
description "Initial version.";
reference
"[1] 'IEEE Recommended Practice for Nanoscale and Molecular Communication Framework,' in IEEE Std 1906.1-2015 , vol., no., pp.1-64, Jan. 11 2016 doi: 10.1109/IEEESTD.2016.7378262
[2] S. F. Bush, 'Active network architecture' in Nanoscale Communication Networks, pp. 209-217, 2010, Artech House.
[3] S. F. Bush, J. L. Paluh, G. Piro, V. Rao, R. V. Prasad and A. Eckford, 'Defining Communication at the Bottom,' in IEEE Transactions on Molecular, Biological and Multi-Scale Communications, vol. 1, no. 1, pp. 90-96, March 2015.
doi: 10.1109/TMBMC.2015.2465513";
}
typedef transport {
type enumeration {
enum brownian {
value 0;
description
"Brownian motion transport, which includes Ca signaling and most fluid and chemical transport. This also includes microfluidic transport.";
}
enum electromagnetic {
value 1;
description
"Electronmagnatic wave transport, which includes Terahertz wave.";
}
enum motor {
value 2;
description
"Molecular motor transport, which includes Kinesin motors.";
}
enum flagellum {
value 3;
description
"Flagellar transport, which includes any cellular approaches using mechanical flagella.";
}
enum electrical {
value 4;
description
"Wired electrical, which includes nanotubes.";
}
enum thermal {
value 5;
description
"Thermal approaches, which includes any form of heat transfer.";
}
enum acoustic {
value 6;
description
"Acoustical approaches which includes any form of mechanical vibration.";
}
}
}
typedef modulation-type {
type enumeration {
enum concentration {
value 0;
description "Varying concentration.";
}
enum structure {
value 1;
description "Varying the type of matter transported.";
}
enum electromagnetic-wave {
value 3;
description "Variation of an electromagnetic wave.";
}
}
}
grouping vector {
leaf magnitude {
type decimal64 {
fraction-digits 10;
}
description "The magnitude.";
}
leaf direction {
type decimal64 {
fraction-digits 10;
range "0..3.14";
}
units "radian";
description "The direction.";
}
}
typedef math-package {
type enumeration {
enum MATLAB {
value 0;
description "The equation is written in native MATLAB format.";
}
enum Mathematica {
value 1;
description "The equation is written in native Mathematica format.";
}
enum Maple {
value 2;
description "The equation is written in native Maple format.";
}
enum Octave {
value 3;
description "The equation is written in native Octave format.";
}
}
}
grouping math-expression {
container math-formula {
leaf expression {
type string;
description "A mathematical expression.";
}
leaf package {
type math-package;
description "The math package that reads the expression in its native format.";
}
leaf version {
type string;
description "The version of the math package assumed.";
}
}
}
grouping vector-field {
uses math-expression {
description "A mathematical expression that describes a vector field.";
}
leaf dimensions {
type uint32 {
range "0..3";
}
description "The number of dimensions of the field.";
}
list vectors {
uses vector;
}
description "An equation that describes a vector field.";
}
typedef motion-type {
type enumeration {
enum "active" {
value 0;
description "The message carrier is self-propelled.";
}
enum "passive" {
value 1;
description "The message carrier is passively carried by the medium.";
}
}
}
typedef network-type {
type enumeration {
enum "active" {
value 0;
description "Messages are executable code capable of executing as they travel through the network.";
}
enum "passive" {
value 1;
description "Messages are passive bits incapable of executing within the network.";
}
}
}
typedef length-scale {
type enumeration {
enum planck {
value 0;
description
"Length scale where concepts of size and distance break down.";
}
enum quantum {
value 1;
description
"The length scale where properties are related to their de Broglie wavelength.";
}
enum nanoscale {
value 2;
description
"Nanoscale refers to dimensions of 1 nanometer (nm) to 100 nm as defined in ISO/TS 27687:2008 definition 2.1.";
}
enum microscale {
value 3;
description
"The transmitter, receiver, and message carrier exist on a length scale that requires magnification to be visible to the human eye and are longer than the nanoscale.";
}
enum macroscale {
value 4;
description
"The transmitter, receiver, and message carrier exist on a length scale visible, unaided by the human eye, and the speed of light is negligible to communication performance.";
}
enum interplanetary {
value 5;
description
"Length scale at which the speed of light significantly impacts communication performance and the effects of relativity are negligible";
}
enum relativistic {
value 6;
description
"Length scale at which relativity impacts communication performance.";
}
}
}
typedef carrier-form {
type enumeration {
enum particle {
value 0;
description "The message carrier is a particle and has mass.";
}
enum wave {
value 1;
description "The message carrier is a wave and has energy.";
}
}
}
typedef mass {
type decimal64 {
fraction-digits 10;
}
}
grouping mass-flow-rate {
leaf m {
type mass;
units "kilogram";
description "The mass of the message carrier.";
}
leaf V-dot {
type decimal64 {
fraction-digits 10;
}
units "meter^3 second^-1";
description "The volume flow rate of the message carrier.";
}
leaf rho {
type decimal64 {
fraction-digits 10;
}
units "kilogram meter^-3";
description "The mass density of the fluid";
}
leaf v {
type decimal64 {
fraction-digits 10;
}
units "meter second^-1";
description "The flow velocity of the mass of the message carriers.";
}
leaf A {
type decimal64 {
fraction-digits 10;
}
units "meter^2";
description "The cross-sectional vector area/surface.";
}
leaf jm {
type decimal64 {
fraction-digits 10;
}
units "kilogram second^-1 meter^-2";
description "The mass flux of the message carriers.";
}
}
grouping langevin-equation {
leaf m {
type mass;
units "kilogram";
description "The mass of the message carrier.";
}
leaf x {
type decimal64 {
fraction-digits 10;
}
units "meter";
description "The position of a message carrier.";
}
leaf t {
type decimal64 {
fraction-digits 10;
}
units "second";
description "The current time.";
}
leaf lambda {
type decimal64 {
fraction-digits 10;
}
units "kilogram second^-1";
description "The systematic part of the molecular force (field component). The unit is momentum.";
}
leaf eta {
type decimal64 {
fraction-digits 10;
}
units "kilogram meter second^-2";
description "The random component of force (motion component). The unit is a Newton.";
}
}
typedef diffusion-coefficient {
type decimal64 {
fraction-digits 10;
}
units "nanometer^2 second^-1";
description
"Diffusivity or diffusion coefficient is a proportionality constant between the molar flux due to molecular diffusion and the gradient in the concentration of the species (or the driving force for diffusion).";
}
grouping ficks-1-law {
leaf J {
type decimal64 {
fraction-digits 10;
}
units "mole meter^-2 second^-1";
description
"The diffusion flux, which is the amount of substance per unit area per unit time, for example (mol/m^2 × s); it measures the amount of substance that will flow through a small area during a small time interval.";
}
leaf D {
type diffusion-coefficient;
description
"The diffusion coefficient or mass diffusivity in dimensions of length^2 time^−1, for example (m^2/s).";
}
leaf phi {
type decimal64{
fraction-digits 10;
}
units "mole meter^-3";
description
"For ideal mixtures, this is the concentration in dimensions of amount of substance per unit volume, for example (mol m^-3).";
}
leaf x {
type decimal64{
fraction-digits 10;
}
units "meter";
description "The position (length), for example, in meters.";
}
}
grouping ficks-2-law {
uses ficks-1-law;
leaf t {
type time;
units "second";
description "The current time.";
}
}
typedef size {
type decimal64 {
fraction-digits 10;
}
units "nanometer";
description "Size along the maximum dimension of a nanoscale object.";
}
grouping ieee1906-definition {
container transmitter {
leaf name {
type string;
description "A name that clearly describes the transmitter.";
}
}
container receiver {
leaf name {
type string;
description "A name that clearly describes the receiver.";
}
}
container medium {
leaf name {
type string;
description "A name that clearly describes the medium.";
}
}
container message {
leaf name {
type string;
description "A name that clearly describes the message.";
}
}
container message-carrier {
leaf name {
type string;
description "A name that clearly describes the message-carrier.";
}
}
container essential-nanoscale-component {
leaf name {
type string;
description "A name that clearly describes the nanoscale component that is essential to operation.";
}
}
container non-classical-physics {
leaf name {
type string;
description "A name that clearly describes the nanoscale physics being leveraged.";
}
}
description
"These are the minimum requirements for a nanoscale communication network and must be present and fully described.";
}
typedef sensitivity {
type decimal64{
fraction-digits 10;
range "0..1";
}
units "proportion";
description
"Sensitivity (also called the true positive rate, or the recall rate in some fields) measures the proportion of true positives which are correctly identified (e.g., the percentage of Message Carriers addressed to an intended target node that are recognized and accepted by the correct intended target node).";
}
typedef specificity {
type decimal64 {
fraction-digits 10;
range "0..1";
}
units "proportion";
description
"Specificity (sometimes called the true negative rate) measures the proportion of negatives which are correctly identified as such (e.g., the percentage of Message Carriers not addressed to an intended target node that are not accepted by the intended target node)";
}
grouping ieee1906-components {
container ieee1906-perturbation {
leaf name {
type string;
description "A name that clearly describes the perturbation component.";
}
leaf rate {
type decimal64 {
fraction-digits 10;
}
units "second^-1";
description "The maximum perturbation rate.";
}
}
container ieee1906-motion {
leaf name {
type string;
description "A name that clearly describes the motion component.";
}
leaf motion {
type transport;
description "The type of transport being leveraged.";
}
}
container ieee1906-field {
leaf name {
type string;
description "A name that clearly describes the field component, if one exists.";
}
uses math-expression {
description "This is the mathematical expression for the field. However, a field component is not required and may not exist.";
}
leaf field-type {
type enumeration {
enum "internal" {
value 0;
description "The field component resides within the nanoscale communication system.";
}
enum "external" {
value 1;
description "The field component is external to the nanoscale communication system.";
}
}
}
}
container ieee1906-specificity {
leaf name {
type string;
description "A name that clearly describes the specificity component.";
}
leaf specificity-value {
type specificity;
description "The estimated degree of specificity.";
}
}
}
typedef probability {
type decimal64 {
fraction-digits 10;
range "0..1";
}
units "probability";
description "This value represents a probablity with ideal accuracy.";
}
typedef percent {
type decimal64 {
fraction-digits 10;
range "0..100";
}
units "percent";
description "This value represents a percent.";
}
typedef time {
type decimal64 {
fraction-digits 10;
}
units "nanosecond";
description "This value represents a time duration in nanoseconds with ideal precision and accuracy.";
}
typedef volume {
type decimal64 {
fraction-digits 10;
}
units "nanometer^3";
description "This value represents ideal volume in cubic nanometers.";
}
typedef information-measurement {
type enumeration {
enum "information-entropy" {
value 0;
description "Information measured in bits.";
}
enum "kolmorogov-complexity" {
value 1;
description "Information measured in inverse compression ratio.";
}
}
}
typedef information {
type decimal64 {
fraction-digits 10;
}
units "bit";
description "Amount of information in bits of information entropy.";
}
typedef bandwidth {
type decimal64 {
fraction-digits 10;
}
units "bit second^-1";
description "Bandwidth in bits per second of a communcation channel.";
}
typedef energy {
type decimal64 {
fraction-digits 10;
}
units "joule";
description "Energy in joules.";
}
typedef speed {
type decimal64 {
fraction-digits 10;
}
units "nanometer nanosecond^-1";
description "The rate of change of position of an entity.";
}
typedef coordinate-length {
type decimal64 {
fraction-digits 10;
}
units "nanometer";
description "The position along a single coordinate.";
}
grouping position {
leaf x {
type coordinate-length;
}
leaf y {
type coordinate-length;
}
leaf z {
type coordinate-length;
}
description "A position in 3-dimensional space denoted by lengths along coordinates from a predefined origin.";
}
grouping delta-vector {
uses position {
description "The location of the base of the vector.";
}
leaf delta-x {
type coordinate-length;
}
leaf delta-y {
type coordinate-length;
}
leaf delta-z {
type coordinate-length;
}
description "A vector described by changes along each of three dimensions from position.";
}
grouping message-metrics {
description
"These metrics deal with the information encoded within a Message and how the Message is impacted by the channel and intended target. Metrics a) through d) shall be implemented. Metric e) may be implemented.";
container message-deliverability-metric {
leaf message-deliverability {
type probability;
description
"The probability that a message survives long enough to deliver its information to the intended receiver";
}
leaf time-to-live {
type time;
description
"The time before a message no longer contains valid information.";
}
leaf receive-time {
type time;
description
"The mean time taken for a message to reach its intended receiver.";
}
reference "IEEE 1906.1-2015 Clause 6.1";
description
"Message Deliverability measures whether a Message Carrier survives long enough to deliver its information to the intended receiver. Message Deliverability (MD) assumes messages have a finite time-to-live (TTL). Thus, MD = P(tr < TTL) where tr is the age of the message at the time of reception by the destination to which the message was addressed.";
}
container message-lifetime {
leaf lifetime {
type time;
description "The time from creation of a message until it no longer contains valid information.";
}
reference "IEEE 1906.1-2015 Clause 6.2";
description "Message Lifetime measures the lifetime of a Message Carrier.";
}
container information-density {
leaf message-volume {
type volume;
description "The volume of a message.";
}
leaf message-information {
type information;
description "The amount of information in a message.";
}
reference "IEEE 1906.1-2015 Clause 6.3";
description
"Information Density is the amount of information encoded within a Message Carrier per volume.";
}
container bandwidth-delay-product {
leaf channel-bandwidth {
type bandwidth;
description "The bits per second transported by the nanoscale communication channel.";
}
leaf channel-delay {
type time;
description "The time for a message to propagate from one end of a channel to the other.";
}
reference "IEEE 1906.1-2015 Clause 6.4";
description
"Bandwidth-Delay Product is proportional to the maximum number of Message Carriers capable of fitting within the physical channel.";
}
container information-and-communication-energy {
leaf energy-message-delivery {
type energy;
description "The energy used to transport a message across a channel.";
}
leaf information-message-delivery {
type information;
description "The amount of information in a message.";
}
reference "IEEE 1906.1-2015 Clause 6.5";
description
"This is the metric that quantifies energy used in nanoscale communication. This is energy per bit of information conveyed by the Motion Component.";
}
}
grouping motion-metrics {
description
"Motion component: These metrics are strongly related to the Motion Component, which describes Message Carrier motion. Either both a) and b) shall be implemented or c) shall be implemented.";
container collision-behavior {
leaf coefficient-of-restitution {
type decimal64 {
fraction-digits 10;
range "0..1";
}
units "unitless";
description
"A measure of the 'restitution' of a collision between two objects: how much of the kinetic energy remains for the objects to rebound from one another vs. how much is lost as heat, or work done deforming the objects. The coefficient is defined as the ratio of relative speeds after and before an impact, taken along the line of the impact.";
}
leaf speed-before-collision {
type speed;
description "The speed of a message carrier loaded with message before collision.";
}
leaf speed-after-collision {
type speed;
description "The speed of a message carrier loaded with message after collision.";
}
reference "IEEE 1906.1-2015 Clause 6.6";
description "Collision Behavior measures the physical result of collision between Message Carriers.";
}
container mass-displacement-metric {
leaf mass-displacement {
type decimal64 {
fraction-digits 10;
}
description "Value of the mass displacement.";
}
leaf x {
type mass;
units "kilogram";
description "Mass at time t.";
}
leaf T {
type decimal64 {
fraction-digits 10;
}
units "second";
description "Sample period (the time between each sample).";
}
leaf tau {
type decimal64 {
fraction-digits 10;
}
units "second";
description "Sample time";
}
leaf M {
type decimal64 {
fraction-digits 10;
}
units "unitless";
description "Number of samples";
}
reference "IEEE 1906.1-2015 Clause 6.7";
description "Molecular communication can assume Message Carriers are composed of mass and move from one
location to another.";
}
container positioning-accuracy-of-message-carriers {
leaf radius {
type decimal64 {
fraction-digits 10;
}
units "nanometer";
}
uses position {
description "The location of the center of mass of the message carriers.";
}
leaf accuracy-percent {
type percent;
description "Then number of message carriers located within the given area or volume.";
}
reference "IEEE 1906.1-2015 Clause 6.8";
description
"Multiple swarms of message carriers can be controlled like unified organisms to swim along predetermined paths toward the receiver by an external macro-unit (e.g., an agglomeration of flagellated magnetotactic bacteria can be utilized as efficient carriers of nanoloads and guided toward an aggregation zone by a magnetic field generated in custom-made magnetic resonance imaging systems). It is defined as the radius of the circle hat has its center at the mean and contains a given percentage of half the realizations of the location estimates (i.e., the performance measure of circular error probable in the classical geolocation context).";
}
}
typedef derivative {
type decimal64 {
fraction-digits 10;
}
units "d/dx";
description "The slope of a line at a point on the line.";
}
grouping nabla {
uses position;
container terms {
leaf dx {
type derivative;
}
leaf dy {
type derivative;
}
leaf dz {
type derivative;
}
}
description "The result of the differential operator d/dx + d/dy + d/dz at a given position.";
}
grouping field-metrics {
description
"Field component: These metrics relate to the degree to which Message Carrier motion can be controlled such that it follows an intended gradient. Diffusive Flux is used in Brownian motion and can be modeled by Levy or Weiner processes and can also be described by the Langevin Noise. At least one of a), b), or c) shall be implemented in order to describe Message Carrier motion.";
container persistence-length {
list unit-tangent-vectors {
key "segment-index";
leaf segment-index {
type uint32;
description "A segment index.";
}
container s {
uses position;
description "The position of a unit tangent sample.";
}
container u-s {
uses nabla;
description "The unit tangent vector at point s in set of connected segments.";
}
}
container u-0 {
uses nabla;
description "Unit tangent vector at the origin or beginning of the chain of connected segments";
}
leaf zeta-p {
type decimal64 {
fraction-digits 10;
range "0..max";
}
units "nanometer";
description "The persistence length.";
}
reference "IEEE 1906.1-2015 Clause 6.9";
description
"Persistence Length is a measure of the degree to which a chain-like structure is either soft (like strings of cooked spaghetti) or rigid (like metal rods).";
}
container diffusive-flux {
uses ficks-1-law {
description "This metric is derived from Fick's First Law.";
}
reference "IEEE 1906.1-2015 Clause 6.10";
description "Fick’s First Law is one of the standard laws of diffusion.";
}
container langevin-noise {
uses langevin-equation {
description "Langevin noise is a term in the general Langevin equation.";
}
reference "IEEE 1906.1-2015 Clause 6.11";
description
"Random motion has a significant impact upon the performance of Message Carriers, in particle form, to reach their target receivers.";
}
}
grouping probability-density {
list density-function {
key "probability-sample";
leaf probability-sample {
type probability;
units "probability";
description "A sample probability in the probability density.";
}
description "A list of probabilities forming a probability density function.";
}
}
grouping specificity-metrics {
description
"Specificity component: These metrics are related to the ability of a Message Carrier to deliver a Message to its intended target. Metrics a), c), and e) shall be implemented; metrics b) or d) may be implemented.";
leaf specificity-metric {
type specificity;
reference "IEEE 1906.1-2015 Clause 6.12";
description "A measure of precision in matching between components. See also: sensitivity.";
}
container affinity-metric {
leaf affinity {
type decimal64 {
fraction-digits 10;
range "0..max";
}
units "d/dG";
description
"The negative partial derivative of Gibb's free energy G with respect to extent of reaction zeta at constant pressure and temperature.";
}
reference "IEEE 1906.1-2015 Clause 6.13";
description
"Affinity is a standard measure of chemical affinity; however it is applied to the broader IEEE 1906 framework and the affinity of Message Carriers to their intended targets, Media, and other Message Carriers.";
}
leaf sensitivity-metric {
type sensitivity;
reference "IEEE 1906.1-2015 Clause 6.14";
description
"A measure of the proportion of true positives, which are events that actually occurred and have been correctly detected. See also: specificity.";
}
container angular-spectrum {
uses probability-density;
reference "IEEE 1906.1-2015 Clause 6.15";
description "Angular Spectrum quantifies the distribution of the intensity of nanoscale communication signals received
at the receiver as a function of angle-of-arrival.";
}
container delay-spectrum {
uses probability-density;
reference "IEEE 1906.1-2015 Clause 6.16";
description "Delay Spectrum quantifies the distribution of the intensity of nanoscale communication signals received at
the receiver as a function of time-of-arrival.";
}
}
grouping system-metrics {
description
"System metrics relate to and impact all components. All of the metrics in this category shall be implemented.";
container active-network-programmability {
leaf t {
type time;
units "second";
description
"The current time.";
}
container S {
uses math-expression {
description
"A virtual surface that defines the volume through which the change in flux of Message Carriers should be clearly specified.";
}
}
leaf f {
type decimal64 {
fraction-digits 10;
range "0..max";
}
units "second^-1 meter^-2";
description "The flux of Message Carriers as a function of time where flux is the rate of flow through a unit area.";
}
leaf delta-f {
type decimal64 {
fraction-digits 10;
range "0..max";
}
units "second^-1 meter^-2";
description "The change in f(t) intentionally caused by a programmed Message Carrier through a surface.";
}
reference "IEEE 1906.1-2015 Clause 6.17";
description
"Message Carriers can be programmed or coded such they change the underlying Media (e.g., microtubules, nanotubes, etc.) as they transport information (see 5.3.4).";
}
container perturbation-rate {
leaf rate-of-perturbation {
type derivative;
units "second^-1";
description
"Rate of change of the componet representing bits of information in the channel. There is typically a tradeoff with error-of-perturbation.";
}
leaf error-of-perturbation {
type derivative;
units "second^-1";
description
"Rate of error in the componet representing bits of information in the channel. There is typically a tradeoff with rate-of-perturbation";
}
reference "IEEE 1906.1-2015 Clause 6.18";
description
"Perturbation Rate is a measure of both the rate and control of any type of perturbation used to send a signal in the system.";
}
container supersystem-degradation {
leaf performance-attribute {
type string;
description
"A descriptive name of the performance attribute.";
}
leaf ds {
type percent;
units "percent";
description
"The supersystem degradation of the performance-attribute.";
}
leaf spn {
type percent;
units "percent";
description
"The supersystem performance of the performance-attribute with the embedded nanoscale communication network.";
}
leaf sp {
type percent;
units "percent";
description
"The native supersystem performance (without the embedded nanoscale communication network).";
}
reference "IEEE 1906.1-2015 Clause 6.19";
description
"The supersystem is the system in which the IEEE 1906 network resides. This can be a biological organism. This metric quantifies the impact of the network upon the supersystem with regard to its normal operation.";
}
container bandwidth-volume-ratio {
leaf bandwidth {
type bandwidth;
units "bit second^-1";
description "The bandwidth of the nanoscale communication channel.";
}
leaf volume {
type volume;
units "nanometer^3";
description "The sum of the volume of the transmitter and receiver pair for a communication system.";
}
reference "IEEE 1906.1-2015 Clause 6.20";
description
"The Bandwidth-Volume Ratio takes into account and combines two fundamental essences of molecular and nanoscale communication, namely its size and bandwidth.";
}
}
container metrics {
description
"IEEE 1906.1 metrics are values that can be configured to control the operation of a nanoscale communication network. They can also be monitored to characterize the performance of the nanoscale network.";
uses message-metrics;
uses motion-metrics;
uses field-metrics;
uses specificity-metrics;
uses system-metrics;
}
typedef message-carrier-types {
type enumeration {
enum "calcium-ion" {
value 0;
description "Calcium ion.";
}
enum "ligand" {
value 1;
description "Ligand-repecptor system.";
}
enum "motor" {
value 2;
description "Molecular motor.";
}
enum "charge" {
value 3;
description "Electrical charge.";
}
enum "bacterium" {
value 4;
description "Bacterium.";
}
enum "electromagnetic-wave" {
value 5;
description "Electromagentic wave.";
}
}
}
typedef motion-types {
type enumeration {
enum "diffusion" {
value 0;
description "Diffusion.";
}
enum "walking" {
value 1;
description "Walking.";
}
enum "potential difference" {
value 2;
description "Electrical potential difference.";
}
enum "waved guided" {
value 3;
description "Follows a wave guide.";
}
}
}
typedef field-types {
type enumeration {
enum "concentration gradient" {
value 0;
description "Concentration gradient.";
}
enum "compartmentalized" {
value 1;
description "Compartmentalized.";
}
enum "microtubule" {
value 2;
description "Microtubule.";
}
enum "nanostructure orientation" {
value 3;
description "Nanostructure orientation, e.g. nanotube orientation.";
}
enum "directional antenna" {
value 4;
description "Directional antenna.";
}
}
}
typedef perturbation-types {
type enumeration {
enum "transmission rate" {
value 0;
description "Transmission rate is varied to create bits.";
}
enum "concentration change" {
value 1;
description "Concentration is varied to create bits.";
}
enum "molecular structure" {
value 2;
description "Molecular structure is changed to represent bits.";
}
enum "electrical current variation" {
value 3;
description "Electrical current is varied to create bits.";
}
enum "electromagnetic wave variation" {
value 4;
description "The electromagnetic wave is varied to create bits.";
}
}
}
typedef specificity-types {
type enumeration {
enum "receptor sensitivity" {
value 0;
description "Receptor sensitivity.";
}
enum "electrical charge/voltage threshold" {
value 1;
description "Electrical charge or voltage sensitivity threshold is exceeded.";
}
enum "antenna aperture" {
value 2;
description "Antenna aperture and orientation control specificity.";
}
}
}
//
// The code below is for logging the history of nanoscale communication. This is oriented toward a molecular motor system.
// This might be better placed in a separate module specific to molecular motors. Thus, each technology will use and 'refine' this module.
//
typedef angle {
type decimal64 {
fraction-digits 10;
range "-360..360";
}
units "degrees";
description "The angle in degress.";
}
container microtubule-field {
list tubes {
key "binding-time";
leaf direction {
type enumeration {
enum "positive" {
value 0;
description "Motors move in one direction along the tube.";
}
enum "negative" {
value 1;
description "Motors move in another direction along the tube.";
}
}
}
leaf binding-time {
type decimal64 {
fraction-digits 10;
range "0..max";
}
description "The mean time motors remain bound to the microtubule.";
}
list segments {
key "x y z";
uses position;
leaf orientation {
type angle;
units "degrees";
description "The angle of the microtubule in degrees from horizontal.";
}
leaf length {
type decimal64 {
fraction-digits 10;
}
units "nanometers";
description "The length of the microtubule in nanometers.";
}
description "Segments comprise a tube.";
}
description "A tube is comprised of segments.";
}
}
container molecular-motor-motion {
list motors {
key "motor-name";
leaf motor-name {
type string;
description "The unique identifier for a motor.";
}
list movement {
key "x y z";
uses position;
description "A sample of a motor's motion history.";
}
description "This is for a single motor.";
}
description "This is for all motors in the system.";
}
grouping required-mapping {
uses ieee1906-definition;
uses ieee1906-components;
description
"Every proposed IEEE nanoscale communication technique MUST instantiate this mapping.";
}
// The code below interfaces the nanoscale communication model with the macroscale interfaces.
//identity nanoscale-communication-interface {
// base ianaift:iana-interface-type;
// description
// "Interface identity for a nanoscale communication interface.";
//}
augment "/if:interfaces/if:interface" {
when "if:type = 'ieee1906:nanoscale-communication-interface'";
description
"Addition of data nodes for the nanoscale communication interface to the standard Interface data model, for interfaces of the type 'nanoscale-communication-interface'.";
}
}