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 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 content/docs/irmd.md (limited to 'content/docs') 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 -- cgit v1.2.3