# ieee1906-dot1-2015

## HTML

# ieee1906-dot1-2015@2016-12-20

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; } 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 <bushsf@research.ge.com> Secretary: Guillaume Mantelet <guillaume.mantelet@ge.com>"; 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."; } } // grouping vector 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."; } } // container math-formula } // grouping math-expression grouping vector-field { description "An equation that describes a 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; } // list vectors } // grouping 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 mass-flow-rate 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."; } } // grouping langevin-equation 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-1-law grouping ficks-2-law { uses ficks-1-law; leaf t { type time; units "second"; description "The current time."; } } // grouping ficks-2-law typedef size { type decimal64 { fraction-digits 10; } units "nanometer"; description "Size along the maximum dimension of a nanoscale object."; } grouping ieee1906-definition { description "These are the minimum requirements for a nanoscale communication network and must be present and fully described."; container transmitter { leaf name { type string; description "A name that clearly describes the transmitter."; } } // container transmitter container receiver { leaf name { type string; description "A name that clearly describes the receiver."; } } // container receiver container medium { leaf name { type string; description "A name that clearly describes the medium."; } } // container medium container message { leaf name { type string; description "A name that clearly describes the message."; } } // container message container message-carrier { leaf name { type string; description "A name that clearly describes the message-carrier."; } } // container 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 essential-nanoscale-component container non-classical-physics { leaf name { type string; description "A name that clearly describes the nanoscale physics being leveraged."; } } // container non-classical-physics } // grouping ieee1906-definition 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-perturbation 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-motion 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-field 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."; } } // container ieee1906-specificity } // grouping ieee1906-components 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 { description "A position in 3-dimensional space denoted by lengths along coordinates from a predefined origin."; leaf x { type coordinate-length; } leaf y { type coordinate-length; } leaf z { type coordinate-length; } } // grouping position grouping delta-vector { description "A vector described by changes along each of three dimensions from position."; 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; } } // grouping delta-vector 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 { 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."; reference "IEEE 1906.1-2015 Clause 6.1"; 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."; } } // container message-deliverability-metric container message-lifetime { description "Message Lifetime measures the lifetime of a Message Carrier."; reference "IEEE 1906.1-2015 Clause 6.2"; leaf lifetime { type time; description "The time from creation of a message until it no longer contains valid information."; } } // container message-lifetime container information-density { description "Information Density is the amount of information encoded within a Message Carrier per volume."; reference "IEEE 1906.1-2015 Clause 6.3"; leaf message-volume { type volume; description "The volume of a message."; } leaf message-information { type information; description "The amount of information in a message."; } } // container information-density container bandwidth-delay-product { description "Bandwidth-Delay Product is proportional to the maximum number of Message Carriers capable of fitting within the physical channel."; reference "IEEE 1906.1-2015 Clause 6.4"; 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."; } } // container bandwidth-delay-product container information-and-communication-energy { description "This is the metric that quantifies energy used in nanoscale communication. This is energy per bit of information conveyed by the Motion Component."; reference "IEEE 1906.1-2015 Clause 6.5"; 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."; } } // container information-and-communication-energy } // grouping message-metrics 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 { description "Collision Behavior measures the physical result of collision between Message Carriers."; reference "IEEE 1906.1-2015 Clause 6.6"; 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."; } } // container collision-behavior container mass-displacement-metric { description "Molecular communication can assume Message Carriers are composed of mass and move from one location to another."; reference "IEEE 1906.1-2015 Clause 6.7"; 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"; } } // container mass-displacement-metric container positioning-accuracy-of-message-carriers { 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)."; reference "IEEE 1906.1-2015 Clause 6.8"; 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."; } } // container positioning-accuracy-of-message-carriers } // grouping motion-metrics typedef derivative { type decimal64 { fraction-digits 10; } units "d/dx"; description "The slope of a line at a point on the line."; } grouping nabla { description "The result of the differential operator d/dx + d/dy + d/dz at a given position."; uses position; container terms { leaf dx { type derivative; } leaf dy { type derivative; } leaf dz { type derivative; } } // container terms } // grouping nabla 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 { 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)."; reference "IEEE 1906.1-2015 Clause 6.9"; list unit-tangent-vectors { key "segment-index"; leaf segment-index { type uint32; description "A segment index."; } container s { description "The position of a unit tangent sample."; uses position; } // container s container u-s { description "The unit tangent vector at point s in set of connected segments."; uses nabla; } // container u-s } // list unit-tangent-vectors container u-0 { description "Unit tangent vector at the origin or beginning of the chain of connected segments"; uses nabla; } // container u-0 leaf zeta-p { type decimal64 { fraction-digits 10; range "0..max"; } units "nanometer"; description "The persistence length."; } } // container persistence-length container diffusive-flux { description "Fick’s First Law is one of the standard laws of diffusion."; reference "IEEE 1906.1-2015 Clause 6.10"; uses ficks-1-law { description "This metric is derived from Fick's First Law."; } } // container diffusive-flux container langevin-noise { description "Random motion has a significant impact upon the performance of Message Carriers, in particle form, to reach their target receivers."; reference "IEEE 1906.1-2015 Clause 6.11"; uses langevin-equation { description "Langevin noise is a term in the general Langevin equation."; } } // container langevin-noise } // grouping field-metrics grouping probability-density { list density-function { key "probability-sample"; description "A list of probabilities forming a probability density function."; leaf probability-sample { type probability; units "probability"; description "A sample probability in the probability density."; } } // list density-function } // grouping probability-density 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; description "A measure of precision in matching between components. See also: sensitivity."; reference "IEEE 1906.1-2015 Clause 6.12"; } container affinity-metric { 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."; reference "IEEE 1906.1-2015 Clause 6.13"; 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."; } } // container affinity-metric leaf sensitivity-metric { type sensitivity; description "A measure of the proportion of true positives, which are events that actually occurred and have been correctly detected. See also: specificity."; reference "IEEE 1906.1-2015 Clause 6.14"; } container angular-spectrum { description "Angular Spectrum quantifies the distribution of the intensity of nanoscale communication signals received at the receiver as a function of angle-of-arrival."; reference "IEEE 1906.1-2015 Clause 6.15"; uses probability-density; } // container angular-spectrum container delay-spectrum { description "Delay Spectrum quantifies the distribution of the intensity of nanoscale communication signals received at the receiver as a function of time-of-arrival."; reference "IEEE 1906.1-2015 Clause 6.16"; uses probability-density; } // container delay-spectrum } // grouping specificity-metrics 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 { 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)."; reference "IEEE 1906.1-2015 Clause 6.17"; 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."; } } // container S 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."; } } // container active-network-programmability container perturbation-rate { 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."; reference "IEEE 1906.1-2015 Clause 6.18"; 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"; } } // container perturbation-rate container supersystem-degradation { 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."; reference "IEEE 1906.1-2015 Clause 6.19"; 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)."; } } // container supersystem-degradation container bandwidth-volume-ratio { description "The Bandwidth-Volume Ratio takes into account and combines two fundamental essences of molecular and nanoscale communication, namely its size and bandwidth."; reference "IEEE 1906.1-2015 Clause 6.20"; 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."; } } // container bandwidth-volume-ratio } // grouping system-metrics 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; } // container 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."; } } } 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"; description "A tube is comprised of segments."; 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"; description "Segments comprise a tube."; 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."; } } // list segments } // list tubes } // container microtubule-field container molecular-motor-motion { description "This is for all motors in the system."; list motors { key "motor-name"; description "This is for a single motor."; leaf motor-name { type string; description "The unique identifier for a motor."; } list movement { key "x y z"; description "A sample of a motor's motion history."; uses position; } // list movement } // list motors } // container molecular-motor-motion grouping required-mapping { description "Every proposed IEEE nanoscale communication technique MUST instantiate this mapping."; uses ieee1906-definition; uses ieee1906-components; } // grouping required-mapping 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'."; } } // module ieee1906-dot1-2015

## Summary

Organization | P1906.1.1/D1.0 Draft Standard Data Model for Nanoscale Communication Systems Working Group |

Module | ieee1906-dot1-2015 |

Version | 2016-12-20 |

File | ieee1906-dot1-2015@2016-12-20.yang |

Prefix | ieee1906 |

Namespace | urn:ieee:std:1906.1:yang:ieee1906-dot1 |

Cooked | /cookedmodules/ieee1906-dot1-2015/2016-12-20 |

YANG | /src/ieee1906-dot1-2015@2016-12-20.yang |

XSD | /xsd/ieee1906-dot1-2015@2016-12-20.xsd |

Abstract | This experimental YANG module is an individual contribution, and does not represent a formally sanctioned YANG module by IEE... |

Contact | IEEE P1906.1.1 Working Group Chair: Stephen F. Bush <bushsf@research.ge.com> Secretary: Guillaume Mantelet <guillaume.mantelet@ge.com> |

## 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 |

## Typedefs

Typedef | Base type | Abstract |

angle | decimal64 | The angle in degress. |

bandwidth | decimal64 | Bandwidth in bits per second of a communcation channel. |

carrier-form | enumeration | |

coordinate-length | decimal64 | The position along a single coordinate. |

derivative | decimal64 | The slope of a line at a point on the line. |

diffusion-coefficient | decimal64 | 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). |

energy | decimal64 | Energy in joules. |

field-types | enumeration | |

information | decimal64 | Amount of information in bits of information entropy. |

information-measurement | enumeration | |

length-scale | enumeration | |

mass | decimal64 | |

math-package | enumeration | |

message-carrier-types | enumeration | |

modulation-type | enumeration | |

motion-type | enumeration | |

motion-types | enumeration | |

network-type | enumeration | |

percent | decimal64 | This value represents a percent. |

perturbation-types | enumeration | |

probability | decimal64 | This value represents a probablity with ideal accuracy. |

sensitivity | decimal64 | 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... |

size | decimal64 | Size along the maximum dimension of a nanoscale object. |

specificity | decimal64 | 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 targ... |

specificity-types | enumeration | |

speed | decimal64 | The rate of change of position of an entity. |

time | decimal64 | This value represents a time duration in nanoseconds with ideal precision and accuracy. |

transport | enumeration | |

volume | decimal64 | This value represents ideal volume in cubic nanometers. |

## Groupings

Grouping | Objects | Abstract |

delta-vector | x y zdelta-x delta-y delta-z | A vector described by changes along each of three dimensions from position. |

ficks-1-law | J D phi x | |

ficks-2-law | J D phi xt | |

field-metrics | persistence-length diffusive-flux langevin-noise | 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 descr... |

ieee1906-components | ieee1906-perturbation ieee1906-motion ieee1906-field ieee1906-specificity | |

ieee1906-definition | transmitter receiver medium message message-carrier essential-nanoscale-component non-classical-physics | These are the minimum requirements for a nanoscale communication network and must be present and fully described. |

langevin-equation | m x t lambda eta | |

mass-flow-rate | m V-dot rho v A jm | |

math-expression | math-formula | |

message-metrics | message-deliverability-metric message-lifetime information-density bandwidth-delay-product information-and-communication-energy | 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. |

motion-metrics | collision-behavior mass-displacement-metric positioning-accuracy-of-message-carriers | 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. |

nabla | x y zterms | The result of the differential operator d/dx + d/dy + d/dz at a given position. |

position | x y z | A position in 3-dimensional space denoted by lengths along coordinates from a predefined origin. |

probability-density | density-function | |

required-mapping | transmitter receiver medium message message-carrier essential-nanoscale-component non-classical-physicsieee1906-perturbation ieee1906-motion ieee1906-field ieee1906-specificity | Every proposed IEEE nanoscale communication technique MUST instantiate this mapping. |

specificity-metrics | specificity-metric affinity-metric sensitivity-metric angular-spectrum delay-spectrum | 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. |

system-metrics | active-network-programmability perturbation-rate supersystem-degradation bandwidth-volume-ratio | System metrics relate to and impact all components. All of the metrics in this category shall be implemented. |

vector | magnitude direction | |

vector-field | math-formuladimensions vectors | An equation that describes a vector field. |

## Objects

Type Key |

Mandatory config |

Optional config |

Not config |

Object | Type | Abstract |

metrics | container | 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. |

active-network-programmability | container | 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). |

delta-f | leaf | The change in f(t) intentionally caused by a programmed Message Carrier through a surface. |

f | leaf | The flux of Message Carriers as a function of time where flux is the rate of flow through a unit area. |

S | container | math-formula |

math-formula | container | expression package version |

expression | leaf | A mathematical expression. |

package | leaf | The math package that reads the expression in its native format. |

version | leaf | The version of the math package assumed. |

t | leaf | The current time. |

affinity-metric | container | 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. |

affinity | leaf | The negative partial derivative of Gibb's free energy G with respect to extent of reaction zeta at constant pressure and temperature. |

angular-spectrum | container | Angular Spectrum quantifies the distribution of the intensity of nanoscale communication signals received at the receiver as a function of angle-of-arrival. |

density-function | list | A list of probabilities forming a probability density function. |

probability-sample | leaf | A sample probability in the probability density. |

bandwidth-delay-product | container | Bandwidth-Delay Product is proportional to the maximum number of Message Carriers capable of fitting within the physical channel. |

channel-bandwidth | leaf | The bits per second transported by the nanoscale communication channel. |

channel-delay | leaf | The time for a message to propagate from one end of a channel to the other. |

bandwidth-volume-ratio | container | The Bandwidth-Volume Ratio takes into account and combines two fundamental essences of molecular and nanoscale communication, namely its size and bandwidth. |

bandwidth | leaf | The bandwidth of the nanoscale communication channel. |

volume | leaf | The sum of the volume of the transmitter and receiver pair for a communication system. |

collision-behavior | container | Collision Behavior measures the physical result of collision between Message Carriers. |

coefficient-of-restitution | leaf | 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... |

speed-after-collision | leaf | The speed of a message carrier loaded with message after collision. |

speed-before-collision | leaf | The speed of a message carrier loaded with message before collision. |

delay-spectrum | container | Delay Spectrum quantifies the distribution of the intensity of nanoscale communication signals received at the receiver as a function of time-of-arrival. |

density-function | list | A list of probabilities forming a probability density function. |

probability-sample | leaf | A sample probability in the probability density. |

diffusive-flux | container | Fick’s First Law is one of the standard laws of diffusion. |

D | leaf | The diffusion coefficient or mass diffusivity in dimensions of length^2 time^−1, for example (m^2/s). |

J | leaf | 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. |

phi | leaf | For ideal mixtures, this is the concentration in dimensions of amount of substance per unit volume, for example (mol m^-3). |

x | leaf | The position (length), for example, in meters. |

information-and-communication-energy | container | This is the metric that quantifies energy used in nanoscale communication. This is energy per bit of information conveyed by the Motion Component. |

energy-message-delivery | leaf | The energy used to transport a message across a channel. |

information-message-delivery | leaf | The amount of information in a message. |

information-density | container | Information Density is the amount of information encoded within a Message Carrier per volume. |

message-information | leaf | The amount of information in a message. |

message-volume | leaf | The volume of a message. |

langevin-noise | container | Random motion has a significant impact upon the performance of Message Carriers, in particle form, to reach their target receivers. |

eta | leaf | The random component of force (motion component). The unit is a Newton. |

lambda | leaf | The systematic part of the molecular force (field component). The unit is momentum. |

m | leaf | The mass of the message carrier. |

t | leaf | The current time. |

x | leaf | The position of a message carrier. |

mass-displacement-metric | container | Molecular communication can assume Message Carriers are composed of mass and move from one location to another. |

M | leaf | Number of samples |

mass-displacement | leaf | Value of the mass displacement. |

T | leaf | Sample period (the time between each sample). |

tau | leaf | Sample time |

x | leaf | Mass at time t. |

message-deliverability-metric | container | 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 o... |

message-deliverability | leaf | The probability that a message survives long enough to deliver its information to the intended receiver |

receive-time | leaf | The mean time taken for a message to reach its intended receiver. |

time-to-live | leaf | The time before a message no longer contains valid information. |

message-lifetime | container | Message Lifetime measures the lifetime of a Message Carrier. |

lifetime | leaf | The time from creation of a message until it no longer contains valid information. |

persistence-length | container | 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). |

u-0 | container | Unit tangent vector at the origin or beginning of the chain of connected segments |

terms | container | dx dy dz |

dx | leaf | OID: /metrics/persistence-length/u-0/terms/dx |

dy | leaf | OID: /metrics/persistence-length/u-0/terms/dy |

dz | leaf | OID: /metrics/persistence-length/u-0/terms/dz |

x | leaf | OID: /metrics/persistence-length/u-0/x |

y | leaf | OID: /metrics/persistence-length/u-0/y |

z | leaf | OID: /metrics/persistence-length/u-0/z |

unit-tangent-vectors | list | segment-index s u-s |

s | container | The position of a unit tangent sample. |

x | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/s/x |

y | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/s/y |

z | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/s/z |

segment-index | leaf | A segment index. |

u-s | container | The unit tangent vector at point s in set of connected segments. |

terms | container | dx dy dz |

dx | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/u-s/terms/dx |

dy | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/u-s/terms/dy |

dz | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/u-s/terms/dz |

x | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/u-s/x |

y | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/u-s/y |

z | leaf | OID: /metrics/persistence-length/unit-tangent-vectors/u-s/z |

zeta-p | leaf | The persistence length. |

perturbation-rate | container | Perturbation Rate is a measure of both the rate and control of any type of perturbation used to send a signal in the system. |

error-of-perturbation | leaf | Rate of error in the componet representing bits of information in the channel. There is typically a tradeoff with rate-of-perturbation |

rate-of-perturbation | leaf | Rate of change of the componet representing bits of information in the channel. There is typically a tradeoff with error-of-perturbation. |

positioning-accuracy-of-message-carriers | container | 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 carrier... |

accuracy-percent | leaf | Then number of message carriers located within the given area or volume. |

radius | leaf | OID: /metrics/positioning-accuracy-of-message-carriers/radius |

x | leaf | OID: /metrics/positioning-accuracy-of-message-carriers/x |

y | leaf | OID: /metrics/positioning-accuracy-of-message-carriers/y |

z | leaf | OID: /metrics/positioning-accuracy-of-message-carriers/z |

sensitivity-metric | leaf | A measure of the proportion of true positives, which are events that actually occurred and have been correctly detected. See also: specificity. |

specificity-metric | leaf | A measure of precision in matching between components. See also: sensitivity. |

supersystem-degradation | container | 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. |

ds | leaf | The supersystem degradation of the performance-attribute. |

performance-attribute | leaf | A descriptive name of the performance attribute. |

sp | leaf | The native supersystem performance (without the embedded nanoscale communication network). |

spn | leaf | The supersystem performance of the performance-attribute with the embedded nanoscale communication network. |

microtubule-field | container | tubes |

tubes | list | A tube is comprised of segments. |

binding-time | leaf | The mean time motors remain bound to the microtubule. |

direction | leaf | OID: /microtubule-field/tubes/direction |

segments | list | Segments comprise a tube. |

length | leaf | The length of the microtubule in nanometers. |

orientation | leaf | The angle of the microtubule in degrees from horizontal. |

x | leaf | OID: /microtubule-field/tubes/segments/x |

y | leaf | OID: /microtubule-field/tubes/segments/y |

z | leaf | OID: /microtubule-field/tubes/segments/z |

molecular-motor-motion | container | This is for all motors in the system. |

motors | list | This is for a single motor. |

motor-name | leaf | The unique identifier for a motor. |

movement | list | A sample of a motor's motion history. |

x | leaf | OID: /molecular-motor-motion/motors/movement/x |

y | leaf | OID: /molecular-motor-motion/motors/movement/y |

z | leaf | OID: /molecular-motor-motion/motors/movement/z |