From 51dbad4bd693cdd5b3024e51a1891e181f192064 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Tue, 23 Jul 2019 13:13:01 +0200 Subject: content: Initial creating layers section --- content/docs/irmd.md | 74 +++++++++++++++++++++++++++++++++++ static/images/creating_layers.jpg | Bin 0 -> 54903 bytes static/images/irm_ipcp_bootstrap.png | Bin 0 -> 6619 bytes static/images/irm_ipcp_create.png | Bin 0 -> 6785 bytes 4 files changed, 74 insertions(+) create mode 100644 content/docs/irmd.md create mode 100644 static/images/creating_layers.jpg create mode 100644 static/images/irm_ipcp_bootstrap.png create mode 100644 static/images/irm_ipcp_create.png diff --git a/content/docs/irmd.md b/content/docs/irmd.md new file mode 100644 index 0000000..ee43967 --- /dev/null +++ b/content/docs/irmd.md @@ -0,0 +1,74 @@ +--- +title: "Creating layers" +author: "Dimitri Staessens" +description: "IRMd" +date: 2019-07-23 +#type: page +draft: false +--- + +The most important structure in recursive networks are layers, that +are built op from [elements](/docs/elements/) called Inter-Process +Communication Processes (IPCPs). + +
+{{
}} +
+ +Now, the question is, how do we build these up these layers? IPCPs are +small programs (think of small virtual routers) that need to be +started, configured and managed. This functionality is usually +implemented in some sort of management daemon. Current RINA +implementations call it the *IPC manager*, Ouroboros calls it the +__IPC Resource Management daemon__ or __IRMd__ for short. The IRMd +lies at the heart of each system that is participating in an Ouroboros +network, implementing the core function primitives. It serves as the +entry point for the system/network administrator to manage the network +resources. + +We will describe the functions of the Ouroboros IRMd with the +Ouroboros commands for illustration and to make things a bit more +tangible. + +The first set of primitives, __create__ (and __destroy__), allow +creating IPCPs of a given *type*. This just runs the process without +any further configuration. At this point, that process is not part of +any layer. + +
+{{
}} +
+ +The example above creates a unicast IPCP and gives that IPCP a name +(we called it "my_ipcp"). A listing of the IPCPs in the system shows +that the IPCP is running as process 4157, and it is not part of a +layer ("*Not enrolled*"). + +To create a new functioning network layer, we need to configure the +IPCP, using a primitive called __bootstrapping__. Bootstrapping sets a +number of parameters for the layer (such as the routing algorithm to +use) and activates the IPCP to allow it to start providing flows. The +Ouroboros command line allows creating an IPCP with some default +values, that are a bit like a vanilla IPv4 network: 32-bit addresses +and shortest-path link-state routing. + +
+{{
}} +
+ +Now, we have a single node-network. In order to create a larger +network, we connect and configure new IPCPs using a third primitive +called __enrollment__. When enrolling an IPCP in a network, it will +create a flow (using a lower layer) to an existing member of the +layer, download the bootstrapping information, and use it to configure +itself as part of this layer. + +[TODO: enrollment example] + +--- +Changelog: + +2019-07-23: Initial version diff --git a/static/images/creating_layers.jpg b/static/images/creating_layers.jpg new file mode 100644 index 0000000..fe60019 Binary files /dev/null and b/static/images/creating_layers.jpg differ diff --git a/static/images/irm_ipcp_bootstrap.png b/static/images/irm_ipcp_bootstrap.png new file mode 100644 index 0000000..8660f63 Binary files /dev/null and b/static/images/irm_ipcp_bootstrap.png differ diff --git a/static/images/irm_ipcp_create.png b/static/images/irm_ipcp_create.png new file mode 100644 index 0000000..4a9d24d Binary files /dev/null and b/static/images/irm_ipcp_create.png differ -- cgit v1.2.3