Internet-Draft ESON January 2022
Spinella Expires 31 July 2022 [Page]
Workgroup:
TBD
Internet-Draft:
draft-spinella-event-streaming-open-network-00
Published:
Intended Status:
Informational
Expires:
Author:
E. Spinella
Syndeno

Event Streaming Open Network

Abstract

This document describes the vision, architecture and network protocol for an Event Streaming Open Network over the Internet.

About This Document

This note is to be removed before publishing as an RFC.

The latest revision of this draft can be found at https://example.com/LATEST. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-spinella-event-streaming-open-network/.

Source for this draft and an issue tracker can be found at https://github.com/syndeno/draft-spinella-event-streaming-open-network.

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 https://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 31 July 2022.

Table of Contents

1. 1. Introduction

Society is rapidly digitalizing and automating the exchanges of value that constitute the economy. Also, considerable time and energy is spent to assure that key transactions can be executed with reduced human involvement with better, faster, and more accurate results. In this context, Event Streaming can play a key role in how the economic system evolves.

However, most of the application layer integrations executed today across organizational boundaries are not in real time. Also, they currently require employing a variety of formats and protocols. Some industries have adopted data formats for exchanging information between organizations, such as Electronic Data Interchange (EDI). However, those integrations are limited to specific use cases and represent a small fraction of all demanded organizational integrations.

Thus, there is no consistent and common consensus on a mechanism for the exchange of events across organizations. This results in a completely custom landscape for each real-time cross-organization integration. In this scenario, development teams must invest plenty of time into understanding and defining a common interface for events exchange.

In this context, we can now introduce how this landscape could change with the introductiopn of an Event Streaming Open Network over the Internet. When needing to connect real-time event flows across organizations, developers would have a common basis for finding, publishing, and subscribing to event streams. Also, given a set of standard formats to encode and transmit events, developers could use the programming language of their choice. Overall, this set of standards would drastically reduce the cost of real-time integration, which would also enable experimentation by users.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

2. 2. An Open Network for Event Streaming over the Internet

In this section, we will argue how Internet standards are developed and why this could be the case for an Event Streaming Open Network.

An interesting example of this phenomenon is the case of ISDN (Integrated Services Digital Network), a set of communications standards for the transmission of voice, video, and data over the PSTN (Public Switched Telephone Network) developed by the ITU-T (Telecommunication Standardization Sector) in 1988. ISDN pretended to use the existing public telephone network to transmit digital data in a time when the Internet connectivity access was not as broadly available as it is today. The main competitor of this standard was the incipient Internet itself, which could be used to transmit the same data.

The Internet alternative needed a protocol to support the same services offered by ISDN, which was initially developed by the conjoint effort of the academic and private sector. Consequently, in 1992 the Mbone (Multicast Bone) was created. This project was an experimental network backbone built over the Internet for carrying multicast IP traffic, which could be used for multimedia content. After some important milestones of this project, the SIP (Session Initiation Protocol) was defined in 1996 and was published as a standard protocol in IETF's RFC-3261. The reality today is that SIP has completely won the standards battle for multimedia transmission over the Internet, and ISDN usage has been on continuous decline.

As for Event Streaming, we see a similar scenario set-up today. There are currently several open specifications and implementations for Event Streaming, like AMQP (Advanced Messaging Queueing Protocol), supported by RabbitMQ. However, while AMQP can be used for several purposes, Kafka Protocol specializes on Event Streaming Processing and its specialized features make it more convenient than RabbitMQ (i.e. ordering).

In the case of an Event Streaming Open Network over the Internet, if we guide ourselves by the history of the most widely adopted protocols on the Internet, the governance should be similar to that of the WWW or Email. Both the WWW and Email have open specifications as well as open-source implementations. We can mention the Apache Web Server as an open-source implementation of the HTTP protocol; Postfix for SMTP; and Bind for DNS. Nevertheless, the governance for these protocols' specifications relies on the IETF.

In order to define the characteristics of an Event Streaming Open Network, we will focus on the definition of shared and openly accessible infrastructure. First, we will review the principles of Free, Open & Neutral Networks and why they should be followed for an Event Streaming Open Network. Then, we will show how DNS complies with the criteria to be considered an infrastructure resource. Finally, we will demonstrate how this is also true for Event Streaming.

2.1. 2.1. Free, Open & Neutral Networks (FONN)

The main principles of a Free, Open & Neutral Network are:

  • It is open because it is universally open to the participation of everybody without any kind of exclusion nor discrimination, and because it is always described how it works and its components, enabling everyone to improve it.
  • It is free because everybody can use it for whatever purpose and enjoy it independently of his network participation degree.
  • it is neutral because the network is independent of the contents, it does not influence them and they can freely circulate; the users can access and produce contents independently to their financial capacity or their social condition. The new contents produced are orientated to stimulate new ones, or for the network administration itself, or simply in exercise of the freedom of adding new contents, but not to replace or to to block other ones.
  • It is also neutral with regard to the technology, the network can be built with whatever technology chosen by the participants with the only limitations resulting of the technology itself.

2.2. 2.1.1. Non-discriminatory and open access

Services such as DNS, the World Wide Web and Email do not discriminate and are open-accessible. Basically, people and organizations can access these networks as long as they can register an Internet Domain and host the required server components. Nowadays, there are alternatives to avoid having to register a domain name to have a web page or an email, such as Cloud WordPress Hosting or Gmail. However, we will focus on the network participants that provide services to end-users.

In the case of Guifi.net, we can highlight how this principle has been adopted in the fact that everybody can take part in the project without discrimination. Moreover, an emphasis is made in easing the participation of the disadvantaged collectives, with less resources or less opportunities to access information technologies, telecommunications, and the Internet.

An Event Streaming Open Network should provide resources in a similar way than the most widely adopted Internet Services. Thus, individuals and organizations must be able to register Flow address spaces for which the existing DNS infrastructure could be leveraged. Moreover, the specification of the protocols that implement the Metadata and Payload formats must also be openly accessible.

2.3. 2.1.2. Open participation

Internet Services like DNS, WWW and Email provide individuals and organizations with different ways of participation. First, anybody can obtain the protocols' specification and build a custom implementation, which would result in a new product compatible with the protocols. Secondly, anybody can register a domain name and set up servers using compatible products. Thirdly, anybody can join and participate in the IETF, the institution that governs the specifications for these protocols.

As for Guifi.net, not only anybody can extend the network with new nodes but also can also participate in existing projects of network extension. Also, the participants can add services on top of the network such as VoIP, FTP servers, broadcast radios, etc.

Regarding active participation on an Event Streaming Open Network, we can highlight the possibility for individuals and organizations to expand the services provided by the open network. This extensibility could be made possible by different uses of the event payloads and will vary significantly depending on the sector. Since we have already proved how Flow is an infrastructure resource, innovation would play its part and its results would be materialized in services expansion.

We can conclude that the same kind of openness of DNS, WWW and Email is necessary for an Event Streaming Open Network. Anybody should be able to obtain the specifications to build an implementation of the service. Also, since it should leverage the DNS infrastructure, anybody would be able to register Flow address spaces. Lastly, the specification could be governed by an institution such as the IETF, due the dependency of Flow with other Internet Services governed by this institution.

2.4. 2.2. Open Access Infrastructure Resources

The literature about Commons Infrastructure (Frischmann, 2007) defines a set of criteria to evaluate if a resource can be considered an infrastructure resource. This analysis is relevant since it can provide some arguments to prove the need of an infrastructure of commons for Event Streaming, which could then be materialized in an Open Network for Event Streaming. The demand-side criteria for evaluating if a given resource can be considered as an infrastructure resource are:

  1. The resource can be consumed nonrivalrously.
  2. Social demand for the resource is driven primarily by downstream productive activity that requires the resource as an input.
  3. The resource is used as an input into a wide range of goods and services, including private goods, public goods and/or non-market goods.

First, a nonrival good describes the "shareable" nature of a given good. Infrastructures are shareable in the sense that the resources can be accessed and used by multiple users at the same time. However, infrastructure resources vary in their capacity to accommodate multiple users, and this variance in the capacity differentiates nonrival resources from partially rival resources. A nonrival resource represents those resources with infinite capacity, while a partially rival resource has finite but renewable capacity. As an example, Broadcast Television is a nonrival resource since additional users do not affect the capacity of the resource. On the other hand, natural oil resources are completely rival since its availability is limited and it is not renewable. In the middle, we have partially rival resources like a highway, which may be congested. This last characteristic is also true for the Internet since it supports additional users without degrading the service to existing users to a certain extent.

Secondly, infrastructure resources consumption is primarily driven by downstream activities that require this resource as an input. This means that the broad audience consumes infrastructure resources indirectly. For instance, highway infrastructure is used to transport every kind of physical good which people and organizations purchase. This facilitates the generation of positive externalities for society through the downstream production of public goods and non-market goods. These positive externalities might be suppressed under a regime where resource availability is driven solely based on individuals' willingness to pay.

Regarding willingness to pay, it is relevant to analyze this factor more exhaustively. Frischmann states that if infrastructure access is allocated based on individuals' willingness to pay the potential positive externalities of that infrastructure might be stifled. Thus, infrastructure resources behave differently than end-user products: if the former are made available solely based on the end-user demands and willingness to pay, those needed infrastructure resources might never be made available. As an example, we can mention that if airports were built based on individuals' willingness to pay for them, they might not even be built. However, individuals are willing to pay for the airport's downstream activities, such as purchasing a flight or consuming air-transported goods. Then, a whole set of positive externalities are generated by the existence of an airport in a city.

In the third place, infrastructure resources are used as input for a wide range of outputs. This criterion emphasizes both the variance of the downstream outputs and their nature. Thus, the infrastructure resources possess a high level of genericness which enable productive activities that produce different goods with high variance. If we consider how an airport complies with this criterion, we can mention that not only airports serve individuals that need to travel by air but are also used to transport many kinds of physical goods. These goods then enable other activities throughout the downstream value chain. Then, the output variance of the activities that take airport infrastructure as input is significantly high.

2.4.1. 2.2.1. Open Access DNS Resource Example

Now, we will provide as an example how DNS complies with these criteria and why it can be considered an infrastructure resource. 1. DNS infrastructure is a partially rival resource because individuals and organizations can register domains in the Domain Name addressing space. It is partially rival because not every actor can acquire the same domain name. However, the access to registering domain names is open and non-discriminatory. Moreover, DNS is also prone to congestion, which emphasizes its partially rival nature. 2. DNS infrastructure demand is driven principally by downstream products and services. An average Internet user is not paying directly for this infrastructure, but all the Internet services the user consumes pay for DNS infrastructure. This is true for all the Internet services due to the ubiquitous nature of DNS infrastructure. 3. All Internet services take as input DNS infrastructure and produce a broad variety of outputs, which then generate positive externalities to society as a whole by means of private goods, public goods and/or non-market goods.

We can conclude that DNS complies with Frischmann criteria for being considered as an infrastructure resource. The resource is represented both by the domain name that can be and by the querying capacity of DNS servers.

2.4.2. 2.2.2. Flow: Event Streaming Internet Resource

In this section, we will describe an Event Streaming Internet Resources. For this, we will consider the previously described guidelines for FONN as well as the characteristics of DNS as a resource. This Event Streaming Internet Resource shall be refered to as "flow" from now onwards.

To begin with, we need to define what elements could be considered as infrastructure resources in an Event Streaming Open Network. First, the resource must be capable of delivering streams of events to consumers. Secondly, it must also permit producers to write events to the stream. Thirdly, each stream must be identifiable (i.e., URI) and able to be located (i.e., URL). From now on, we will use "Flow" to refer to the infrastructure resource of an Event Streaming Open Network. The first Frischmann criterion requires the resource to be consumed nonrivalrously. Complete nonrivalrously for any Internet Service cannot be achieved due to the possibility of congestion and potential unavailability of different elements of the network. The same would be true for a Flow resource. Moreover, the public naming addressing space for Flows would be limited to the same level as that of domain names.

We will continue now with the third criterion. To illustrate the potential of Flow being used as inputs for downstream activities, we will refer to Urquhart's vision for Event Streaming. He lists two areas in which significant changes can happen:

  1. The use of time-critical data for customer experience and efficiency. This is driven because today's consumers are increasingly expecting great experiences, and organizations are almost always motivated to improve the efficiency of their operations.
  2. The emergence of new businesses and business models. Businesses and institutions will quickly discover use cases where data processed in a timely manner will change the economics of a process or transaction. They may even experiment with new processes, made possible by this timely data flow. Thus, flow resources will also enable innovation. These innovations are responsible for generating positive externalities.

Then, we have demonstrated why Flow resources can be considered as infrastructure resources using Frischmann's Demand-side Theory of Infrastructure. These resources can be managed in an open manner to maximize positive externalities, which basically means maintaining its open access, not discriminating, and eliminating the need to obtain licenses to use the resources. Consequently, managing infrastructure resources in this manner eliminates the need to rely on either market actors or governments.

Lastly, the adoption of an Event Streaming Open Network implies taking Flow resources as inputs for productive activities. These inputs would then be used downstream to generate private goods, public goods and/or non-market goods. Additionally, we can assure that most of the consumers of Flow would not directly consume Flow resources. They would consume the outputs of downstream activities that use Flow as input. Again, the consumers may not be willing to pay for Flow resources directly.

We can conclude this section mentioning that an Event Streaming Open Network would enable one infrastructure resource called Flow. The access to this resource can be managed in an openly manner: maintaining open access, not discriminating users or different uses of the resource, and eliminating the need to obtain approval or a license to use the resource.

3. 3. Necessities for an Event Streaming Open Network over the Internet

In this section, we will describe the main needs for the broad adoption of Event Streaming. The focus will be made on detecting and describing the missing capabilities that could not only enable but also accelerate the event data integration among different organizations. The different necessities detailed in this section will serve as input for an architecture design.

3.1. 3.1. Necessity 1: Event Streaming Internet Resource Public Registry

A public registry of an organization's available event streams does not exist. We will argue in this section why this is the core component that an Event Streaming Open Network can provide.

Nowadays, when an organization needs to publish an event stream or event flow, they usually follow some form of the following steps:

  1. Develop and deploy a producer application that writes events to a queue.
  2. Create all necessary networking permissions for external public access to the queue.
  3. Inform the remote user the access information (i.e., Hostname/IP, protocol, and port) together with the required client details and technology for accessing the stream (i.e., Apache Kafka Protocol, RabbitMQ API, etc.).
  4. Create credentials for consumer authentication and authorization access to the queue. 5.Develop and deploy a consumer application that reads the queue.

Now, we can compare this process to a simple email interaction: 1. Sender opens a graphical Mail User Agent application and sends an email to an email address formatted as user@domain. 2. The message is sent to an SMTP server that routes it to the destination SMTP servers for the given domain. Once received, the message is put into the user mailbox. 3. When the recipient checks its mailbox by IMAP or POP3, the new email is transferred to the Mail User Agent.

In these two scenarios, we can see that the information needed to be exchanged offline by the actors is completely different in size and content.

First, in the case of email, there is a shared naming space given by the Domain Name Service (DNS). The email format has been standardized by the IETF in RFC 5321, section 2.3.11. Thus, there is a common naming space that is used for referencing mailboxes in the format user@domain. Thus, the offline details communicated by the peers is only the recipient email address. There is no analogous standard nor an open alternative for Event Streaming.

Therefore, in the case of Event Streaming, users need to perform plenty of offline communication to agree not only on the technology to use but also on the queue to use. For instance, two organizations may be currently using Apache Kafka and need to share an event stream among themselves. The organization having the source of the stream should provide the following details to the consumer organization: * Bootstrap servers: Fully Qualified Domain Name list of the Apache Kafka brokers to start the connection to the Apache Kafka Brokers. Example: tcp://kf1.cluster.emiliano.ar:9092, tcp://kf2.cluster.emiliano.ar:9092, tcp://kf3.cluster.emiliano.ar:9092 * Topic or Queue name: name of the topic resource in the Apache Kafka Cluster * Authentication information: User and password, TLS Certificate, etc.

In the case these organizations were not both using Apache Kafka, the use case cannot be simply solved without incurring in development or complex configurations as well as adopting proprietary components.

We can conclude that an Event Streaming Open Network should provide a global accessible URI for streams in a similar fashion than email, to reduce offline developers' interactions. This means being able to name event streams in a common naming space like DNS, as well as providing a mechanism for users to discover the location and connections requirements.

3.2. 3.2. Necessity 2: Establishment of a User Space for Events

Another need for broad adoption is due to the inexistence of a common and agreed user convention. In the general literature, we cannot find reference to the types of users that would consume or produce events to and from an event stream.

In this sense, it is also appropriate to consider the email use case. Basically, an email user only needs to know the email address, the password, the URL of a web mail client or the details of IMAP/POP3 server connection. Once the user has this information, it's possible to access an email space or mailbox where the user can navigate the emails in it. Also, IMAP provides the possibility for the user to create folders and optionally share them with other users.

There is no analogous service currently available for Event Streaming analogous to the email case. This means that the user concept in Event Streaming is limited to authentication and authorization. Thus, the user does not have access to a "streambox". The result is the impossibility for a person or an application to possess a home directory containing all the streams owned by the user.

As a conclusion for this section, we can mention that it is necessary to embrace a user space resource for Event Streaming. This resource should not only solve the users' motivations and requirements but also reduce the offline verbal communications and custom development dependencies. In the next sections, we will refer to this component as the Event User Space Service.

3.3. 3.3. Necessity 3: An Agnostic Subscription Protocol

A third need for wide adoption is an agnostic protocol to manage subscriptions to event streams. For this need to be solved, it would be necessary first to count with an Event User Space Service. Then, in case a user has created a stream and wants to enable public subscriptions by other users, there is no general protocol to inform other parties of this subscription intention nor its confirmation.

The result is the inability for the users to seamlessly subscribe to an event stream. They either must employ protocols like MQTT or, in the need of employing other application protocols like Apache Kafka, hardcode the subscription details in the different software implementations. This means that there is no general subscription protocol for Event Streaming that is agnostic of the application protocol employed. This protocol implements both the Metadata Payload Format and Payload Format.

A good example to illustrate the difference between a control protocol that implements a Metadata Payload Format from a payload protocol that implements a Payload Format is how SIP (Session Initiation Protocol) works with RTP (Real Time Protocol) to provide VoIP capabilities. The former is a control protocol that initiates and maintains a session or call while the latter is the one responsible for carrying the payloads, which in the case of VoIP it would be coded audio.

Consequently, a similar definition of protocols could potentially mitigate this limitation for Event Streaming. If a protocol can be used to establish and maintain the subscriptions relationships while another different protocol is used for the events payload, all the current application protocols implementations could be supported.

Additionally, by counting also with an Event Streaming Public Registry, it would be possible to provide URI for streams in a similar way as email works with the "mailto" URI. For instance, in web pages one can find that email addresses are linked to mailto URIs which, when clicked, open the default email user application (i.e., Microsoft Outlook) to send an email to the referenced email address.

If a user counts with a user space or streambox, then a user application like an email client could provide access to it. Then, if the user clicks on a link of a stream URI (i.e. "stream:myeventflow"), the streambox application would open and subscribe to the given stream.

Currently, the Metadata Payload Format as well as the Payload Format are both provided by the queue or log application protocol. In the case of Apache Kafka, both formats are implemented within the Apache Kafka Protocol. This introduces a barrier for interoperability among different technologies, meaning that flows of event data cannot be seamlessly connected, without relying on custom development or proprietary software licensing.

We can conclude that there is an actual need for an open specification of an Event Subscription Service for event streams, which implements what Urquhart calls Metadata Payload Format. This specification could be materialized in a network protocol that introduces an abstraction for the event queue or log technologies implemented by different organizations.

3.4. 3.4. Necessity 4: An Open Cross-sector Payload Format

Currently, the different implementations of Event Streaming combine both the Payload Format with the Metadata Format. This means that the same protocol utilized for payload transport is used for subscription management.

When a producer intends to publish events to a queue or, using Apache Kafka terminology, when a producer intends to write records to a topic, first it needs to initiate a connection to at least one of the Apache Kafka Brokers. In that initial exchange of TCP packages, the producer is authenticated, authorized, and informed with topic details. This set of transactions would belong to a protocol that implements a Metadata Payload Format. Afterwards, when the Producer starts writing the events to the topic, it encapsulates the event payload in a Kafka Protocol message. This latter behavior makes use of a Payload Format. Thus, we can observe how both theoretical formats are coupled in a single protocol. Similar behavior of a coupled Metadata and Payload Format in one single protocol happens also in AMQP, MQTT and RabbitMQ.

As for the consumer, the behavior is the same with the difference that the initial intention is to subscribe to a queue or, in Apache Kafka terminology, to consume records of a topic. Then, a set of TCP packages encapsulating the Apache Kafka protocol authenticates, authorizes, and informs the Consumer with topic details for consumption. Afterwards, the consumer can start polling for new records in the different partitions of the topic. It is worth mentioning that the consumer needs to implement more queue management logic than the Producer, especially when multiple replicas of a consumer type are deployed.

If we focus on the Payload Format, there is the need for an implementation-agnostic payload format suitable for Event Streaming. In this sense, CloudEvents project of the CNCF proposes a specification and a set of libraries for this purpose. The goal is to use CloudEvents specification as a Payload Format regardless of the Payload Protocol being used. For instance, we could transmit events in the CloudEvents format using the Kafka or AMQP Protocol.

The general structure of the CloudEvents Payload Format includes a standardized methodology to include event data in an event message. For instance, instead of defining a customized JSON structure for sending the events of temperature changes measured by a device, a CloudEvent object could be used. Temperature could be included as an attribute in the CloudEvent object.

We can then conclude that while there is no current protocol candidate that implements the Metadata Format, CloudEvents is a good candidate for the Payload Format needed in an Event Streaming Open Network. In this way, the different CloudEvents libraries made available in several programming could be leveraged.

4. 4. Event Streaming Open Network Architecture

In this section, we will describe the overall architectural proposal for an Event Streaming Open Network. This description will include the different actors in play, the software components required, as well as the network protocols that should be specificized.

4.1. 4.1. Architecture overview

In Figure 1 we illustrate a high-level overview of an architecture proposal for the Open Network.

High-level overview of the Event Streaming Open Network image/svg+xml
  • Print
  • 2022-01-26T21:43:36+01:00 2022-01-26T21:43:36+01:00 2022-01-26T21:43:36+01:00 Adobe Illustrator 26.0 (Windows)
  • 256 220 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA3AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FUr8131zp/lfWL+1bhdWljczwOQGpJHCzqaGoNCO+KsE8v8AnHzJY6baazrjajcafcGziu5L+Gxt LeFbxlT6zE9sGd1R2UEPxHFuXbFLWnfnNqGoapbwW/l2f6m72gndRczSCK/f9xMpitnhUCErKwkk U70WvHdQhU/OLzFdzaLDFo1vZvrTaZcWpe6MwNpfTNFIHKxLxcMlBsdjXqKYpTf8wtd84afqssmm XMsGi2dgJ7mWygtbyWK4LyHldwyuswg9KOoaIV2bfFUHb/mxq6G6kfT7a+sY5NSliu4Z3hP1TTIo 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 dirsVf/Z
  • xmp.iid:e6049e27-7278-1446-ae6d-0a8738b6f580 xmp.did:e6049e27-7278-1446-ae6d-0a8738b6f580 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf xmp.iid:03062c11-0ac9-8a4c-9fc4-d6899966c7f3 xmp.did:03062c11-0ac9-8a4c-9fc4-d6899966c7f3 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:42b7cefd-abcd-c742-9dce-417049945abf 2022-01-26T21:39:08+01:00 Adobe Illustrator 26.0 (Windows) /
  • saved xmp.iid:e6049e27-7278-1446-ae6d-0a8738b6f580 2022-01-26T21:43:36+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False True 1 930.024616 789.491879 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999400
  • C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998800
  • C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999700
  • C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999100
  • C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998800
  • Brights 1
  • C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000
  • C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000000 95.000000 0.000000
  • C=85 M=10 Y=100 K=0 CMYK PROCESS 85.000000 10.000000 100.000000 0.000000
  • C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000000 0.000000 0.000000
  • C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000000 90.000000 0.003100 0.003100
  • Adobe PDF library 15.00
    Figure 1: Figure 1

    We can identify different Network Participant (NP) in Figure 1 represented by different colors. The different NPs act as equals when consuming or producing events as part of the Flows they own. All of NPs implement the Event Streaming Open Network Protocol, which Is described in the next chapter.

    In the diagram, an initial flow starts on the orange NP to which a user in the blue NP is subscribed. After processing the events received in the first flow, the results are published to a new flow in NP blue, to which the orange NP is subscribed as well. Now, the green participant is subscribed to the same flow, enabling downstream activities across the rest of the network participants.

    It is possible to observe how the high-level architecture allows sharing the streaming of events across different network participants and their users. Also, there is also the need for security, in order to allow or deny the access to write to and read from flows.

    Regarding security, the architecture considers the integration with an Identity & Access Management service, which could implement popular protocols such as OAuth, SAML or SASL. However, the network should also enable anonymous access in the same way FTP does. This means that a given NP could publicly publish flow and allow any party to subscribe to it.

    For example, nowadays the Network Time Protocol (NTP) is used to synchronize the day and time on servers. There are many NTP servers available that allow anonymous access, meaning that the service is openly available. The same must be considered for the Event Streaming Open Network.

    Additionally, the NP must be able to expand the capacity to support any number of flows, as well as extending the network with new services. Not only NP must be able to include any given set of data within events but also, they must be able to build applications and services on top of the network by employing the architecture primitives.

    Event Streaming Open Network Architecture components image/svg+xml
  • Print
  • 2022-01-26T22:19:31+01:00 2022-01-26T22:19:31+01:00 2022-01-26T22:19:31+01:00 Adobe Illustrator 26.0 (Windows)
  • 256 172 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgArAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYqhNX1bT9I0y51PUZfQsbRDLcS8Wfii9TxQMx+gYqgV86eUyqM2r2sSyMqQtNKsIkZ4YrhfT9Q rz/dXEbfDX7XjirVv528n3FnHexa3Ym2ljEyyNcRp+7J48iGYFfi+E16Hbriq0+efJ3O3WPWbKYX Ido2iuIpFEccckrSsysQsYWB/jO1RTFW7jzp5bt9UTTJLpvrT+gAywzvCPrZIt+VwiNCvqFTx5Pv irV5548nWkUEk+tWQFzx+rBZ43aXnIYlKKpJYeopWo2FDXocVU28/wDkxDEH1mzUyFQ/K4iHpF4z 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 T/07Yq4f4AqKfoqtRSn1ate2Kv8A/9k=
  • xmp.iid:4e98b8f1-b70a-334e-8a02-9b2a94cc17bd xmp.did:4e98b8f1-b70a-334e-8a02-9b2a94cc17bd uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:4e98b8f1-b70a-334e-8a02-9b2a94cc17bd 2022-01-26T22:19:31+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False True 1 1603.000000 1058.576809 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999400
  • C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998800
  • C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999700
  • C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999100
  • C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998800
  • Brights 1
  • C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000
  • C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000000 95.000000 0.000000
  • C=85 M=10 Y=100 K=0 CMYK PROCESS 85.000000 10.000000 100.000000 0.000000
  • C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000000 0.000000 0.000000
  • C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000000 90.000000 0.003100 0.003100
  • Adobe PDF library 15.00
    Figure 2: Figure 2

    Now, we provide a brief description of all the components that appear in the diagram of Figure 2. In the next sections further details of the components are provided.

    • Flow Events Broker (FEB): a high-available and fault-tolerant service that provide queues to be consumed by network services, by users, and their applications. An example of an Event Queue Broker can be Apache Kafka, AWS SQS or Google Cloud PubSub. The payload format implemented by these tools are what in 3.1.4 we called Event Streaming Payload Format.
    • Flow Name Service (FNS): a DNS-based registry that acts as an authoritative server for a set of domain names, which are used to represent flow addresses in a flow namespace. These domains contain all the necessary information to resolve flow names into flow network locations. This component refers to what in 3.1.1 we named Event Streaming Registry.
    • Flow Namespace User Agent (FNUA): an application similar to User Mail Agents like Microsoft Outlook or Gmail. This application provides access to flow namespaces to users of the network. The definition of this component implies the specification of a dedicated protocol. We will refer to this protocol as FNAP (Flow Namespace Accessing Protocol).
    • Flow Namespace Accessing Agent (FNAA): the server-side of the Flow Namespace User Agent. This component is the one that must provide convenient integration methods for GUI. This component refers to what in 3.1.2 we named Event User Space Service. This component must implement the same protocol selected for the Flow Namespace User Agent: FNAP (Flow Namespace Accessing Protocol).
    • Flow Processor (FP): a flow processing instance used to set up subscriptions that connect local or remote flows on demand. This component implements the processing part of what in 3.1.3 we called Event Subscription Service. This component will be created and managed by a FNAA instance, and the communication is held through an Inter-process Communications (IPC) interface. Also, this service must implement an Event Payload Format, for which we will mainly consider CNCF's CloudEvents and Protobuf.
    • Flow Namespace Accessing Protocol (FNAP): the protocol implemented in the Flow Namespace Accessing Agent as well as in the Flow Namespace User Agent. The former will act both as a server and a client while the latter only as a client. This protocol is described in the next chapter.

    4.1.1. 4.1.1. Flow Events Broker (FEB)

    The FEB implementation that we will mostly consider is Apache Kafka. This open-source project is quickly becoming a commodity platform, and major cloud providers are building utilities for it. However, as a design decision, it should be possible to use the same protocols to support other applications, such as RabbitMQ, Apache Pulsar or the cloud-based options like AWS SQS or Azure Events Hub.

    Apache Kafka is the ecosystem leader in the Event Streaming space, considering mainly adoption. There is a growing set of tools and vendors supporting its installation, operation, and consumption. This fact makes Apache Kafka much more appealing to enterprise developers. However, the broker should provide a common set of functionalities which can be seen in the diagram of Figure 3.

    Event Streaming Open Network Architecture components image/svg+xml
  • Print
  • 2022-01-26T22:08:03+01:00 2022-01-26T22:08:03+01:00 2022-01-26T22:08:03+01:00 Adobe Illustrator 26.0 (Windows)
  • 256 100 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAZAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7z5T8p+WL3yxpN/f6VaX t9e2kFzd3dzBHNLJLNGsjszurMas2Kpt/gfyX/1YNN/6RIP+aMVd/gfyX/1YNN/6RIP+aMVd/gfy X/1YNN/6RIP+aMVd/gfyX/1YNN/6RIP+aMVd/gfyX/1YNN/6RIP+aMVd/gfyX/1YNN/6RIP+aMVQ 2hadZaZ5o1ax0+FLSxNnY3ItIQEiWWSS6jd0jFFUssKVoO2KsjxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2Ksc13TrHU/NGk2OoQpd2Is765NpMOcLSxyWsaO8Z+FiqzPSo2riqJ/wP5L/6sGm/ 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 s8OaU+ufpL0OXIcOfr/uqcqfa2xV/9k=
  • xmp.iid:d5acba02-7ea7-f741-9239-b02c96e6e546 xmp.did:d5acba02-7ea7-f741-9239-b02c96e6e546 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:d5acba02-7ea7-f741-9239-b02c96e6e546 2022-01-26T22:08:03+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False False 1 695.000000 265.739990 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999400
  • C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998800
  • C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999700
  • C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999100
  • C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998800
  • Brights 1
  • C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000
  • C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000000 95.000000 0.000000
  • C=85 M=10 Y=100 K=0 CMYK PROCESS 85.000000 10.000000 100.000000 0.000000
  • C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000000 0.000000 0.000000
  • C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000000 90.000000 0.003100 0.003100
  • Adobe PDF library 15.00
    Figure 3: Figure 3

    The selection of the Events Broker will impact on the implementation of the Flow Namespace Accessing Agent. This last component will be responsible for knowing how to set up and manage flows on top of different Events Brokers.

    4.1.2. 4.1.2. Flow Name Service (FNS)

    FNS is a core component for the overall proposed architecture. This component provides all needed functionalities for obtaining Flow connection details based on a Flow URI (Uniform Resource Identifier). Thus, it is required to define a URI format for Flow resources and to specify mechanisms for resource location resolution.

    In this section, we will focus on describing both the URI for Flow as well as the DNS mechanism for obtaining Flow network location details.

    4.1.2.1. 4.1.2.1. Leveraging DNS infrastructure

    As mentioned previously, this component must maximize its leverage on the existing Internet DNS infrastructure. The reason for this requirement is to avoid defining new protocols and services that prevent broad adoption. Currently, DNS is the de facto name resolution protocol for the Internet, and there exist libraries for its usage on every programming language.

    Whereas DNS is mainly used to resolve FQDN (Fully Qualified Domain Names) into IP addresses, there are many other functionalities provided by the global DNS infrastructure. Theoretically, DNS is an open network of a distributed database. Individuals and organizations that want to participate in the network need to register a domain name and set up Authoritative DNS servers for domains.

    It is not in the scope of this work to detail the different available usages of DNS functionalities, but we can mention that it provides special Resource Records (i.e., types of information for a FQDN) that are solely used by special protocols. For instance, the MX Resource Records are used by SMTP servers to exchange email messages.

    For the Flow Open Network, it will be required to define a URI format for flows as well as the mechanism to resolve an URI into all the needed information to connect to a flow. In the case of email, a URI is the email address while the connection details will be the SMTP server responsible for receiving emails for that account. For instance, an email URI could be user@domain.com while its connection details could be smtp://mail.domain.com. The way in which the connection details are obtained is by resolving the MX DNS Resource Records of domain.com, which in this example is mail.domain.com.

    4.1.2.2. 4.1.2.2. Flow URI

    As we mentioned previously, the first needed element is a URI definition for flow resources. These resources identification must capture the following details: * Domain, a registered domain in which create flow resources references. For example, airport.com. * Flow Namespace, a subdomain which is solely used by users to host flow names. This subdomain must be delegated to the Flow Name Server component and desirable should not be used for any other purpose other than flow. * Flow Name, a name for each flow that must be unique within its domain. The combination of flow name and flow domain results in an FQDN. For instance, we could have a flow named arrivals of the domain flow.airport.com. Thus, the FQDN of the flow would be arrivals.flow.airport.com. Also, the name can contain dots so that the following FQDN could be also used: airline.arrivals.flow.airport.com.

    Thus, the general syntax of a flow URI would be:

    flow://flow_name.flow_namespace.domain

    This URI has the advantage that is similar to "mailto" URI and could be implemented in HTML to refer to flow resources. Some examples:

    • flow://entrances.building.company.com
    • flow://exits.building.company.com
    • flow://temperature.house.mydomain.com
    • flow://pressure.room1.office.mydomain.com

    The flow URI must unequivocally identify a flow resource and provide, by means of DNS resolution mechanisms, all the information required to use the flow. Among these parameters, at least the following should be resolvable:

    • Event Queue Broker protocol utilized by the flow. For instance, if Apache Kafka is used, the protocol would be "kafka"; In case RabbitMQ is used by the flow, "amqp". Also, it must be informed if the protocol is protected by TLS.
    • Event Queue Broker FQDN or list of FQDNs that resolve to the IP address of one or a set of the Event Queue Brokers. For instance, kafka-1.mycompany.com, kafka-2.mycompany.com.
    • Event Queue Broker Port used by the Event Queue Brokers. For instance, in the case of Kafka: 9092, 9093.
    • Event Queue Broker Transport Security Layer can be implemented. Thus, it is needed to know if the connection uses TLS before establishing it.
    • Queue Name hosted in the Event Queue Broker, which must be equal to that of the corresponding flow name.

    The general syntax of the Flow URI would be as follows:

    flow://flowName.flowCategory.myNameSpace.domain.tld

    • Flow Namespace FQDN: myNameSpace.domain.tld
    • Flow Name: flowName.flowCategory
    • Flow FQDN: flowName.flowCategory.myNameSpace.domain.tld

    The following are examples of this URI Syntax:

    flow://notifications.calendar.people.syndeno.com

    • Flow Namespace FQDN: people.syndeno.com
    • Flow Name: notifications.calendar
    • Flow FQDN: notifications.calendar.people.syndeno.com

    flow://created.invoice.finance.syndeno.com:

    • Flow Namespace FQDN: finance.syndeno.com
    • Flow Name: created.invoice
    • Flow FQDN: created.invoice.finance.syndeno.com
    4.1.2.3. 4.1.2.2. Flow name resolution

    In Figure 4, we can see how a Flow FQDN can be resolved by means of the Flow Name Service.

    High-level overview of the interactions with the Flow Name Service component. image/svg+xml
  • Print
  • 2022-01-26T22:09:54+01:00 2022-01-26T22:09:54+01:00 2022-01-26T22:09:54+01:00 Adobe Illustrator 26.0 (Windows)
  • 256 48 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAMAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7z5T8p+WL3yxpN/f6VaX t9e2kFzd3dzBHNLJLNGsjszurMas2Kpt/gfyX/1YNN/6RIP+aMVSPXLb8udHv4LCXyxDdXlxE86Q 2WlLcsIo2VGZhHG1BycDFVGyn/KG84ehpemkPLdwMWsYlCPYrznElY/h4oQwr1BBxVYL38nv0Hpu tnS9OXTtVuVs7SVrCJT6zMyFXUxhk4mNuRbpTFWS/wCB/Jf/AFYNN/6RIP8AmjFXf4H8l/8AVg03 /pEg/wCaMVSe3uNN8teaNRsbLT7hbGazs7lbXT7Z5YY5WkuY5H9OIFYy6xJ2FaYqmf8AjG1/6tmq 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 Ub4q/wD/2Q==
  • xmp.iid:20e702ad-6554-b741-8074-f79661636a20 xmp.did:20e702ad-6554-b741-8074-f79661636a20 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:20e702ad-6554-b741-8074-f79661636a20 2022-01-26T22:09:54+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False False 1 695.000000 123.000000 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999400
  • C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998800
  • C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999700
  • C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999100
  • C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998800
  • Brights 1
  • C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000
  • C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000000 95.000000 0.000000
  • C=85 M=10 Y=100 K=0 CMYK PROCESS 85.000000 10.000000 100.000000 0.000000
  • C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000000 0.000000 0.000000
  • C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000000 90.000000 0.003100 0.003100
  • Adobe PDF library 15.00
    Figure 4: Figure 4

    In order to illustrate the Flow Name resolution procedure by the FNAA (Flow Namespace Accessing Agent), we can consider the following flow URI:

    flow://notifications.calendar.people.syndeno.com

    First, the FNAA will perform a query to the DNS resolvers. These will perform a recursive DNS query to obtain the authoritative name servers for the Flow Namespace: people.syndeno.com. Thus, the authoritative name servers for syndeno.com will reply with one or more NS Resource Record containing the FQDN for the authoritative name servers of people.syndeno.com.

    Secondly, once these name servers are obtained, the FNUA will perform a PTR query on the Flow FQDN adding a service discovery prefix. The response of the PTR query will return another FQDN compliant with SRV DNS Resource Records (RFC-2782) and DNS Service Discovery (RFC-6763).

    In this case, the query for PTR records would be as follows:

    ;; QUESTION SECTION: ;notifications.calendar.people.syndeno.com. IN PTR

    The response would be in the following form:

    ;; ANSWER SECTION: notifications.calendar.people.syndeno.com. 21600 IN PTR _flow._tcp.notifications.calendar.people.syndeno.com.

    Using the FQDN returned by this query, an additional query asking for SRV records is made:

    ;; QUESTION SECTION: ;_flow._tcp.notifications.calendar.people.syndeno.com. IN SRV

    ;; ANSWER SECTION: _flow._tcp.notifications.calendar.people.syndeno.com. 875 IN SRV 30 30 65432 fnaa.syndeno.com. _flow._tcp.notifications.calendar.people.syndeno.com. 875 IN TXT "tls"

    _queue._flow._tcp.notifications.calendar.people.syndeno.com. 875 IN SRV 30 30 9092 kafka.syndeno.com. _queue._flow._tcp.notifications.calendar.people.syndeno.com. 875 IN TXT "broker-type=kafka tls"

    First, the response informs the network location of the FNAA server, in this case a connection should be opened to TCP port 65432 of the IP resulting of resolving fnaa.syndeno.com:

    ;; QUESTION SECTION: ;fnaa.syndeno.com. IN A

    ;; ANSWER SECTION: fnaa.syndeno.com. 21600 IN A 208.68.163.200

    Secondly, this response offers other relevant information, like the TCP port where the queue service is located (9092). It also includes a TXT Resource Record that establishes the protocol of the Event Queue Broker, defined in the variable "broker-type=kafka".

    Now, using the returned FQDN for the queue, kafka.syndeno.com, the resolver can perform an additional query:

    ;; QUESTION SECTION: ;kafka.syndeno.com. IN A

    ;; ANSWER SECTION: kafka.syndeno.com. 21600 IN A 208.68.163.218

    4.1.3. 4.1.3. Flow Namespace Accessing Agent (FNAA)

    The Flow Namespace Accessing Agent is the core component of a Network Participant. This server application implements the Flow Namespace Accessing Protocol that allows client connections.

    In the diagram of Figure 5 we can see the different methods that the FNAA must support.

    High-level overview of the interactions among FNAA servers. image/svg+xml
  • Print
  • 2022-01-26T22:13:33+01:00 2022-01-26T22:13:33+01:00 2022-01-26T22:13:33+01:00 Adobe Illustrator 26.0 (Windows)
  • 256 192 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAwAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYqkfmHzv 5V8uzQQa1qCWctyrPAjq7FlQgMRwVulcVRuj69pGs2n1vTblbi39WSD1AGX95CxV1o4U7FTiqPxV Jk85eV3na3TUYmnW+/RTRAnkL3izCEimxIRt+m3XFU4V1cclIZfEGo22xVxdAVBYAseKivUgEkD7 jirSyRsGKsCEJDEEbEdQcVXcl5FajkACR3oen6sVcWUEAkAsaAeJpX+GKoC81/RrPVbHSbq7ji1H UvUNjbMfjl9FeT8fkPHFUfirRdQSCRVRUivQHv8Ahiqm91bpGJGkXgVLqQa8lA5EqB9rbwxVZp+o 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 FX//2Q==
  • xmp.iid:b38244f6-5274-b54b-94a6-1ccabd01ba5e xmp.did:b38244f6-5274-b54b-94a6-1ccabd01ba5e uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:b38244f6-5274-b54b-94a6-1ccabd01ba5e 2022-01-26T22:13:33+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False True 1 944.448246 709.607142 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999400
  • C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998800
  • C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999700
  • C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999100
  • C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998800
  • Brights 1
  • C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000
  • C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000000 95.000000 0.000000
  • C=85 M=10 Y=100 K=0 CMYK PROCESS 85.000000 10.000000 100.000000 0.000000
  • C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000000 0.000000 0.000000
  • C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000000 90.000000 0.003100 0.003100
  • Adobe PDF library 15.00
    Figure 5: Figure 5

    The clients connecting to a FNAA server can be remote FNAA servers as well as FNUA. The rationale is that users of a NP connect to the FNAA by means of a FNUA. On the other hand, when a user triggers a new subscription creation, the FNAA of his NP must connect as client to a remote FNAA server.

    4.1.4. 4.1.4. Flow Processor (FP)

    Whenever a new subscription creation is triggered and all remote flow connection details are obtained, the FNAA needs to set up a Processor for it. The communications of the FNAA to and from the FP is by means of an IPC interface. This means that there can be different implementations of Processors, one of which will be the Subscription Processor.

    In the diagram of Figure 6, we can see the initial interface methods that should be implemented in a Flow Processor.

    High-level overview of the IPC interface for the FNAA server and Flow Processors communications. image/svg+xml
  • Print
  • 2022-01-26T22:14:30+01:00 2022-01-26T22:14:30+01:00 2022-01-26T22:14:30+01:00 Adobe Illustrator 26.0 (Windows)
  • 256 96 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAYAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYqgNe17SdA0m41fVp/q2n2oUzz8Hk4hmCD4Yw7H4mA2GKsai/ODyNPJZx2tzcTtf Xttp0P8AolzCBNdlhFUzpEOPwGpFaYqy431kDIDcRAw09Yc1+CpoOW+304q215aKWDTxgowRgWUU Zvsqd+p7DFVXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYqxH82tB1bX/y81jSNJg+s6hdJEIIOaR8is8bn4pCij4VJ3OKsU1v8ufOR07y1FFqt1rM1prm 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 qFtLZ2lpbAySPLcIY0AA7VapPhir/9k=
  • xmp.iid:18ba93cd-1c71-8d44-80d2-4cffd2978c0b xmp.did:18ba93cd-1c71-8d44-80d2-4cffd2978c0b uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:18ba93cd-1c71-8d44-80d2-4cffd2978c0b 2022-01-26T22:14:30+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False True 1 715.000000 267.466805 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999400
  • C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998800
  • C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999700
  • C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999100
  • C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998800
  • Brights 1
  • C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000
  • C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000000 95.000000 0.000000
  • C=85 M=10 Y=100 K=0 CMYK PROCESS 85.000000 10.000000 100.000000 0.000000
  • C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000000 0.000000 0.000000
  • C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000000 90.000000 0.003100 0.003100
  • Adobe PDF library 15.00
    Figure 6: Figure 6

    Depending on the use of the processor, different data structures should be added to the different methods. In the case of a Subscription Processor, the minimum information will be the remote and local Flow connection details. Moreover, the interface also should include methods to update the Processor configuration and to destroy it, once a subscription is revoked. Finally, due to the nature of the stream communication, there could also be methods available to pause and to resume a Processor.

    There can be different types of Processors, which we can see in Figure 7.

    High-level overview of the IPC interface for the FNAA server and Flow Processors communications. image/svg+xml
  • Print
  • 2022-01-26T22:15:44+01:00 2022-01-26T22:15:44+01:00 2022-01-26T22:15:44+01:00 Adobe Illustrator 26.0 (Windows)
  • 228 256 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADkAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYqlfmjzH ZeW9AvdcvklktLFBJMkAVpCCwX4QzIv7Xc4qwu8/Ou3t9Cu9YPlbXILS2gS5We9t47eCRXkRFCyi SXdvUqNt8VZZF518sejYG91OzsLvUIYp4LK4uIo5iJlDKAjMrN1psMVRj+YfL8alpNTtEVbg2TM0 8YAuh1gNW/vR/J1xVufXdLjs9Quo50uV0tZGvY4HSR0aJS7RsAfheg6NTFWEaN+enlfUpdN9TTNW 02z1eYW+n6le2ypaSysxUIJY5JRXkKf5nFWXp5w8ouk7prdgyWyercsLqEiOMtw5ueXwrz+Gp77Y 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 FsP+qGKpbp/5YxW9sNPutavrzRvU9VtKb0o4GYtzKt6aBvT5b+mpC4qzYAAUHTFXYqxDVtVttC88 NqOpLLFp97psVtFdJFJKgmgnldo29NXIJWUEVHY4qif+VkeTv+W2T/pFuv8Aqlirv+VkeTv+W2T/ AKRbr/qlirv+VkeTv+W2T/pFuv8Aqlirv+VkeTv+W2T/AKRbr/qlirv+VkeTv+W2T/pFuv8Aqlir v+VkeTv+W2T/AKRbr/qlirv+VkeTv+W2T/pFuv8Aqlirv+VkeTv+W2T/AKRbr/qlirv+VkeTv+W2 T/pFuv8Aqlirv+VkeTv+W2T/AKRbr/qlirv+VkeTv+W2T/pFuv8Aqlirv+VkeTv+W2T/AKRbr/ql iqD1rz/5YutHvrW0nmubu4t5Yre3jtbnk8joVRRWMCpJxVkXl20ns/L+mWlwvCe3tIIpVqDR0jVW FR7jFUwxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpBrPmS+ttXj0jStMbU74wfW5wZkt444S5jQ l2DVZmU0AHbFVD9OeeP+pXj/AO4hF/1TxV36c88f9SvH/wBxCL/qnirv0554/wCpXj/7iEX/AFTx V36c88f9SvH/ANxCL/qnirv0554/6leP/uIRf9U8Vd+nPPH/AFK8f/cQi/6p4q79OeeP+pXj/wC4 hF/1TxV36c88f9SvH/3EIv8Aqnirv0554/6leP8A7iEX/VPFXfpzzx/1K8f/AHEIv+qeKu/Tnnj/ AKleP/uIRf8AVPFXfpzzx/1K8f8A3EIv+qeKqdz5n832lvLdXXlgC2gUyTmK+idxGgqxVCi8iAOl d8VZJZXcF5ZwXcB5QXMaSxMdqo6hlNPkcVVeS8uNRypWnemKpXrvmTTtG9BLgSz3d2WW0sbZDLPK UFW4IOyjckkAYql3+Npf+pc1n/pGj/6q4q7/ABtL/wBS5rP/AEjR/wDVXFXf42l/6lzWf+kaP/qr iqEuPzLtLe8hsZNC1j67cAtDbLbRtIyLsz8RLXiO5xVMf8deXf0P+lPVk9P1vqn1X0n+tfWq0+r+ hTn6lf2ae/TfFWQYq7FXYq7FXYq7FXYqxuD/AMmNff8AbHtP+oq5xVOrnVtLtbiO2ubyCC5lAMUM kiI7Amg4qxBO+KqyXNvJNLBHKjzQ8fWiVgWTmKryUbio6VxVUxVQtNQsL1S1ncxXKgIxaF1kAEiC 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
  • xmp.iid:29b932d6-7443-5c4b-8594-8d17c83efd78 xmp.did:29b932d6-7443-5c4b-8594-8d17c83efd78 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf
  • saved xmp.iid:29b932d6-7443-5c4b-8594-8d17c83efd78 2022-01-26T22:15:44+01:00 Adobe Illustrator 26.0 (Windows) /
  • Print Adobe Illustrator False True 1 545.660156 613.169922 Points
  • Cyan
  • Magenta
  • Yellow
  • Black
  • Default Swatch Group 0
  • White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000
  • Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000
  • CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000
  • CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000
  • CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000
  • CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000
  • CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000
  • C=15 M=100 Y=90 K=10 CMYK PROCESS 15.000000 100.000000 90.000000 10.000000
  • C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000000 85.000000 0.000000
  • C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000000 95.000000 0.000000
  • C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000
  • C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000000 85.000000 0.000000
  • C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000000 0.000000 90.000000 0.000000
  • C=20 M=0 Y=100 K=0 CMYK PROCESS 20.000000 0.000000 100.000000 0.000000
  • C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000
  • C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000
  • C=85 M=10 Y=100 K=10 CMYK PROCESS 85.000000 10.000000 100.000000 10.000000
  • C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000000 30.000000 95.000000 30.000000
  • C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000
  • C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000000 10.000000 45.000000 0.000000
  • C=70 M=15 Y=0 K=0 CMYK PROCESS 70.000000 15.000000 0.000000 0.000000
  • C=85 M=50 Y=0 K=0 CMYK PROCESS 85.000000 50.000000 0.000000 0.000000
  • C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 95.000000 5.000000 0.000000
  • C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000
  • C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000
  • C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000
  • C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000000 100.000000 35.000000 10.000000
  • C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000000 100.000000 50.000000 0.000000
  • C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 95.000000 20.000000 0.000000
  • C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 40.000000 0.000000
  • C=40 M=45 Y=50 K=5 CMYK PROCESS 40.000000 45.000000 50.000000 5.000000
  • C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000000 25.000000
  • C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000000 60.000000 65.000000 40.000000
  • C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 40.000000 65.000000 0.000000
  • C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000000 50.000000 75.000000 10.000000
  • C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000000 60.000000 80.000000 25.000000
  • C=40 M=65 Y=90 K=35 CMYK PROCESS 40.000000 65.000000 90.000000 35.000000
  • C=40 M=70 Y=100 K=50 CMYK PROCESS 40.000000 70.000000 100.000000 50.000000
  • C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 70.000000 80.000000 70.000000
  • Grays 1
  • C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000
  • C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999400
  • C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998800
  • C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999700
  • C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999100
  • C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000
  • C=0 M=0 Y=0 K=40 CMYK