Network Working Group Stefan Hans Internet-Draft April 5, 2017 Intended status: Experimental Expires: October 7, 2017 Concepts of Contextinformation Routing Networks (CRNs) CRN_Concepts Abstract Contextinformation Routing Network (CRN) is a communication framework enabling a universal service to join matching contextinformation or its communication partners respectively. This document describes the concepts of CRNs by explaining its main components, which are o Contextinformation (CI) o Contextinformation Coding (CIC) o Contextinformation Packet (CIP) o Contextinformation Routing (CIR) This document does not cover concrete specifications or requirements in detail. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on October 7, 2017. Stefan Hans Expires October 7, 2017 [Page 1] Internet-Draft Contextinformation Routing Networks April 2017 Copyright Notice Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Contextinformation Coding (CIC) . . . . . . . . . . . . . . . 5 3.1. Internal Structure . . . . . . . . . . . . . . . . . . . 5 3.1.1. CIC-Brick . . . . . . . . . . . . . . . . . . . . . . 5 3.1.2. CIC-Number . . . . . . . . . . . . . . . . . . . . . 6 3.1.3. CIC-Spam and CIC-Padding . . . . . . . . . . . . . . 6 3.2. Boolean Operations . . . . . . . . . . . . . . . . . . . 6 3.3. Types of CIC-Rulesets . . . . . . . . . . . . . . . . . . 7 3.4. Deployment of CIC-Rulesets . . . . . . . . . . . . . . . 7 4. Contextinformation Packet (CIP) . . . . . . . . . . . . . . . 7 4.1. Header Data . . . . . . . . . . . . . . . . . . . . . . . 7 4.2. Contextinformation . . . . . . . . . . . . . . . . . . . 7 4.3. Application Data . . . . . . . . . . . . . . . . . . . . 7 5. Contextinformation Routing (CIR) . . . . . . . . . . . . . . 7 5.1. Universal Aspects . . . . . . . . . . . . . . . . . . . . 8 5.1.1. Overlay Network . . . . . . . . . . . . . . . . . . . 8 5.1.2. Encoded CI as Index . . . . . . . . . . . . . . . . . 8 5.1.3. Conception as Reactive System . . . . . . . . . . . . 8 5.2. Different Purposes . . . . . . . . . . . . . . . . . . . 9 5.2.1. Application's CI Match . . . . . . . . . . . . . . . 9 5.2.2. Application's Network Address Updates . . . . . . . . 9 5.2.3. CIC-Ruleset Requests . . . . . . . . . . . . . . . . 9 5.2.4. Storage and Data Analytics . . . . . . . . . . . . . 9 5.2.5. Metadata and Internal Usage . . . . . . . . . . . . . 9 6. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 9 7. Emergence and Future Use . . . . . . . . . . . . . . . . . . 10 8. Security Considerations . . . . . . . . . . . . . . . . . . . 10 9. Informative References . . . . . . . . . . . . . . . . . . . 10 Appendix A. CRN's Glossary . . . . . . . . . . . . . . . . . . . 10 Appendix B. CRN's Abbreviations . . . . . . . . . . . . . . . . 12 Stefan Hans Expires October 7, 2017 [Page 2] Internet-Draft Contextinformation Routing Networks April 2017 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 12 1. Introduction It started with thinking about context-aware services. Here, context-awareness shouldn't be limited to location-based aspects, but it should cover any kind of context. Concepts for an open, unrestricted and flexible structure to support context-aware services had to be developed. It should not only be applicable for established services but also ready for the emergence of new ones. For this purpose the following questions had to be answered: How can a framework connect communication partners with matching communication interests and context? How can it be open for all types of interests and context? How can it be open for presently unknown extensions? How can it be organized to maximize the availability of the service? How can it be organized to minimize the customizing effort for applications using the service? Let me now introduce the main concepts: Contextinformation (CI) Contextinformation (CI) refers mainly to the known terms information and context. Due to the lack of a useful clear distinction between the two, CI is defined here as information within its described context, i.e. context becomes part of CI by describing it. Another aspect of CI is the accuracy with regard to possible matches with other CI. All of these has to be converted into a general format, in which the actual meaning is not relevant to find matching CI. Contextinformation Coding (CIC) Contextinformation Coding (CIC) is the conversion of CI into a binary format and vice versa. CIC means both, the conversion rules (CIC-Ruleset) for a particular type of CI and a concrete piece of encoded CI. Every CIC has an identifier, called CIC-Number. A CIC-Ruleset and all its Stefan Hans Expires October 7, 2017 [Page 3] Internet-Draft Contextinformation Routing Networks April 2017 encoded CI are linked by this CIC-Number. Encoded CI has the form of two parallel bit strings of equal length. This pair consists of CIC-Content, an instance of the CIC- Ruleset, and CI-Mask, which is used to define the accuracy of the searched match. Then it is sufficient for a bitwise match of two pieces of CI if both CIC-Contents are equal or both CI-Masks mark them as non-relevant. Let me illustrate this with an example. Offer and Request are two communication roles, and Location is a type of CI. Offer says "I'm available for any Request with matching CI to contact me" and Request says "I'm searching for any Offer with matching CI". Both have an exact information about their location and can define a surrounding area where Offer is available respectively Request is searching. CIC-Content, as the encoded location, together with CI-Mask defines the surrounding area by marking bits of CIC-Content as true in any case concerning the match. Here the CI of Offer and Request are matching if the location of one is in the surrounding area of the other and vice versa. Contextinformation Packet (CIP) Encoded CI is encapsulated in a data structure named Contextinformation Packet (CIP). A CIP is divided into three parts: * Header Data * Contextinformation * Application Data All information which has to be transferred inside CRNs has to be encapsulated within CIPs. Contextinformation Routing (CIR) Contextinformation Routing (CIR) takes place in an overlay network built normally on top of the TCP/IP layer. It is organized basically by using CIC-Content as an index. It is oriented towards known concepts of network routing, peer-to-peer and others network principles and B-tree like data structures. Stefan Hans Expires October 7, 2017 [Page 4] Internet-Draft Contextinformation Routing Networks April 2017 2. Motivation The motivation for this document is mainly the publication to prevent proprietary rights of third parties hindering the general availability of its described concepts. Another additional motivation is the exchange with interested experts. This draft is the first step towards a possible formal recognition as an Internet Standard in the future. 3. Contextinformation Coding (CIC) Contextinformation Coding (CIC), i.e. a CIC-Ruleset, defines an injective function between a set of CIC-Contents and a set of permutations of a binary string with a fixed byte length, i.e. there is exactly one bit string for every described content of the CIC- Ruleset. CI-Mask, the second binary string, is not defined individually by the CIC-Ruleset. CI-Masks are not part of the CIC- Ruleset, but is part of the encoded CI. 3.1. Internal Structure The internal structure of CIC is self-referential. This means an encoded CI can be part of other encoded CI and can contain other encoded CI. Likewise, a CIC-Ruleset can be part of other CIC- Rulesets and can contain other CIC-Rulesets. A CIC, not containing other CICs, is called CIC-Module. The outermost CIC is called a Root-CIC. A Root-CIC can be part of another CIC. There it is no longer a Root-CIC. Every CIC needs at least one CIC-Number. A CIC can even be interchangeable internally and in which case it needs one CIC-Number for each possible CIC. 3.1.1. CIC-Brick Encoded CI consists of a pair of bit strings with its length rounded up to the next byte. One of these byte pairs is called a CIC-Brick. One byte string is named CIC-Content and the other is named CI-Mask. CIC-Content stands either for encoded CI or for a CIC-Number. One CIC-Brick can contain more than one items, i.e. encoded CI and CIC- Numbers. The Root-CIC must have a length rounded up to the next byte lately. Stefan Hans Expires October 7, 2017 [Page 5] Internet-Draft Contextinformation Routing Networks April 2017 Figure 1 shows the structure of a CIC-Brick. 0 1 2 3 4 5 6 7 8 + ----+---- +-----+-----+-----+-----+-----+-----+ | CIC-Content | + ----+-----+-----+-----+-----+-----+-----+-----+ | CI-Mask | + ----+-----+-----+-----+-----+-----+-----+-----+ The calculation of a match between two CIC-Bricks uses the following function or bitwise expression respectively: match(Offer, Request) = ( NOT ( Offer-Content XOR Request-Content ) ) OR ( Offer-Mask AND Request-Mask ) 3.1.2. CIC-Number Each CIC-Ruleset and all its encoded CI have an individual CIC-Number in common. In general, a CIC-Number can be well-known or temporary. The CIC-Numbers of the Root-CICs must be well-known and they are part of the Contextinformation Packet specification (CIP-Specification). 3.1.3. CIC-Spam and CIC-Padding CIC-Spam describes bits of a CIC which have no meaning. Every encoded CI of the same CIC-Number must have the same length. If encoded CI does not have the agreed length of its CIC-Ruleset, it will be filled with CIC-Spam (0-bits resp. NULL values). This is called CIC-Padding. 3.2. Boolean Operations Boolean operations are not applicable to CICs directly, but to their result sets. I.e. instead to use boolean operations on encoded CI, set operations have to be used on result sets. Boolean conjunction (AND) equates to set intersection (INTERSECT) Boolean disjunction (OR) equates to set union (UNION) Boolean negation (NOT) equates to set difference (MINUS) These set operations are executed normally outside the CRNs. Stefan Hans Expires October 7, 2017 [Page 6] Internet-Draft Contextinformation Routing Networks April 2017 3.3. Types of CIC-Rulesets It is neither specified how CIC-Rulesets should look like nor exist any regulations how they should interact with applications. 3.4. Deployment of CIC-Rulesets CRNs provide an infrastructure for CIC-Rulesets. This can, but must not, be used for distributing CIC-Rulesets. Any other way is possible according to the intended availability. 4. Contextinformation Packet (CIP) For the concepts of the CIP's main parts see the following sections. For detailed CIP specification see Internet-Draft "Contextinformation Paket (CIP) Specification for Contextinformation Routing Networks (CRNs)" [CIP_Spec]. 4.1. Header Data The header data concern all metadata not directly related to CIC. The header data starts with a part of fixed size and static structure followed by a dynamic part. The static part defines the dynamic part's type and its length. 4.2. Contextinformation The Contextinformation starts with a part of fixed size and static structure followed by a dynamic part. The static part defines the dynamic part's type and its length. The dynamic part consists of CIC-Bricks only. 4.3. Application Data The application data starts with a part with fixed size and static structure followed by a dynamic part. The static part only defines the dynamic part's type and its length. 5. Contextinformation Routing (CIR) For the main concepts of the CIR see the following sections. For detailed CIR specification see Internet-Draft "Contextinformation Routing (CIR) Specification for Contextinformation Routing Networks (CRNs)" [CIR_Spec]. Stefan Hans Expires October 7, 2017 [Page 7] Internet-Draft Contextinformation Routing Networks April 2017 5.1. Universal Aspects Within CRNs, and according to client-server model, the client aspects of CIR are referred to as CIR-Client(s) and the server aspects as CIR_Server(s) analogously. Independent of the purpose, the following aspects of CIR are universal: 5.1.1. Overlay Network CIR can be built on top of any digital network, especially on top of the TCP/IP layer over the internet, intranets and (mobile) ad-hoc networks. 5.1.2. Encoded CI as Index The structural factor of CIR is the encoded CI itself. CIC-Content is used like an index and CI-Mask marks the branchings. The lowest number of branchings of a routing responsibility (CIR-Node) corresponds to the permutations of a byte of encoded CI, i.e. 256 (cf. CIC-Brick). Thus CIR structure can be described as a tree data structure (CIR-Tree) with that particular degree of 256. 5.1.3. Conception as Reactive System According to "The Reactive Manifesto" [ReactiveManifesto] CIR is oriented towards the following conceptual specifications: Responsive The CIR-Servers use a heartbeat functionality to ensure that the system reacts in a timely manner. Resilient CRNs, and CIR-Servers in particular avoid any single point of failure by replicating relevant information and delegating isolated tasks according to current availability of services within the CRN. Elastic As part of a CRN, every hardware device has a role as CIR- Server soever, and provides resources accordingly. In the case of an impending partial overload appropriate procedures distribute proactively the load among suitable CIR-Servers. Stefan Hans Expires October 7, 2017 [Page 8] Internet-Draft Contextinformation Routing Networks April 2017 Message Driven To avoid having resources blocked while waiting for response CIR sends a message without relying on the response. In other words, it doesn't matter for recipients who send this message. 5.2. Different Purposes Apart from the very varied end use of applications, there are the following intrinsic purposes of CIR: 5.2.1. Application's CI Match This routing is oriented on the CIC-Bricks using CIC-Content as an index. If a bit of CI-Mask is true, the routing will be split to follow both paths of the indexing. 5.2.2. Application's Network Address Updates To optimize the availability of the applications in volatile networks, e.g. mobile devices in the internet, CRNs have a procedure to check the applications' address information and the applications have a procedure to update these. 5.2.3. CIC-Ruleset Requests Similar to the encoded CI routing CRNs provide an infrastructure to store and retrieve CIC-Rulesets. 5.2.4. Storage and Data Analytics Similar to the encoded CI routing CRNs provide an infrastructure to store and retrieve CIC-Rulesets. 5.2.5. Metadata and Internal Usage CRNs communicate aggregations and other metadata, if asked for or if the result set of matching CI is too large. 6. Limitations Contextinformation Packet (CIP) defines a maximum number of CIC- Bricks. But a CIC can use an unlimited number of CIPs in a row. Here, related to one CIP, the end point of the Contextinformation Routing (CIR), i.e. the matching communication partner, is the start point for the next CIR, related to the next CIP, and so on. Seen Stefan Hans Expires October 7, 2017 [Page 9] Internet-Draft Contextinformation Routing Networks April 2017 from another perspective, every CIP lives in its own Contextinformation Routing Network (CRN) with its own CICs. There the CIC finds its route through these CRNs. 7. Emergence and Future Use Due to the simple basic principles, the broad applicability and the unrestricted length of CI, the resulting codings and the applications using them can not be foreseen, provided that CRNs will be used numerously. The resulting emergence is probably the key aspect of CRNs. Even the main application principles of today are possibly not complete or major relevant ones are missing still. Therefore the specifications leave room for future use. 8. Security Considerations The use of contextinformation routing networks described in this memo has no direct impact on the security of the Internet. 9. Informative References [CIP_Spec] Hans, S., "Contextinformation Paket (CIP) Specification for Contextinformation Routing Networks (CRNs)", April 2017, <https://raw.githubusercontent.com/stefanhans/ golang-contexting/master/RFC/CIP_Specification.txt>. [CIR_Spec] Hans, S., "Contextinformation Routing (CIR) Specification for Contextinformation Routing Networks (CRNs)", April 2017, <https://raw.githubusercontent.com/stefanhans/ golang-contexting/master/RFC/CIR_Specification.txt>. [ReactiveManifesto] Boner, J., Farley, D., Kuhn, R., and M. Thompson, "The Reactive Manifesto", September 2016, <http://www.reactivemanifesto.org>. Appendix A. CRN's Glossary Contextinformation (CI) Information within its described context. Contextinformation Coding (CIC) The CIC-Ruleset for a particular type of CI and a concrete piece of encoded CI. Contextinformation Packet (CIP) Stefan Hans Expires October 7, 2017 [Page 10] Internet-Draft Contextinformation Routing Networks April 2017 Data structure encapsulating encoded CI. Contextinformation Routing (CIR) Overlay network routing using CIC-Content as an address. CIC-Brick One byte of encoded CI consisting of CIC-Content and CIC-Mask as a pair of bit strings. CIC-Content The definite part of encoded CI. CIC-Mask The undefining part of encoded CI. CIC-Module A CIC, not containing other CICs. CIC-Number Linking CIC-Ruleset and all its encoded CI. CIC-Padding Filling a shorter as required encoded CI with CIC- Spam. CIC-Ruleset Set of CIC-Modules. CIC-Spam Bits of a CIC which have no meaning. CIR-Client Client aspects of CIR. CIR-Index CIC-Content as an index of the CIR-Tree. CIR-Node Routing responsibility of the lowest byte of the CRN- Address. CIR-Server Server aspects of CIR. CIR-Tree B-tree describing the CIR data structure. Stefan Hans Expires October 7, 2017 [Page 11] Internet-Draft Contextinformation Routing Networks April 2017 CRN-Address CIC-Content as overlay network address. Root-CIC The outermost CIC and the CIC-Brick identifying it. Appendix B. CRN's Abbreviations +--------------+------------------------------------+ | Abbreviation | Meaning | +--------------+------------------------------------+ | CI | Contextinformation | | CIC | Contextinformation Coding | | CIP | Contextinformation Packet | | CIR | Contextinformation Routing | | CRN | Contextinformation Routing Network | | RZV | Reserved Zero Value | +--------------+------------------------------------+ Author's Address Stefan Hans Rotwandstr. Baldham 85598 Germany Email: uni@stefan-hans.de Stefan Hans Expires October 7, 2017 [Page 12]