Internet-Draft ESON January 2022
Spinella Expires 31 July 2022 [Page]
Workgroup:
TBD
Internet-Draft:
draft-spinella-event-streaming-open-network-02
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. 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. 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 [RFC3261]. 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. 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. 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. 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. 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. 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. 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. 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. 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 [RFC5321], 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. 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. 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. 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. 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. 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 ZS3otE5LyJNVRy67HbfFUOfzn1z9Glv8PMNTlaI2UDC+SOaOSCS4fgHtEmdoVio5VCnxBuYGKomH 82tfvpbH9F+XoZre++pQpJLfcGFxqFgL5FKiE/BGKqxrU9h2xQgNM/OXWL+5eKy0gzXl3As0Frc3 cccELJYfW5FQpbeoQxBHxM1T3Veimk60H81bvWJNOuItISPSdRvLbTkma6/fpPPYC/ZjEIuLIqsE Hx1PWlMULtZ1jzTdan5rbTtah0u38sRx+lam3jm9UtaLdmS5aT4ljbnwHpkfZJxVL0/OW+j0ca3d aLGulxM1vO0dyTObgaYNSHGJogoTjVDV698Ut2X5seaLye302Hyx/uWvfV+qGeS5tLd+FsbkBTdW sLsRx4N8PGtDyodlUy8yecvMTeVvKeueX7YG41iaC5n01uLtJbHTp76W3Ryv2yIeKsAPi9sUMch/ O2/Y3P6MsG1tWku7y3KJOCLGAxiOILa29yRIxkPxS8VX9pt8UqrfnbqenwalJqOjCVlubuPSYUlM UkotJ4Y5IHV4yVkjjn9QnvQigxWkev5wXl09/eafpMM2iaU8RubprorJNb3F5LZwy26elxqTAz8W YbUANTiqHH5s6udY0RnsEjg12KaGw0/119MyreRQLNcXJiBiHH1KKoatVH2jsq9VxQ7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FVO6tbe7tprW5jWW3nRopomFVZHHFlI8CDiqRWv5e+SbSG5gt9GtY4b yI29zGE+GSIkNwYHtVQcVRE3kzypNqNnqUmlWzXtgI1tJuABjEP91QDY+n+xUfD2piqlc+Q/J1zb RW0+kWzwQRRwQJwpwihf1I0UihAVzUYqq635M8ra7cx3WraZDeXESekskgNTHXl6bUI5pU14tUYq 638m+Vba+uL+DSraO6uwy3MgjHxrIoRwV+zRlUAim+KoWL8uPIsVjJYpolqLWWVLiSMpWskY4oam poqkqFrShIpQnFUdZ+U/LNkwaz0u2tisy3K+lGqATKrIrgKAAQrsB88VU7byb5VtZ0nt9Ktopoxx SRUAIX0vRp/yK+H5YqlEX5X6BD5ntdbtyYI7MxNBYRxQKivb25tYv3oQTcFjp8HOlQO22Kprq/kn ynrN/Hf6ppVveXcYCiWVKllU8lVx0dQd6NUYqh7T8v8AyxDq17q01nFd315NLN6s6K3BZoUgeMCl CvBCNx0Zh0JxVX0jyP5S0eSKXTNKt7aaF2kilVayBnT02PM1b7Hw9emKpjFpGmQwWEEVtGkOl8f0 egG0PGJoF4eFInZPkcVSm8/L3yTexpFc6LayRpNJcqhjAHqzkNKxApXmVHIHY0GKq0fkjyjHeSXq 6TbC6lma4eXgCfVkjMTuK7AshoadcVWP5D8mu9i7aPbE6Yix2I4CkaIxdF49GCueShq0O43xVES+ UfLM1r9Vl0y3e2ETW4iaMFRE8gmZKeHqIH+YriqbAUFPDFXYq7FXYq7FXYq7FXYq7FXYq7FXYqtM kYcIWAdvsqSKn5DDRRYXYErWkjVgrMFZvsgkAn5YQCgkBdgS7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUB5gZl0HUmUkMLWcgjYgiNsVR+KuxVAzRu1yrem4DE My/BUmPcUPLbrl0Ts0SFy/sRqkkAkFT4GlfwrlLeEFdRtJMh4OA9EYfAahauKHltl0DQaJiz/YjV JIqVKnwNK/gTlJbgwew1vzZqFnFf/Xbe2S6UTRW6W5cJG45IpdnBZuJHI069MyI4LF240tTRqlf6 75r/AOrpD/0ij/qpkvy472P5o9zvrvmv/q6Q/wDSKP8Aqpj+XHev5o9zvrvmv/q6Q/8ASKP+qmP5 cd6/mj3IbU9Y82WWm3d4NRhkNtDJME+qgcvTUtSvPatMBwULtlHUkmqYxqH5jahpWoXNhqOr3pNh xW8uo47HjUwLOzJCLd5ONHoMiYRBoshkkRYpE6X+ZFpqd9FYWvmPUPrsrFBbva2quGWhYMDa7ca7 /I+GEQge9icmQC9k68r+atQtvRuPMWrI9he2LXqzXCwwCApJGFQNGsQbmlwo335Lt1plc4UAe9tx 5OIkdzJdN86eVNStRdWmq27QsSoLuIjVTQ/DJwb8MrbUV/iLy/8A9XO0/wCR8f8AzVirCfPfnq5s Z3l0vUQLGyhgac2ht5GkmvLgwIrPMsqII+PI7V+LMLVZ5QlGMauV/Y5WDDGQJl0r7WLR/m6Vot7r l9ayEgH/AEe0kReTMq1kS2K/FwY/IVzGOfU9BE/j3t4w4evEmdp5w1/V/qjaRr9x6Fwk0hmkt7X/ AHUEWgUwL+3KK/IjK5doZYA8YFivtv8AUzGjxyrhJ6ptp3mbzdd2FvdG/gRpo0dk+rA8WYAla8x0 O2DJ2tKMiOHkmHZ8ZRBtEfpzzb/1cYP+kUf9VMh/LEv5oZfybHvd+nPNv/Vxg/6RR/1Ux/liX80L /Jse936c82/9XGD/AKRR/wBVMf5Yl/NC/wAmx71G88y+cLW0muUvbaZoEaT0pLYqrcRUqSslRUDr k8faxlIAx5sJ9ngRJBZ9FdK9rFcFWAlVX4qC5HIV/ZBzcykAL/a6wRtLtLRYJpK8tqRnjHKOZ+1z eoNG+LNdpIiEj8vplv1s+e7m6g8QHz5jbyCau6ovIgkD+UFj9wBObGUqFuEBaU2CLDeyueW1VqsU vJ+Z5AvUdV6ZrdPERyE7/wCllve+/uc3MeKAH6RtW2ycZtHBdirsVS/zF/yj+p/8wk//ACbbFUwx Vx23xVDcJZaTjZl3hQ7Cnfl/rfhllgbNdE7q8bh0DCor2PUHuMgRTMG1Eo8/7wHiF3hB7n+Y/Pp8 sldbMKMt1aN+aBqFT0ZT1BHUZEimYNsD8uf8o9pf/MJB/wAmlzPhyDrcn1H3oTzF5w0ry/PaQ36y 1vEmeF41UrWDhVWJZaM3qDj2PTrSrKYjzWGMy5JV/wArZ8mVDC4lMDK7Lcei4jPFedASAasu67e3 XbIeNFn4El035p+U1W4EEs1xNAsjLFHDJ+89KNpX4OV4EKq1Y1oKiuHxQjwZJ761pr2gytbSMLS/ hljinKkVRwyCRQafCR8SnuN8lzDD6Sxp9b028T6rfWFhdfWiZbmUThreSRYhCXNYz9qP4V9spOQd RbfHEb2NKlk/l6ylhms9N0u3lgAWGSOdVZQFZdiIv5XYfTgGUDozOEn+JPPy4g+vTSfWLizuYNLt W05LaCT1maOV0PKZSAB8MCoPE8spnO6Hc3Qx8JJ72e2On2FhALextorW3BLCGFFjQE7khVAG+QbF fFWA/mBbxQatbX0ktoyXMSRNa3UvpPztJTNFJH8L8uLS/F4HjmDrdL4tG+Ei/tcvS5+CxV2w+e08 u3Fw9xPYaVLPIrI8rzqWKuSWFTF3JOYQ0WQChk2co6mBNmCGvdYj0+5tVsEsbdYllA/f/wCj0uW5 NuEFGEiBz7VyEtHQIlLiuuXPb9mzIanlQ4a7/NkbSw6LoDSycpodNtS7+mBzdYI6niCQKtx8c1Zv Jk85H73OFQh7gkrfmX5XBdRJM0iKG9NYyWIMSy026H4ipDUIZSPnf+QyNX5qC4/mX5RohF07ciAw WGRilY1kJcKpoFVt/CjeGP5DL3J/NQ70fonmzStZuZraz9T1IVSQh0ZP3ciI6P8AEBQP6nw168SR tlWXTSxgEs8eaMzQR+rf8cq8/wCMEv8AxA5DD9Y94ZZPpPueg2cyw6TauRU+jGEQdWYqKAZ2GSYi LechHiNNx+rbS8pm5LcEF2HRJOgH+qRQf7eUR4sZuX8X2H9XT+1slUxt/D9oRM0qRRl36DsNySdg B7nL5zERZaoxMjQQqetbyG4mPwTUEoHSM9F+Y7E/wzHHFA8UuUufl3ftbjUhwjpy80bmW47sVdiq X+Yv+Uf1P/mEn/5NtiqYYq7FXYqgJwHu0ccqGhqUfkvA1IXb9rLo7BolvL+1HKwYAitD4gg/ccpb wW8VYD5c/wCUe0v/AJhIP+TS5sIcg6zJ9R97Drzz75dnb/nY9KMNpJMLOzuXVpEk5TnmP3kcNeD2 0bt6fMD4d65Wcg6hsGMjkUDD5m/L9TBH/hz07eVllsv3cBdjNDFehuPLiq+mQ1C+3EACuwjxR7mX BPvU7Pzf+U8cTXkulpZzOtvazD0lI4zQNHxQgiqJDVW+EEjscROHckwn3pzb+b9F1DRtS07SbGez iTT7q6XkscahWQSAoqO5+Iz126ZLjBBA7mHhkEE97Wt6V57ivL+80KSsKOq6XZerxj9NbRADwLrF w9cEUIrX/JxlGV7LGUa3X6BL+ajarbJq8MKaWzEzzfuPVCcSyhljdhyqnE8aj49vs4Y8d7rLgrbm nvkwTRXeiPYQQyXEukTG5EkjRAn1LdmLMqS1b1HbYju2U5eQb8P1SZz6/mD/AJYrT/pKk/7J8och LfMF556i04vo2nWUt8HTij3DOpXl8VQ0duOn+XirCfOkHma8u3ikENtrhs9PBNrK5jSNr2UzsjsI nAMafEBvtQE7Zqe0pAShxfT6vu2djookxlXPZibp+atlcGGyjS6tkqyvM8Tc6O5I5ySeoOShAtRQ AmprmDemkLOx/HwcuswO26eaUmrSy6cvmJYzeGK85RqF4VVo41IoSPjj5NTwYjtlEzECXh8rj+n9 NNkQSRx89/0ISTXza6dpWmPp7X0F5Yobj+8akB4RMWCxyL9l+Tc2Udd8mcNzlK6Il9vzYjJUYirs JQfM/kK7WXUbPRRdyOJ2uZmSJFDNHPIwkJY8i4tW6A7HxNDb4GaPpMq5fo/W1+LjO4jf4P6mk178 ubiSJJNFCwTSW7QyNFHUvKZ5FdlVieP227seRBXxJw5x/Fvv+j8fpXxMR/h/G6JtfPnkuGJ7/S9P ld4YpI/UiSNAFjiBVGYv9lo7dePXoMhLR5T6ZH8fgshqMY3iPx+AzPVTXSbwkUrBJse3wHwzBw/W PeHKyfSfc9G0wA6baVHSGOn/AAAzs6eZVpZIkSshAXpvkZyAG7KMSTslemSlZnE03KlFbk5fnJWv NQR8Oxpmu0k6keI/bdnvHc5mojtsPsrbuTcgEEEVB6jNmQ4LsVdirsVS/wAxf8o/qf8AzCT/APJt sVTDFXYq7FUMxkkYTR/ZjPwL/OOhP9Ms2Gxa9zuEQjq6BlNQemQIpmDbeBLAfLn/ACj2l/8AMJB/ yaXNhDkHWZPqPvRE2mabNAtvNaQyW6sXWF41ZAxrUhSKVPI/fhoMeIqZ0XRj6dbC3PohFh/dJ8Ai p6YXbYJT4adMeEJ4j3qVv5c0C3ikii0+ARSyeq6GNWBcVoaNWnGp4joO2DhCmZ70RFpWlwgCKzgj AXgAkaLRSAvHYdOIph4QjiKCsfL2nLrmnaejXSWbxT1gS8ulX92E4AUlHELXoMozekCnJweom2Uf 4L0L/l7/AOk+9/6rZRxy73J8OPcraJ5V0HRJJpdNtjFLcbSyPJLMxHIvQNKzlQWYsQOp3yNsgE2w JS7VLq5M8GnWTcLq5DPJPsfRgQgPIAdi5LBUB7mtCFIxVCT+SfLc5ieW1b6xEGBukmminfnQsZZY 3R5KlR9snITxxmKkLZRnKPI0s/wL5c/33c/9J17/ANVsq/KYv5sfk2fmMn84sP8ANHlTRRr6WRSd 7VbRZhE91cuBIzvGzfFITum3yzXdoHwQDjAjfkHN0f72+Mk15ohYIFdXWNQ6rwVgACE/lB8NumaI yLtaCGXRtIWJ4lsbdYpeIkjESBW4fZ5ClDSu2S8Wd3ZY8Ee5T/w/onrQTCxgWS2f1ISiKoV/iPKi 0BILsRXoTXrh8adEWd18OPcqro+kpXjZW68utIkFevt/lHB4s+8rwR7naoqrpN2qgBRbyAAbAAIc OH6x7wuT6T7no2mf8c20/wCMMf8AxEZ2bzKvLKkUbSOaKvXx+QyM5iIssoxJNBCwPNFMTOAouSGW n7LUpwJ8eKj6a5j45SjL1fx/Ye75fpbZgEen+H8WjMymh2KuxV2Kpf5i/wCUf1P/AJhJ/wDk22Kp hirsVSbzLDrRXT7vSYluZrG69eazeUwCaJoJYCnOjLVWmD0YU+HFWAQaD+ecT2lnHqdtHYWgsohI HjckRQFZnq0PqOpkALBzU9u9VLJPJdl+ZFrqpTzHdx3OlJp9uqlTEXN8UQ3DfBEjEep6lKmlKbE7 4oZpirC7Hy35p0+1jso1srqC2HpW87zywO0SbJzjEEwDBaVo2ZEc9Cqcaens3av+ifNn/LLYf9Jk 3/ZLh/MeTH8r5u/RPmz/AJZbD/pMm/7JcfzHkv5Xzd+ifNn/ACy2H/SZN/2S4/mPJfyvm79E+bP+ WWw/6TJv+yXH8x5L+V81fSNB1tdci1HUTbQw20MkcMFu7zM0kpWrO7xw0UKlAoXr3yvJk4m7Fi4G TZU2uxV2KpZpP7+91G+O4eb6rCf+K7WqEU9p2lxVM8VdirF/MvlzV7zV4dR05rd6QfV54Lhni6OX VldEl/mIIK/TmHrNJ4wAuqcnTanwidrS/wDw15s/3xYf9JU3/ZNmv/kb+l9n7XM/lL+j9v7Hf4a8 2f74sP8ApKm/7Jsf5G/pfZ+1f5S/o/b+x3+GvNn++LD/AKSpv+ybH+Rv6X2ftX+Uv6P2/sd/hrzZ /viw/wCkqb/smx/kb+l9n7V/lL+j9v7FG88o+bbq1ltgLC39dTGZvXmlKhhQkJ6EfI06fEMni7I4 ZAmV15MZ9o2CAGdW8Igt4oQaiJFQE9+Ipm5dYwvzZc+e4dTuV0aykvIiLa5sHHo+ipgWU3EUgd43 5SERgeNdmFDSJiDzZA0kFjr/AOeN3dIL3y/b29m/pMygRsRy4kgKZ9mDB+rbfD07sogiioNcmd+S tQ8y6h5eguvMliunas7yeraJQBUDkRmnOXqlD9rJMU8xV2KuxVL/ADF/yj+p/wDMJP8A8m2xVMMV diqk11brMIWcCQ0ovuem/TfImYukWq5JKlJdW8cixu4V2pQb9zQV8N8iZgGii1XJJdirsVdirsVd irsVdirsVU7m4itraW4mbjDCjSSN4KgqT9wxVC6FbywaRaJMCtw0YkuQevrS/vJSfm7HFUdirsVd irsVdirsVdirsVdirsVdirsVdirsVdiqX+Yv+Uf1P/mEn/5NtiqYYq41pt17Yql8sEzXqMVUc/jK CQ8WaMjiT8HauUGJ4v293wYEbo9eXEcgA3cA1H30GXhmgLmCZ7mNmUL6hCuokPFuFWAPwZROJJH6 /wBjAjdHoXK/GAreANR95Ay4M3m+m3eu3thb3s+sXYluo1nZIzEiL6g5hFXgdlBpmDPUyEiA0nIb RNNW/wCrzff8HH/1TyP5qa+IXU1b/q833/Bx/wDVPH81NfELqat/1eb7/g4/+qeP5qa+IVK6uNRt bWa5l1m+EUCNJIQ8ZPFAWP7HgMRqZk0viFLNI87a7Zaz6FzeQ3DtHwm0u7u6yJI4WSM847X4GCHc VINfbL456FndkJsoXztqz046dZNWlKX7mtaU/wCPX3GH81HuK+IER5T86T65cGC50/6i0kLXNm6z esssSOEZvsRFftoQCNw30ZdDIJcujMG0dqF9a6ssWm2EyXMd01byaFldEtkYiQMykj96UMQHX7R/ ZOTSnWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVL/MX/KP6n/zCT/8m2xVMMVcTQE+Hhiq F+ryyD12+G46xA9EH8p+f7X9mVcJO/VjSsk6HirEJKwr6TEcvfbJiQ+KbUfQeesz1ST/AHQD+wB3 I8W7/dkOG9/kirRETs6AuvB+jL7jw9ssibDIPOPL/wDxwdN/5hYP+Ta5qcn1H3uNLmlXm3zbLoE1 ootDcw3EczySgkek0bwpHyAB+F3mC17GnbJY8fEmMbSGL849NkRJl024a2kLojqRzMihSqcCF6l1 U77Me43yz8ue9lwNt+btnM11DZadNJNHC81uztGFZUt2uObry5KpRar/ADDpg/L95RwMp+ufp3yt PPaRlTe28yQxOV5BiGQK9CQrV2Zf2TsemVgcMt0cikGraZ5V1uG8W41Ce2k1J/WlhLMrRn6stsV9 FgUBAXcla9q0y2PGOQ5JFoTRPJ3lDSdUt9Ri1OWWWBi/pOFWIsVIJ4IihRXiQF2HEZKRmRVJNnoy ryTp9pr6xWVzBM9hY6c9hfsGlhVpWkh4osiFC4ZbcseJpQivXL8MCCSerOIp6DoPl3RtAsfqOkWw tbXmZPTDO/xN1PKQs345kM0xxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpf5i/5R/U/wDm En/5NtiqYYq7FXYqls0Tveq3pOA1JGWkZNYiKUPLYb75jyFy5fd0YEbpipJUEqVJ/ZNKj7icvDNv Crzby/8A8cHTf+YWD/k2uajJ9R97jS5sRn87eYLBFutT0Y3VlcT/AFeBreNlkVBJIJWYBrjkFSNW +L0679hXLRiB2BZcIUU8/a16luZtBUQXfpSwRBpSEE8CTh3YQOS3N2j+FPt7e+Hwh3p4VC2/M6b6 gZZfLk0zRvbwSmAM9ecbFyQIhQqAQF6dQSvcnBvzXg8020rzxql36zy6Qtlbx2c14pMjuXZUSVVr 6Uagn1DyH05A4h39UGKybzZBpOsst7qt1FfaaDHc3Ua2PpIJYUndkgKy3BTiQKlDvtWvWzGSN4gb +9Mb6JvYfmNa393HaWvmm7e6lYokBtYUfkKVBV7RSKct6/wOTObIN6H4+KeKSfeSPM2sy3lvDrWo JcxarbtdWJkSKGRCrpxh+AIrlo5gfs1qp7ZdjycRI7mcZWzzLmTsVdirsVdirsVdirsVdirsVdir sVdirsVY7pv5ieRtRsxeWut2gt2cxhppBbtzXgCOE3pt/u1O37Q8cVVh578kHp5h0z7QX/ey3+0T QD7fUnFV1v528nXFr9ah1ywaDh6hf6zEOKUU1arArT1FrXpUeOKqWqeYNBv9I1a1sdStbu5js7lp IIJ45JFVFZGJVWJADfCffbFU/wAVdiriQASeg64qhCk0tLlahl3gjO1V78vdvwyqid2PmiY5BIgc VAPY7EexywGwyXYVebeX/wDjg6b/AMwsH/Jtc1GT6j73GlzR+QQ7FVkcUUYYRoqBmLtxAFWbck07 nFVLUbX65p9zacuH1iJ4ufWnNStae1clE0bSElaxk1Nhpt7oKz3F/wAp54xNH6byRxLC7Asw/wB1 0UV7ZfjgSfSeTOIvki7DyJJYXEVxZ+V0gngFIpVng5D4WXrz32kbr45acEzzKTA96YeVfJeoSlYv MmnwiysrRrK1hdkmaUOyfvfhJ9MqkKgUNak5fjxcJJ72cY0nOgyz6RMNMnkaWzSY2aO5qYpeIkh3 /kmiYeyyfCuxAW1kyjFXYq7FXYq7FXYq7FXYq7FXYqpQXdtOWEMiuU+0AcAkDyZyxyjzCrhYKUV3 bSyNHHIrSJ9pQdxQ0/XgEgWcscgLIeV+d9C/KLyqunWmq+Xbq/8Ar63AgMDTXMgS3hjDCR5JxJRY lVU3IRa04iuFixnVb/8AJ3SIo7mLybqglS5WOaPlPDQQ+nM3xLOySFdmSMn4j8X2SHKqq2qflPdW luNP8mX88E031USyStbkxzpU7i4eZkb0AihwF+0oNeYxVPPKE35avBq48saHe6XfTaRd3Xr3azBZ beSQxvxZ5ZQayQg/q/aGKvXsUOxVJPNGk6pffoy60qSBL7Srw3cSXQcxPztp7VlYx/EPhuSwp3GK sEtPyu/MG3ubWFfOE0WlWj2yRwQPNG3oW8XAjjUoN1HwUod6npilkvkvyr5r0XU55dV1p9TsGtLe GGGWWeV1nRF9aSsrEUdwx7nfqAKYoZjirD4fIV7ap6FnrDJaISLeOWBZGRK/CnMMlQo2G3TKJaeJ NsDAKn+DNX/6vK/9Io/6qZH8rFfDDv8ABmr/APV5X/pFH/VTH8rFfDDv8Gav/wBXlf8ApFH/AFUx /KxXww7/AAZq/wD1eV/6RR/1Ux/KxXwwitG8pS2WqjUru/a8ljiaG3iEaxRp6hBdyAWLMeIHWgHb LceIQ5JEQGRZYydiqS6hZRTavJbOeCanZkeouzJLaSAxuh/n/f8AIf6gxVGaNfyXlnynUJeQO0F5 GOizRmjUrvxbZ1/ySDiqOxV2KsT80a9rdtrEOnadJDbx/V/rE00kZldizlFVRyRQPhJJ37ZXkycL k6bT+ITulv6c82/9XGD/AKRR/wBVMp/MHucz+Tx3u/Tnm3/q4wf9Io/6qY/mD3L/ACeO936c82/9 XGD/AKRR/wBVMfzB7l/k8d7v055t/wCrjB/0ij/qpj+YPcv8njvUb3zL5wtbSa5jvbaVoEMnpSWx VWCCpUlZKioHUYRn35MZ6AAEgs9iuJJbSGdIwWlRX4FqU5CvWmZBdaAOqD0+CaGaSiFhHSFOTg8E oHoKKK/ayuAILk5pggb89+XVMZC4UlF5N2BNPxywuMK6pdaQTR3UhEZb0/hjVnFEWQ8jT4d9/HK4 gguVkkDEb8/LuR721u88c7xI08IZYpSoLoHpyCt1HLiK0y1xHmmozfn1eWV2sFtp9hIob6uIyjSS D1uzvKyofSYAVXsxqp41UtFPz0kuUdxaxwRzrG0cbRD1LdOQ5kszcWdqM1O23iMVR9ld/mfNa6qn mmxsrfTv0TORJasCfrYLDiP3kjFTFvuBTb3xV6Dih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpbr P7uTTrqlRBdor068bhWtx9HOVT9GKpb5pOuaVDNrHl60F9eyBEudPPSUAgLKCCCHRdvcU/lGKsI8 8+Y9Wuo0ujaXVnLBb2fDSZWeMie9u2t3LCJ4/U4qg9M8vuOVZJGwHL02MEEkXy+1hT/mBbWVwbTU bG5a4jqZmiuZV4qHdSfSaV3+ERnkQaVoMhUjyLfeMGjFOtPWy8x/UblI7mySaO4YsZ5DNW3ZI+PL kacJZG+lfDIGRHPduhjjKqHDz+xPU1ZoPLH6WuFMrQWZuZlSgLmOPmwWu3xU2ysjenIE/RxHuSlv zL8sq0qFpmlQBliSMs7AwrLTwVviK0Y7MpByXhFh+ZivP5l+UQEP1qRuRCsFhlYp8AkJcKp4hVY1 Ps3hg8Mp/MwR+h+a9K1m5nt7P1PUhVJDzjZP3ciI8bnkBQPzPGv2uJI2wSgQyhlEjQR+rf8AHKvP +MEn/EDgjzZZPpPueg2byJpVp6a8pGijVR2BKDdvYZnkvPxAJ35Llga1cSJWQPQXG1WLH/dm34+3 yyNU2GfGKO3d+pWknARvS/eyKePBTX4j05U6e+SJ7mEYb77BQEElsfXWsrt/vSAN291H+T2Hhkar ds4xLbl3fjzRmTaHYq7FUv8AMX/KP6n/AMwk/wDybbFUwxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2Kpd5jRm0O9dATLBGbiEDr6kH72P/h0GKpgrK6hlIZWFVYbgg9CDirHtf8AKtzqOpx6jZ3y2kwh +rzpLCZ0kVWLxkUkhKlS79965CcBLm34dRLHyQP+C9c/6u1r/wBIUn/ZVlfgByP5Qn3BjOv6Hrdv rkNsupQLNFbNKtwlqw+GZjGyFWncbGMMD4jITiIt2HLPKegpLNZ1aPSjaaGuntfWktsEn/vGpAGW FuQSKRacWqS7KKd8rAvdyZS4ajVimPf4o8h3Yl1Oz0RbuVxObmZ44UAZo5pGDks3IyC1boDsfE0M +GXK2nxcZ3A/G/6mk8wfl1cNEkmihbeaW3MLtFESXlad1dlDEhR8bfzHkRx8Xhl3r4mM9PxuiLTz 75Lhhe/0rTpXaGOSP1YkjQBYoqqjMX+y0duvGle3Q4Djl1ZDPDmB+PwGaaoa6TdnpW3kNP8AYHwy uPNyJ/Sfc9G0z/jm2n/GGP8A4iM2DzqvI7KtVRpD/KtK/wDDFcBSBfVK9Mgkgmf905EYEIIEa7bP V6OeR+LKoCi5eeYkBvz36+7bZNsucN2KuxV2Kpf5i/5R/U/+YSf/AJNtiqYYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FWmVWUqwBUihB3BBxVLvLjN+g7ONv7y3j+rS/wDGS3Jhf/hkOKplirsVYP5q /wCUsX/mAT/k9JmPqOjsuz+qB9KL1RLwX1QvESUHLiTWletK5jOypCro2kLE8S2NusUvESRiJArc Ps8hShpXbDxFHAO5YdB0Uzwz/UoVlt3MkTKgWjnl8VBQE1diK9Ca9ceIo8OPcqJpGkpXhZQLXrSJ BXr4D/KONlPAO52qKq6TdqoAUW8gAGwACHGPNE/pPuejaZ/xzbT/AIwx/wDERmwedVZ5vSj5U5OT xRB1Zj0GAmmUI2UOiSWr+pI3NZiPXbsr9Aw/yf2fu98iNm0kTFDpyRmTaHYq7FXYql/mL/lH9T/5 hJ/+TbYqmGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpbo/7uXUrYGqQXblB3pOiXDf8ADzNi qZYq7FWMeZfLWrX2rQ6jp00ApB9XmhuOY6OXVlZA38xBBGV5MfE5Gn1Bxk7Jd/hXzZ/NYf8ABzf9 U8r/AC/m5X8oeTv8K+bP5rD/AIOb/qnj+X81/lDyd/hXzZ/NYf8ABzf9U8fy/mv8oeTv8K+bP5rD /g5v+qeP5fzX+UPJRu/Jvmy5tZbYzWEQmUxtKDM5UMKEheK1NOm+EYKLGWvJBFM7t4VggjhUkrEq oCepCimXuvYZ5p8p+ab/AFK7n0i7t7aO6FtLHcSM4mhuLNZuHGP05I2V3eMkt0ofhbFLH7DyB+bK 3ST33mrmB6fKOG4uAnwheQ4shHVOXLvyIIoBirOvJeneY9O8vQWnmK9TUNVRpDNdRl2VgzllFXCk 0U/ygeAxQnmKuxV2Kpf5i/5R/U/+YSf/AJNtiqYYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq lqfufMcqkUF5aI6U/mtpCshPuRcJ92KplirsVdirsVdirsVdirsVdiqFs9Rium4qjpVfUjLgDmla chQn8cJFJIpFYEIW21GK4l9NUdahjG7ABXCNxYrQk9fHCQkhFYEOxV2Kpf5i/wCUf1P/AJhJ/wDk 22KphirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqRecb5NK0xddKNIdJkEzRICWkjkHoyJt7Sc vCqiu2Ksb1b80AbOyvdJ9JbOe3iuJ5poZrh1e4mNvFAsMDKxf1UZW3/rkgLZRjaXw/mpeSsIzqml QTEkC3uLeWCbZuH91Lco/wBrbp1w8I72XAO9Ltb8y+adYubM6fqtvKnGU+jZNNbQsFCsXeWGd3Lf GgUVp8VaYeBPAjLOaa6tILlL7UFWeNZFU313UB1DAH9775IRDIRCtwuP+W+//wCk67/6q4eALwB3 C4/5b7//AKTrv/qrjwBeAO4XH/Lff/8ASdd/9VceALwBD6g1/DY3E0GpX8c0UbSRv9cuHoyDkPhk d0PToRgMApgHp9s889hbyhwkskaOzcaipUE7VGUtCE061EdxdejJGOMgVwqDpxBIG+3xE/TkiWRK ZSByhCNwbsxFfw2yLFLLO14X116UkYkUrzIQdGFfHapyZOzInZNcgxdirsVS/wAxf8o/qf8AzCT/ APJtsVTDFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq858+eV1m1UuulNdabfRQm4W1iD/v7 W4aesyAfEJOY3p+yQcnEjqzgR1YddflxpNzO8r6NqaBxT0Y4ZUjUguVZVUAAp6jBfDDcWdxVEgTy /PZWllpd4FgjnH1ZomEgS4cOrAvT4Q8fD2HywgjooI6JjM91pPlWWSNVe7sbJ5ApqUaWOItvTehY dslyDLkGMP8AmTqK3c9mNHJuYg/IM5QI0UKtKPst6gSXkCy/s0OR40cTpfzSaONX/Q0394sclZKA FlbZTw+ImSKRFHcr748a8Sc+W/Ndzqt/La3Fn9V/dpcQHkSDG8UMgUEgcnX1vj6caqN9zkhK0gp1 qn/HMu/+MMn/ABA4SkvSLRZm0m0SE8WaKMM/dV4CpHv4ZQHHVTaekYntgFMYCMnZkr0PuOoP9cbW 1i6hHdK8dm4Mu1GZSBxJoXWo+ID2w1XNarmuaz9JI2thSWKtKn7YJqwY+53r44LW0VgQ7FXYql/m L/lH9T/5hJ/+TbYqmGKuxVrmnILyHI7ha75HjF1e6aLeSQ0XQMFLAMegruciZgGid00W8kh2KuxV 2KuxV2KuxV2KuxV2KtMyqpZiAoFSTsABirzzz756n066Y2GoenYWUULXT2v1WR3mupzAiF7isSCP jVqkdfbJRDKIYrH+bXxBbnzDeWrMafFb2kiCrFUrLDbyx/FxYijdAT0yVRZ8IdLqt5r95aXun63N O00Mg+tSQwhfThKkKEEMX+7JxU/MdehA7kgdynd6n5mnm02TTIAYJrdbi75KCgbknOMsTWvEtQLv X2w2WVpSnnDzleWD3EGiSWZRTyWaGd5SzJMyemoFG3jjBO4Bbf2eIosut/O3mk3NuJ9HZRdywxJB wnVlqZTKKui1ZAihj9jvUA4OIrZbj86ecbqzkmtvL8lu6CSiXEUxYkI7JxVQK7qqnf8AXTDxFbLL 9RJOk3RPU28hOxH7B7HfJHkyL0/TP+Obaf8AGGP/AIiMx3GV5fV4/ugpb/KJAp9FcVS3TraaG4m4 BCImEQBd24IVV+K1HT4smSyJTTIMXYq7FXYql/mL/lH9T/5hJ/8Ak22Kphirj08fbEqgHjc3iv6b fEfUIonKqUFA3LpvmpnjJzA8J39X8N+mhseLlvv+1yRIcNX9/X4I5SSASCp8DSv4ZtYmx3OMUDPG 73SN6bDlQkEIT+7NRxPLbrvmqz4zLKDwnev5t+nfY8W3m5MJAR5/f1+COUkqCVKnwNK/hXNpE2Lq nHLFoPPM91EJ7TR7iS1kqYJWkhjLpX4X4lqgMNxXtmBk7VwQkYk7jybo6eRFr/8AF+of9WSb/kfB /wA1ZD+WdP3n5J/Kzd/i/UP+rJN/yPg/5qx/lnT95+S/lZu/xfqH/Vkm/wCR8H/NWP8ALOn7z8l/ Kzd/i/UP+rJN/wAj4P8AmrH+WdP3n5L+VmidK81G81NdOubCaymlieWB3aORH9MgOtUYkMOYO43z K02tx5r4Dya8mKUeafZlNbsVQWqakbREjgiNzfz1FtaqaFiKAs7b8I1qOTdvckAqoeHQYZWE+rEa jdE8qSisEZ8IYTVVp/Mat4nFWPeb/KuoXOqRXlhZx3ds0MMU1sHWJke1laaGReVFIq+++1Bkoypn GVMZufy5nubiS4uPLEcs8qukkjTQElZCWavx+LH78lxBlxhA32n6xpF/a2lnpKW80UUriBpY/T9O 5k5M3JC1P3qVI8K4Qb5JBvkm1ha/VLG3teXL0I0jL0pUqoBP05MMwiMKtFVJBIBI6HwxVvFULqn/ ABzLv/jDJ/xA4Cpem6Z/xzbT/jDH/wARGY7jKN7rFnC7Wy3EYu+cUPBmHwPcEiLkP8riaDviEhTE lnazhYJ42mWi3UJdfUYMxAciv2uVfnuMN2t2mYIPTfAh2KuxV2Kpf5i/5R/U/wDmEn/5NtiqYYq4 kAEk0A3JwEgCyqGKzORcCvJfsR9Kp3r7nMMxnL94OY5Dy/Wfs2822wPSiEdXQMOhFcy4TEhY5NZF GkOVlmInU04bwqehHcn/AFu2YhEsnrHT6R3+/wB/Tu5tliO3zV45A6Bh36g9QR1BzKxzEhYayKLA vLv/ACj+mf8AMJB/ybXOF1f99P8ArH73bY/pHuVrzVdNspEju7mOB5EeRFkYKWSIqHYV/l5rX55X DFKXIWyMgF36S071vQ+tQ+tQt6XqLy4qaMeNa0HfB4cqujS2GrjU9OtoZpp7mNI4FLzMWHwqoLEk DfopwxxSJAA5qSGH6gtzPq6PDp8OoyXl1cRTvPAlz6UNrwRFjEk1uiDcltya9jmzjLhhXEYgRHI1 Zl30C0kWeVsc07zrbtAPrXkmJ3hSH6xLFEAeTIzyN6ZgHH93E8igO1fhFanMqemmDtmO99f+Pd5A axMdYsmis7USy63FZJpmoWENlNBBD8PpSN++lVuITny5em1RuB0yOm1OSE4R4jIGUufXoP1/FM8Y IJqtmdWnmbzbfa/c6anl59PtIoy0d/ev8LNyUf7pEiN1qEEm/iM6Z17INP04WvOWWQ3F5PT6xcsA C3H7KqBsqLU8VHzNWJJVReKuxV2KpHrnlKz1e+hvmurm0uYozCWt2jo6FuQDLKkq/Ca0IAO+EGkg kIH/AJV/b/8AV3v/APp0/wCyfDxllxl3/Kv7f/q73/8A06f9k+PGV4y7/lX9v/1d7/8A6dP+yfHj K8Zd/wAq/t/+rvf/APTp/wBk+PGV4ysn/LiznheGXVtQMUgKuoNqpKnqKrbhhX2OPGUcZZXHGkca xoOKIAqjwAFBkWLFfM35eWevXlxNLqFzbQ3kaJdW0IiKO8KyLDJWRHYFPWJpWhoKjrVVjmnfkF5c sp45xql/NJGI/wC8MLLzQKGcIY+ILCNOx+z3xTbM/JflS38q+X4NFt7mW7jgaR/XmCByZHLnZAoo OWKE8xV2KuxVL/MX/KP6n/zCT/8AJtsVTDFXYq4mgriVS+SpvVccqGjBuMnIBdioFO9c1GTfOJb9 /KdgDmKrrf42ckfRX6kepDAEVofEEH7jm2ibFuMQ3hVgHl3/AJR/TP8AmEg/5NrnBav++n/WP3u3 x/SPcxrXF8mearqBJ9Ra3ubPlDbFw1sxeeZVrEZlQScjavH8FQQWzKw+NgBqNg8+vIda5c7YS4Zd WNQ+TfywaP6ovmMuIpCXuJLmAqwdYwsXqEDlWKi7Hep+QzDq9Tz4PsPnv82vw4d6I0/yH+Xs3K8T XEmE0aQsJJbYkS3Vs0Kl9uXquT6iBjsw+HI5NbqBtwff0N/LoUjFDnbIPLkOkWjfory/5jhnVg0i W37q5KiPipo0bL0Rkry3P2upJzGzzlIcWTGffuPx1+5nAAbRKfQWuuy6va2H6SjC3KSuZPqwqPSC npz78su7P0uLUEggivNhmySgEwH5e3MuqR3l5q7S2/7r61aRwLGswgcyRBmLOQAx3p1G2b7B2fjx 1XQ2Pi4k88pMzzOaXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYql/mL/AJR/U/8AmEn/ AOTbYqmGKuxV2KoYtI7C4QVjSoVe7KftH8NswTKUj4g+kdO8dT+rvrz2toD0nmiFZWUMpqp3BGZs ZCQscmsim8KGAeXf+Uf0z/mEg/5NrnBav++n/WP3u3x/SPck+oflt5TvrVLeW1MfCc3Jmhb0pHlJ ZgZGWnPiX+Hl0+Va3Q7QyxN30pBwxLX/ACrby2GtGT6xG1ksSQskzKaQwLbAkjerQoEalPv3x/lD Jvy3vp3m/vXwYpen5PeUzbSW9z686PKsqESshVY1Konwn+U7nvlp7Vy3YobMfAinuieTtG0a4S4s hKsqwi3JZ6hkCoo5ClK/ul3zGzaueQVKuds44wOSc2P/AClemf8AGG6/VHm17B+qXuDj6vkGZZ0z gOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksd/MHVpNJ8n6nerb/WQIvSkjDcCFmP pchs1ePOtMVT20lmltIZZ4vq88katLBy5cHYAsnIUrxO1cVVcVSHzfHr5tLSTRYnuJYp5Dc28cqQ l43tZ4l3cqpCzSRuQT2qNwBgItIYLa2X5+RXMNo11ALK2aGH6yv1d2lSNAGd/VDSEPQ8mqH5HZQA aqso8lx/mJHqt5H5laOTTUt7dbOVfQV2n4/v2Kwr3au54jpRTucQKUswwoedaU2pWOnW9jdaVerP ZxrbuY4WlRvSHDmjpUFWpUZyuq7JzHJIxogm/m7HHqI8ItF/Xrj/AKtl/wD9Isn9Mo/kjP3fay/M Q73fXrj/AKtl/wD9Isn9Mf5Iz932r+Yh3u+vXH/Vsv8A/pFk/pj/ACRn7vtX8xDvd9euP+rZf/8A SLJ/TH+SM/d9q/mId6vokeoXfma2uPqFxbWlpBN6s9yhiBeUoqoit8TH4SSaUGbfsnQ5MJkZ9XG1 GUSoBmebpxXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVK7+qfVpfrnp/VeJ9b1qe nx78uW1PniqrirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV 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. 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. 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. 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. 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. 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 [RFC2782] and DNS Service Discovery [RFC6763].

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. 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. 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 l31wt0bZRZQWqyiZ46emJKGRaruTQUxVhlr+THmu6srTTbrQksbiztNWTVNZF1A51Oe4VmsiQrGQ hJeDfvQKYpTPyt+Vv5gL5o0XUdbjpbX14uteZSZYXMV/ZSXJtVXi5LBlmSvGo8emKvecUOxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQv7hraxuLhQGaGJ5Ap6E opNPwxV455d/PfWZZdKn1i30y4sdUgu7l7fSZ5Jb+0jtImlJuYH2HIIafEPGu26rJf8AlePl1rS2 ni0fWJZLqCS9jtUtU9UWUQBN2QZQvompCkNU0O3SqqKj/OXypcahBaWFvqGoxyJavcXlpatLBbC+ T1IBcEHmpK7mimnzxVBxfn55DeW7VvrccNtFcSw3DRKUuRatxkEHF2evhzVcVU2/P3yinl1ddk07 Vo7eW5W0t4HtQJZndS4MR9T0mFF3o9em2Kou+/Ory1awQSDTtVuJJLI6ndW8VqBLaWgcoZblZHTg KrXau3xD4SDiqY+XvzO0LzDr8ujaTa3tx6CJJNqIhAtEWaITRFpC3Ieop+EFeoxVl+KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSurdbm1mt2JCzI0bEdQGBG334qx fRPyz8u6P5Sl8vWkSK09nNYz6mIolunSZWUs7qo5Ecu/hiqW6p+UsFxbaWunazdaZd6fpI0GW6iW KQ3FhxCsjo6lQxpXkvQ/IYqpW35M2GnX8cuh63qOkWDx2kWo2VrIENz9RXhEzTACRCy7Pw+17Yqg 9K/IPQtMu7+W11W8jgulmW2jRYBJB9YFJP3xjZ5Bx+EK21Ca1rim1kH5C6dDpl1bJrEoubyeGedx a2YtX+royRq1l6fotsxLHqTviq9fyH0y2sIbPS9bvrANYSaVqbqsD/WrSaZ55EIZKRktIQGXou3j VQyjyb+X2k+U7zU7jTpZWj1IWqehJxKxJZxejGqkAE/D1rirKMVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVYppOu+c9YsItTs9Nsrayuh6tml1cS+s0Lbxu4jidV5r8VK7YqjPV8+/8sulf9JF x/1QxV3q+ff+WXSv+ki4/wCqGKu9Xz7/AMsulf8ASRcf9UMVd6vn3/ll0r/pIuP+qGKu9Xz7/wAs ulf9JFx/1QxV3q+ff+WXSv8ApIuP+qGKrJrn8wI4XdLHTJnVSyxLczqzkCvEFoQoJ99sVTLQNXTW NGtNSSJoPrKcmgcgsjAlWUkdaMCK4qmGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVpmVVLMQFAq SdgAMVSzzLrM+kaZ9ZtrX65dyyxW1rbcxGHlnkEaBnNQoq25xVCer59/5ZdK/wCki4/6oYq71fPv /LLpX/SRcf8AVDFXer59/wCWXSv+ki4/6oYq71fPv/LLpX/SRcf9UMVd6vn3/ll0r/pIuP8Aqhir vV8+/wDLLpX/AEkXH/VDFUJq2uec9HsJdTvNNsbmxtR6l4lrcS+ssK7yOgkiRW4L8VK74qmHkf8A 5QvQP+2baf8AJhMVTrFUDrmsWei6Rd6recza2cZlmEY5PxX+UbVOKsfP5neX4bhrW/t73TbsWlxf pbXkHpSPDaqXk4DkatxViB3ofDFUwtfO/l241K+04XBjuNOtY766MilUWGRBITy8UR0LjtyGKo3y 75g07zBo9vq+nMzWlyG4CRSjqyMUdXU7qyspBGKpjirsVYN5P/xl/h20+o/o76pWX0vX9f1Keq9e XH4evhilOf8Anf8A/tU/9POKHf8AO/8A/ap/6ecVd/zv/wD2qf8Ap5xVpm8/KpZjpIUCpJ+sgADF Xn0Hlr8xb/W9U1TTtTt5WvJVNtrVpqMskUERMQe1SzZXhPAK7fH4+OKVSPy7+fS3QjPmK2aJr2Z5 4naMP9T6IYiICV5AkD+VqH5KonQ/KP5vRabr9hrOtJdxT6M9jpVJizfXTAI1n9UxrKPjDEsxr8QP UYoSqz8nfmNpltd6d5b84fpJ4IlkntTcR+qly1wBNCpmF00QEKEKWP2ySRilGT+Wfz6fT3jXXo11 EyWoa4WWEQGERKswSL6rzVxLVmcvRh0XFVR9E/PYX7FNTjMA1NZI2eaEr9U/bDKLcHj/ACgUI7qf tYqi/KWh/nXBcRT63q8Miw+sfqsrJIkrssSL6jRQxsE5erIgXcfCCeuKsv8A+d//AO1T/wBPOKHf 87//ANqn/p5xV3/O/wD/AGqf+nnFULqZ83jTrk6kNGawEbG6Eq3DRmOnxclINRTFWOHSvMdnHpch 1C0ufL02o2DQW0Ly3AjP1hOPoSyVb0/8kswH7NMUvTcUOxV2KuxV2KuxVJfPH/KF6/8A9s27/wCT D4q7yP8A8oXoH/bNtP8AkwmKoiz8y+Xb28NlZana3V2pYPbwTRyOpTZgyoSVpTvirXmbR7TWvL9/ pV5KYLW8haOaYUBVCNz8W334qw+7/K/8vtet7iPS5ooYJ7NUjGnvGwj9V/UjuUI5buAV8GWoxSqX H5N6HNAEGoXyTyyTm/nEzf6Rb3VBNbmMn00Vo4405IoaiLWuKso8u+WbPQfr0dlLK1re3H1oQTSP MY5GRVkpJIXkbmyczyY7k4oTfFXYqwfydpGuT+XLSW312e0hYy8LdILZ1X964oGeNmP0nFKc/oHz J/1M1x/0jWf/AFSxQ79A+ZP+pmuP+kaz/wCqWKu/QPmT/qZrj/pGs/8Aqliqyfy55hmgkhfzJcMk qlGU21pQhhQg0jB+44q8ysvys0z9K6ZLa+cLdJrYxzPa2sLWsM0WnqtqJCkdzyaUSwsHcvuSdtsU qukfk/b22tRWV55rLanAizT2kKSo4tGuuccaStOzqGckHkWJqPpVXeUvyxv7LzBo7w+Y01bToJ5r nUZoZ2HqfVzEIIhEZLhmb6xB6kjcgASy0xV2m/lx+X+v3+oa5o3mlZtQn1Ka8vbq1k48LeeWSf6t wWRePxSL+8aoPH7O5GKt6Z+TV5aWqpL5z9RRBcmOQGYej6yRwrcw/wClCj1jq5aqksQAOuKrW/Ju 8jt4YR5sgX6tYSWcwf6zR3uHaVCx+uAqoL1QrSvcMvw4qr6f+TV0mpVvPOUlzGFtYJYk9RJZDbmD lEaXFEFLchOK8hzNa0xV6H+gfMn/AFM1x/0jWf8A1SxQ79A+ZP8AqZrj/pGs/wDqlirv0D5k/wCp muP+kaz/AOqWKqV1pXmC2tpbiTzJdskSl2WOztZHIAr8KJCzMfYDFWKDy/ZQiw1nS9ce9s7rVLET W0SQxW7SG4SrNFEqBJB+1sG/mxS9PxQ7FWO/mDqOq6d5UurrSpHiv1ltY4XjWNnpLdRRuFEqvHUo 5FWFBirF5pvzLl1X6jYXF4k0UFnO4u20sxp611Okn1gxW4Z1aKEcRDRh364pelYodiqS+eP+UL1/ /tm3f/Jh8Vd5H/5QvQP+2baf8mExVhvm78rdA/w3I95rEtlbWRmuZ7m7L3VuA9wtwQbaVzGq/Dx4 xgcvc0xS7y3+WPljQLxp115rgLB6KxTSR0RrlCkUnXqTNOV/mMp9sVS64/J7yy72v1PzO9pDay+p FDG0JUPbRn1gp5cgA7M7qD8IZl6Uoqp61+TvkyS20yObW1t1vp4obVwq8bpvRKpGGR1J+EOyfFsx 79CraHP5JaWmtxyHzHFDam4urgCNYkuROXjkdULF/iQRfG5JNDx48TiqrY/kdoVzZy6fD5l+vcLe KNf3cMskXC5ecfEG5pC8hkBRCtaD4qrir1fRdLh0nR7HS4GZ4bGCK2jZiSSsSBATUnwxQwbyraaM +hWzT+ZLiylJk52qXqRKn71tghFR44pTb6j5f/6m67/7iMf9MVd9R8v/APU3Xf8A3EY/6Yq76j5f /wCpuu/+4jH/AExV31Hy/wD9Tdd/9xGP+mKvDfOlj5QfzRPoNzql7NYabMZm1MrBNbwWjq1/NGvp KzyM81wEQuKcvh98Cppr3l38or1brWDr+rSWtzIJqwRepJS2jgkasrx8zQahGeUh+EbdFwqmflxv yw0XWtZ846Pf3mp3Hl2BjLaNEkKn6zIwcxMVjBVWmZSO230qpFZw/kpP5YgjuLfVLC7htpIpX9Bp p5nn/cRzc19SKqrbvwUEDjyoMCr5NI/J5NImt31m/e3vzHZR3o0xKNOLh7h3tpDBVIkaqyRRFdvG owq1f+X/AMpHWcPq+o2lvcSrp37zT0pC+noC3qEx19RkYcaUanUEVGBU28kaD+VF15lW8s9Zvzde pLdxR3UC24gr6vBpZigHqq8xZHZuX2QOmFXqH1Hy/wD9Tdd/9xGP+mKu+o+X/wDqbrv/ALiMf9MV d9R8v/8AU3Xf/cRj/piqld2Wkraym0813D3QRvQSXUkRC9PhDMqsQK9aDFWKwr5ZfVLK4iu7qLzC 2o2K3VnPcJKsy/WE+NZIgEuAvZq1HcDFWdeevMOq6LaaadMiWW5v75LMhojOQrRSyEpGstvyb91/ OMUMGT8+ms7q6sdS0h5rmykuY55bdhEW9C8e2Vlt2MrBeKrybmQHqMU0nNx+Y/mLUNK0i+8vaRym 1T64YbO4XnI/1QqgBIlgWINISCzcqdaHFUu1L8+YLDUJLSXRHoEZoZDcxpypK8QdwyjhEDGS8lSF xWlOb/nIGygMnraM6iK5t7WX/SUJUzqWZuPDk3SqcA3Mb1XFaULX/nIywuKcNDlJAufUVLiN2Bt4 3kHCi0k2T94VNEqNzitPRPORlbyLrjTKElOl3RkRW5KrfV2qAxC1APegxQv8j/8AKF6B/wBs20/5 MJiqr5k8u2fmCwj0+9klWyE8c9xFC5jMohPNY2daOq+oFb4SDtirDLf8j9ChdW+vzSenPFPEZrey nYLFb/VfTdp4JTIvpUpzqA3xAVxSgv8AoXny56MEQ1W+Kwi4Wr+hIzLPCsCqS8Z2jRF2/Vitp4Py m0o6PpWmyaheMNEhdNNnVxG8dw8yzi5IiCB2R414qwK/Tvihjenf84/WDJO2qajKJJJJ+EdoQsZj khiijLgoOUitDzLGpYn4izVYqbZ55Y8k6Z5cvdQubB2C6jI0j2/GNY46zSTBYwqggD1iKVp0xQyH FWD+TpaeXLQf4fnvKGX/AElPqXF/3r7j1Z0f23XFKc+v/wB+tcfdp3/ZTih3r/8AfrXH3ad/2U4q 71/+/WuPu07/ALKcVS7zHd6lH5e1STS/LFymppaTtYt6dhLScRMYj6azyF/jp8IU18DirzXT7r81 bb63pGqeVbXU4dTmmk1aeaycxSRwwRegAbdYo3IC1BMYJI47MMUqK2+tTWSmX8trEX1xGzSgaZcR wlUW4YjZ+Ufx2tuEVt6N0G2Kouzu/OiX/wCjbb8urC20zVrmGLUz9UnjU26Nxo7ii7cOasV4r3Fd yqiNe0T8x9S8ya1cz6PYalodxfw2Fva6ha8i6JMqQXJ9JEl9KCOeU+pzOxO2KoDTpPONzdos35ba dApvRMHaxlQc4gAiirUQjmx9Y/u+vw1OKoWxh80elYyXH5baZE7Jd3PBdMun9OYRn0i9W2DNEqsm 5O3EbjFUXoGqfmDp8kUGm/l5ZWSTQRrI5sbiFAxl3Zzzf4Q0jfDu4HxdNsVeswzTCFBP5XmaYKPV aMaeELU+IqGua0r0rihf6/8A361x92nf9lOKtNcEAkeVblj4AadX8bkYqhruR7m2ltz5Tv4hKjJ6 sTaYki8hTkjC72I7Yqxuf/EsM+nWuo6My2S6lYm31eUWUVwP9JX93LHayzBq/wA68fde+KXpuKHY q7FXYq7FXYqkvnj/AJQvX/8Atm3f/Jh8VSPyj508t2flnTNP1C8Wwv8AT7aKzu7S5BjkSW3QRuKH tVag+GKpv/j7yb/1d7f/AILFXf4+8m/9Xe3/AOCxV3+PvJv/AFd7f/gsVd/j7yb/ANXe3/4LFXf4 +8m/9Xe3/wCCxV3+PvJv/V3t/wDgsVWTfmF5MiheU6rC4RS3BCWc0FaKoFSfbFVTyJDPF5T05Z4n glZGkMUg4uokkZ1DDseLDbFU+xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVjvnqU2+j296Y3k hsr6zubn0lLssUU6s78VqTxG5piq/wDx95M/6u9v/wAF/Zirv8feTf8Aq72//BYq7/H3k3/q72// AAWKu/x95N/6u9v/AMFirv8AH3k3/q72/wDwWKu/x95N/wCrvb/8FiqUeb/Ovlu88s6np+n3i39/ 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 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 7: Figure 7

In Figure 7, we can see that there are different types of Flow Processors: * Bridge Processor: Consumes events from a Flow located in an Event Broker (i.e., Apache Kafka) and transcribes them to a single Flow (local or remote). * Collector Processor: Consumes events from N Flows located in an Event Broker and transcribes the aggregate to a single Flow (local or remote). * Distributor Processor: Consumes events from a single Flow and transcribes or broadcast to N Flows (local or remote). * Signal Processor: Consumes events from N Flows and produces new events to N Flows (local or remote)

To implement the previously described Subscription Processor, we can utilize some form of the Bridge Processor. Although we are initially considering the basic use case of subscription, it must be possible for the network to extend the processor types supported. In any case, the different FNAA servers involved must be aware the supported processor types, with the goal of informing the users the capabilities available in the FNAA server. For instance, the fact that a FNAA supports the Bridge Processor should enable the subscription commands in the FNAA, for users to create subscriptions using the Bridge Processor.

In summary, the IPC interface should support all the possible processors that the network may need although we are initially considering the subscription use case.

4.1.5. Flow Namespace User Agent (FNUA)

The FNUA is an application analogous to email clients such as Microsoft Office or Gmail. These applications implement either different network protocols to access mailboxes by means of IMAP and/or POP3. In the case of FNUA, the protocol implemented is the FNAP (Flow Namespace Accessing Protocol).

The FNUA is an application that acts as a client for the FNAA server. Only users that possess accounts in a Network Participant should be able to login to FNAA to manage Flow Namespaces. The FNUA could be any kind of user application: web application, desktop application, mobile application or even a cli tool.

In the Diagram of Figure 8 we can see the actions that the user can request to the FNUA.

High-level overview of the interactions between a user and the Flow Namespace User Agent component. image/svg+xml Print 2022-01-26T22:20:35+01:00 2022-01-26T22:20:35+01:00 2022-01-26T22:20:35+01:00 Adobe Illustrator 26.0 (Windows) 256 188 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAvAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq8 9/MX8wNb8veYtL0nTxapHfW09xLPc215dkGFkUKsdlyk359eNMVSC1/5yBhtUSLWNNea4Es7XU1m BHFDaretZQyFZnZ2ZnX4gP7MUpz5c/PHy/r+s2mk2Vhdi7vJYYYwwSgZoHnnJ36W/Di/uRihKbv8 8bvT9bv9N1CyiiS11eW2t5hyAm0+39VZ2Uu6oJomjWtWC0Ybd8Utxf8AORugyaZFepo17Ixe6E8E TQuY47RIZHk5cgrKUuB032PzxQjD+fuijU4tMfR75L4XMtte27CMvAIpRDzorNzNWqVU7Cu/Sqmm ofz70yW3vHGh3qXNreLZLZSNBHOxeGeZXaN3VoxS2PLkO+1emKqA/wCcj/KH1tYmsroQNZfXfWUx M3MQCcw+mHryoeNTQcv8n4sUI6X88NNttRsdOvdEv7W+ujW4gb0naGMyiIPSN3L/ABGrAbgV+lTS I82/mVf6K3m2OGK2ebQItNls45C3KQXsgSUuAwJC8hTjTfrihLLj/nILRrc6hFNo15DdWl2llb20 rQxyStIXozIzc4xSJv2SOm++KaZX5R/MOy8zXd7DbWNzaw2ENvPcXNz6aKpuoI7hIyvLnyCyHl8P H4eu4xQwnQv+chLK7tNXuLmzWaSC8hh0e0tHX1Z4LqVoojL6jcVcGOr9viXbFKJtP+cifLd3JaCD S71kuI3kmb93yhIklijDKG35GGpI2WoxWkw0v84zqutaRplnoVzG2pS2/J55YF4211ZNeRzLxdgf hQkr1oP5iFxQ9IxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVCS6RpsuqQarJArahbRPB BcGvJY5SC6jem5UYqksn5beRJLm3uZNEtpJ7WR5oJHXkQ8khlYmp+L94xah2B6YqirHyV5UsL2G+ stMggu7d7iWCZAQyvd09cjf9un0dsVW3PkbyjdSJJc6VBM8dzNeoZFLD17mnrOQTQ+pT4gdvbFUK Pyx8gKgRNCtIlEMlsREnp1jlAWQNwK8iwG7Hf3xVUuPy68j3N6t7caNby3SXL3oldST68rKzuane rIDQ7e2Kpbe/k75AnSKKLSoLW3F2t5dQxoOM5SKWJY3rXig+sFgFpQ9MVTN/y58huSX0CxZjClty MCchFGhjVA1Kj4Dx26jY4qoxflh+X8X1MpoVqDYSGa1YpVg7MGLMSav8Sg/HXFUZqnkjylqurQav qOlW91qVtxENzItWAQ8l5dm4nccq0xVAn8q/y7MV1F+gLT0711kuAEpVkJZSpBqlCx+xTFU0svKX luxt7y2s7CK3g1CJILyOOqq8UUIgRaA7BYhx2xVKPM35X+VNe0hdOe3FoYbWOxtbmFUZ4reJ1kSM LKsiFQ0Y6ivuMVUNG/J/yFpmn6baPpqX0umRPBb3l0A0xWSR5W5FeKn45WK7fD2xVNE/L/yYktvM ulQiW0e1ktpPi5I9gnpWxBr/ALrTYfjirIMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVQ8epafJXhcRmkr2/2h/fR1Lx/wCsvE1HtiqGs/MegXt01paahbz3Knj6 SSKSx4c/g3+Oimp41piqY4q7FXYq7FXYq7FXYq7FXYqoXd9Y2aq13cRW6saK0rqgJ8ByIxVDf4i8 v/8AVztP+R8f/NWKu/xF5f8A+rnaf8j4/wDmrFXf4i8v/wDVztP+R8f/ADVirv8AEXl//q52n/I+ P/mrFV0evaHI6xx6javI5CoizRkknYAAHFUdirsVdirsVdirsVQMmo3aSMq6XcyKpIEitbcWAPUc plND7jFVv6Tvf+rTd/8ABWn/AFXxV36Tvf8Aq03f/BWn/VfFXfpO9/6tN3/wVp/1XxV36Tvf+rTd /wDBWn/VfFXfpO9/6tN3/wAFaf8AVfFXfpO9/wCrTd/8Faf9V8Vd+k73/q03f/BWn/VfFXfpO9/6 tN3/AMFaf9V8VYjq/kHQtVkmkvNG1KR5JpbqINcwGOKeYHk8cf1jju1GIOxIGKUB5X/Kry35fuLC 9i0fUbrU9PZpIr2Wa1DF2UqSUWcJ9lqdMVZ7+k73/q03f/BWn/VfFDv0ne/9Wm7/AOCtP+q+Ku/S d7/1abv/AIK0/wCq+Ku/Sd7/ANWm7/4K0/6r4q79J3v/AFabv/grT/qvirv0ne/9Wm7/AOCtP+q+ Ku/Sd7/1abv/AIK0/wCq+Ku/Sd7/ANWm7/4K0/6r4qlmheYvMl/q11a3vl6axsIJZI4tQkljo4Q/ BWI/F8Q/aQstfbFVS7tLW585Wv1mFJvR0+ZohIoYKWmjDFQa0JApXFU2/Rmm/wDLJD/yLX+mKu/R mm/8skP/ACLX+mKu/Rmm/wDLJD/yLX+mKu/Rmm/8skP/ACLX+mKpR5v0rS28qaxW0h+GyndT6a1D JGzKwNNirAEHFWQYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWLedYPPUs+l/4YnEMAeT9JDlArEEL6Rr PFOOAIbkFAY7UOKsStNP/P6PSLiK51K3n1BxzhuQLRChSF/3YQW/BvUklTdqU9M9mHJSr3dh+d8m jWMa30Y1A6fdrevC9rHS9LObYuWt3qPTKr+64DnvULiqj9U/Pl7z1JJbRIpprITrE6BUij3uWiVi xBfjvUnrsMVXyH/nIG1lvjANPv4nZvqInMaFELXFK+mI6sA0PXso78qqoia6/P02tyUs9GE59T6v wZ6inomP4WcqQayjdvfwDKqceofn3NbM6afpUbNLdhRIXV1iXj9X+Et9pmDbnam5GKsz8sSecGW9 HmWKzR0npYPZM5DwcF3dXrxblXv9GwJUJ3irsVdirsVdiqFtdV0y7nmt7W7hnuLZilxDHIrvGwNC HUElTXxxVAP/AMplF/2zpP8Ak/Hiqc4q7FXYq7FUp83f8oprX/MBc/8AJlsVTbFXYq7FXYq7FXYq gZNC0OWRpJNOtnkclndoYyzMTUkkjcnFVv8Ah3y//wBWy0/5ER/804q7/Dvl/wD6tlp/yIj/AOac Vd/h3y//ANWy0/5ER/8ANOKu/wAO+X/+rZaf8iI/+acVd/h3y/8A9Wy0/wCREf8AzTiqB16z8taP oeo6vNpNtLDp1tNdyRpBFyZYIzIVWopUhcVY1e+dvy0s/MLaDNp8LXvrQwwtFbwvFIZzAFIfZfhN yOXsD7DFKTX/AObP5a2N3PDc6EqRxy3FvFKIrRy8ts/pkNFGzywh5AQplRajf5Kq9r+Zv5e3VveS weX/AFZLCCGe5gS2hZ6z3CW6ogp8bfvVbb5dcVbX82PybESma3hS4aNJBbLZCVz6qho1BjRlq/Lb fFVS/wDzU/Jux9Qy28ZSMyo7rYbc4pFjZRyRak8wRTtiqrN+Zf5OxzSRCKCRovXDmOyqK28ayMPs dSHAHvsaYqza10fyxdW0N1b6daSQTossTiCMckcclO613BxQq/4d8v8A/VstP+REf/NOKu/w75f/ AOrZaf8AIiP/AJpxV3+HfL//AFbLT/kRH/zTirv8O+X/APq2Wn/IiP8A5pxV3+HfL/8A1bLT/kRH /wA04qhtL8meVtL1CbUbDTYYb6dmd7gAs4L15cCxPpg16JQYq5/+Uyi/7Z0n/J+PFU5xV2KuxV2K pT5u/wCUU1r/AJgLn/ky2KptirsVdirsVdirsVQMkOuGRjHd2yxkngrW0jMFrsCwnWp96DFVvoeY P+W20/6RZP8AsoxV3oeYP+W20/6RZP8AsoxV3oeYP+W20/6RZP8AsoxV3oeYP+W20/6RZP8AsoxV 3oeYP+W20/6RZP8AsoxVZNZ63NE8M11ZSRSKUkjezkZWVhQqwNxQgjFUJB5bkt2DwR6XEygqrJpx UgGlRUT+wxVB6qmmWkvpatf6Hby3HOb07q1RGk40aSSklyC1PTBY+w8MUqEepeXYYvrUeteXo4qK PXWKJVpGyuo5C6p8LspHgSMVXMuhLeQ2TahoAvZAnoWpto/VZXC+nwT6zyIYBeNB4Yqjb3yoL1Qt 1FpkoDI/xWDV5RyLKu4uK/3kasR3pvihEnRb4s7FtOLSBxI31FqsJPthv3+/Lv44qiRb6+BQXloA Og+qSf8AZRirvQ8wf8ttp/0iyf8AZRirvQ8wf8ttp/0iyf8AZRirvQ8wf8ttp/0iyf8AZRirvQ8w f8ttp/0iyf8AZRirvQ8wf8ttp/0iyf8AZRiqWaFpvniDV7yfWNXtrrTHkc2lnHb0ZUYkr+8qhWm2 x57d++Kop/8AlMov+2dJ/wAn48VTnFXYq7FXYqlPm7/lFNa/5gLn/ky2KptiqT6r5q0zTrtbDjNe 6kyiQWFlE08wQmgeQL8MS+DSMoPbFVKz846ZLew2N5BdaVd3J42sV/CYlmaleMcoLxM3+Rz5e2Kp 7irsVdiqDuL66imaNNOuJ1FKSxtbhTUV25yo23TcYqp/pO9/6tN3/wAFaf8AVfFXfpO9/wCrTd/8 Faf9V8Vd+k73/q03f/BWn/VfFXfpO9/6tN3/AMFaf9V8Vd+k73/q03f/AAVp/wBV8Vd+k73/AKtN 3/wVp/1XxV36Tvf+rTd/8Faf9V8VYp5r8k6Z5nv/AK9qOmamkrWjWMiwy2Sq8JLMKhpXNVZyQQR7 1xSk035O+VZLCSxj0rV4Ld+ixXFmOJ9QPyUNIw5UREqQdl/mLMVUbd/ll5duYvSfSdVVRDbW68Lm 1WkVpD6Eaj99T7HUnf3GKq/ln8vtC8ua2dY07SNSN2YPqwE09pIioFRaqpm2b4Ca/wCW3Y0CrMP0 ne/9Wm7/AOCtP+q+KHfpO9/6tN3/AMFaf9V8Vd+k73/q03f/AAVp/wBV8Vd+k73/AKtN3/wVp/1X xV36Tvf+rTd/8Faf9V8Vd+k73/q03f8AwVp/1XxV36Tvf+rTd/8ABWn/AFXxVLNB82ajqerXlhca Be2EVtJIkd9KEMDrGSteRK7kjpHzHvTfFUU//KZRf9s6T/k/Hiqc4q7FXYq7FUp83f8AKKa1/wAw Fz/yZbFU2xVjnkG3Q+WrXVHIkvtbRdSv5z9ppblQ4Su/wxIViQdlUYqm2s6RZavplxp14nKC4XiS NmVuquh/ZdGoysNwRXFUL5Q1C51LytpF9dktdXNpDJO5HEPIUHJ1A/ZY/Evtiqb4q7FXYq7FXYq7 FXYq7FXYq7FWOeboPN0klm3l8oYwlzHeRvKIt5YuMEgPFj+7f4qCmKsWs9J/OySy1KG91O1iLQtD pjRceayCWErK7cCx/d+qPtfMVNQpVZNJ/Oq0he20/VNPuUAYR3d2r+sXabjyK0dQohPILU7im+Kp /wCSY/zBRr4+bpbWVW9A2ItQBxPA+uDQCq86cSd8UMoxV2KuxV2KuxV2KuxVBWmtaPeXU1pa3sE1 3bsyz26SKZUKHi3JAeQofbFUG/8AymUX/bOk/wCT8eKpzirsVdirsVSnzd/yimtf8wFz/wAmWxVN sVYrbR6x5Xea2gsJNU8vvI81mtp6f1m0MjF3haJ2jEkXJiUKHko+HjQVxSpPrWteadOji0G1uNN0 6/QGTXLoJEwt5FB5WsIZpGkZW+FnVVXr8VOOKGU2dnbWVpBZ2sYitraNIYIl6LHGoVVFfADFVbFX Yqg7jRtHuZmmuLG3mmenKSSJGY0FBUkE9Biqn/h3y/8A9Wy0/wCREf8AzTirv8O+X/8Aq2Wn/IiP /mnFXf4d8v8A/VstP+REf/NOKu/w75f/AOrZaf8AIiP/AJpxV3+HfL//AFbLT/kRH/zTirv8O+X/ APq2Wn/IiP8A5pxVAa9beVtF0a91a60mCS3sYmnkjht4mkYIK8UUhQWPbfFWE2n5sflBdNZqLKKJ 7qaKGSOS0iLQmeIyoZPSEq024niTQ9ehxS3c/mv+T8VnJPDZrPIkMkwt105lasfqAq1Y6KaxNWvT qe+Ko7R/Pv5W6pC4is4Fvo47uWTTzap6oFkoeQV4hKlCGX4t/oOKoK0/NP8AKiSF5bzTU0+jERxz 2kTuyrGsjvSH1VUKr92xVmPlz/BnmLSIdW0vT7eSxnLCKR7VYyeDFW+FlB2YEYoTL/Dvl/8A6tlp /wAiI/8AmnFXf4d8v/8AVstP+REf/NOKu/w75f8A+rZaf8iI/wDmnFXf4d8v/wDVstP+REf/ADTi rv8ADvl//q2Wn/IiP/mnFXf4d8v/APVstP8AkRH/AM04qo6b5R8s6ZeS31jptvBeTO0j3CoDIC/2 uLGpRTX7K0GKrH/5TKL/ALZ0n/J+PFU5xV2KuxV2KpT5u/5RTWv+YC5/5MtiqFbznAGI/ROrGhpU WMxH6sVa/wAaQf8AVo1b/pBm/piqTeTPN0MPk/QoTpeqOY9PtELx2UrI3GBBVWAoQexxSnP+NIP+ rRq3/SDN/TFCe20wnt4pwjxiVFcRyKUdeQrRlO6sO4xVUxVCXEWrtKTbXNvHFtxSS3eRh41YTRj/ AIXFVL0PMH/Lbaf9Isn/AGUYq70PMH/Lbaf9Isn/AGUYq70PMH/Lbaf9Isn/AGUYq70PMH/Lbaf9 Isn/AGUYq70PMH/Lbaf9Isn/AGUYq70PMH/Lbaf9Isn/AGUYqsnsdZuIXgnubKWGVSkkT2bsrKRQ hlNxQg4ql6+V4rcCRYdIhERVw404KFMQ+Bq+vtwA2PbFV8flgJCsUUOkrCFKKi6dReDciVAE9KH1 G+8+OKroNHkDFIH0sNHzDKliar620lQLjbnx+Lxpiq+XRrl3PqtprPKGQ87EkspQKy7z7gooBHgM VRENjrMEYigubKKMEkIlm6qCxJOwuO5NcVX+h5g/5bbT/pFk/wCyjFXeh5g/5bbT/pFk/wCyjFXe h5g/5bbT/pFk/wCyjFXeh5g/5bbT/pFk/wCyjFXeh5g/5bbT/pFk/wCyjFXeh5g/5bbT/pFk/wCy jFUs0Kx89w6veS6zqdnc6U8jG0t4oCJVjJPAcwU4U22b1Pn3xVFP/wAplF/2zpP+T8eKpzirEvPP m/VdAubKHT7FbsT293dXDMJW9NLUwiv7tWoD6+7NQCmKsXX/AJyD0BWeOfTLsSRO8bNGYpFLRkq3 2XJU1Uni3xU+eKaeqIzMisylGIBKGhIJ7bbYoSrzd/yimtf8wFz/AMmWxVNsVdiqR+RP+UI8vf8A bMs/+odMVTzFXYq7FUDJrNpHI0bR3JZCVJW0uWWoNNmWMgj3GKrf07Zf77u/+kO7/wCqWKu/Ttl/ vu7/AOkO7/6pYq79O2X++7v/AKQ7v/qlirv07Zf77u/+kO7/AOqWKu/Ttl/vu7/6Q7v/AKpYq79O 2X++7v8A6Q7v/qlirEvN3lnR/Md79dN3qdhc/V/q3O3s7kGq+p6Tg+lyUp67n4SK7eGKWLS/lNC8 UkQ8066sU0cUMsRtLtkeOONY2VwynlyCDFURH+WFvHwCeZtfVY1t1AFtd7m3DAV+D7Px/Cvbbr1x VdD+V+nQ3FxPD5g123kuLeO3LwW12jkxTicO7lGZzXbff3xVG6n+XugXupajqcd9qtnqGozNNJc2 9ncpIqtCsXphhFXjseXiCRt1xVNPKXl+x8u6rfX51TWdSF4OMcF5b3kiRAyFjx/d/wAoRen7Pvir K/07Zf77u/8ApDu/+qWKHfp2y/33d/8ASHd/9UsVd+nbL/fd3/0h3f8A1SxV36dsv993f/SHd/8A VLFXfp2y/wB93f8A0h3f/VLFXfp2y/33d/8ASHd/9UsVSzQfPWma1q15pltaXsctlI8Uk8tu4gLI SKeoK8CePSTie3XFUU//ACmUX/bOk/5Px4qxTzR+Y/mLQdavof0K19psE/p20kCSs7rHp4uZVdl5 8D6ssfFuJHHntVa4pQM/5v6sLX62/k+egil9SGSV1nUpCJHjaM25I/eURh7V9sVpBt+csy3EVtJ5 MlSeZoj6TOSztPGXHpcLdldmSMcakV70AJCtJg/5xavxvDH5SvP9Ea7FJTPGZRarVPTAtmPKTjJU NxC8G3Y7YrTJJ9XutY/Le/1O6sm06a50+7c2buJCoCSBTzAWodQGG3Q4oZVirsVSPyJ/yhHl7/tm Wf8A1DpiqeYq7FXYq7FXYq7FXYq7FXYq7FWJeaNa842V9dwaPpkl7GbeyksJFVPT9b61ILyOV2YE D0BHxoO53xVjdz5q/OWTQIbuHy7Hb6k19AjWgQSVs3hBkY8pwVYT8huBRaVp1xShYfPP52k3k8vk 1VVbSJra3LiguFl4ymqsXbmr7L2pX+bFVbWfOv5xWlvLdr5WjjhtpGrEriV5VrIqKODP8J4rVhQ7 jtXFVa382/nOsl3JP5TikDLB9VgSZEVOUc0knJi7s7AiNT0HYAE1xVPPJPmL8wdS1Ka38zeX49Jt kt+aTxycwZhKU4VqahkHMUxQzPFXYq7FXYq7FXYq0ro4JVgwBIJBruDQj6MVSd/+Uyi/7Z0n/J+P FU5xViXnDU/NdlqESaTDNNb3VnJHAYYBMFvvXhEZlbifTT0mkPJqLt40xSxGDz3+at/fWwbygtvE rM6S3FvcMYmq8XJGLIdlZd+KllZqbDFXrSBgoDkF6DkQKAnvQVNPvxQlXm7/AJRTWv8AmAuf+TLY qm2KpT5o1mXStKMlqizaldOtrpluxoJLqbaMN/kru7nsoJxVLfIS3Gm2Mvla9kMt7oZCRzleIns5 SzW0yqAAAFBiIGwZD2pirKMVdirsVQMmjWkkjSNJchnJYhbu5Vak12VZAAPYYqt/QVl/vy7/AOky 7/6q4q79BWX+/Lv/AKTLv/qrirv0FZf78u/+ky7/AOquKu/QVl/vy7/6TLv/AKq4q79BWX+/Lv8A 6TLv/qrirv0FZf78u/8ApMu/+quKoS9ttIs7mwt5pb31NSna1tuN3dEeosEtweX73Yenbt9OKsc0 7zx+X2oxO9lf388kNlJqM8KTX7OkMMccr1o5UtxmXZSanYb4pULX8x/yvuIrKQazcxm9cII5Lu8V oiyk1m/eUQVFOVaVPhviqpJ+YX5XLbSTrrdxII4zJwW5vwxAdkCjkyjkzoQAT+GKr4PPf5ZSW3rv rksB5yRGCW9uxKHhZVcemJGJ+2vT+BxVP9Eby3rlj9e0q9urq15vF6ou71fjjPFhR5FOxxQj/wBB WX+/Lv8A6TLv/qrirv0FZf78u/8ApMu/+quKu/QVl/vy7/6TLv8A6q4q79BWX+/Lv/pMu/8Aqrir v0FZf78u/wDpMu/+quKu/QVl/vy7/wCky7/6q4qluieQtA0bV7rV7UXDX93I8ksss8jD94aleNQr D/XDH3xVEv8A8plF/wBs6T/k/Hiqc4qwnzpJ+YcOsRX/AJfgSTTNOt3M1vJIa3Us6uppDGru4t+K PsQx+IKGJpirFNF1f8+tTtorgW0cNpOv7ueWK2il4G6K82hkcFXEA5d0IpTfqpeh+SP8T/oCP/E4 ZdZMkjTgmEoA7l0WP0SRxRGCfFvUHqKEqER5u/5RTWv+YC5/5MtiqbYqxjS/9znma41hvi03SDJY 6T/K9xXjeXAqN+LL6CH2k7Niq7zfFLp8lr5ptULzaSGXUI0FWm06Qg3Cgd2iKrMn+qQPtHFWRxSx TRJLE6yRSKGjkUhlZWFQQRsQRiq7FXYql8v6f9R/S+qelyPp8vU5ca7VptWmKrf+dk/5c/8Akrir v+dk/wCXP/krirv+dk/5c/8Akrirv+dk/wCXP/krirv+dk/5c/8Akrirv+dk/wCXP/kriqC1XRb/ AFaKKHUrawuo4JBPCsgl+GQKyBxTvxdh9OKUutvIen2sckcGiaNGs0RglpA1WiKCMxkkV4lBQjFV GH8ttEgkiki8v6Ijw8TGRA2xQ1XtvQ774qvH5e6UECLoOigBWQEQMG4uxZl5AVoSx2xVVTyNZIFC aLo68JWnQiFqiVyjNIDSvJjEtT7YqmGk6NfaRafVNLtNOsrYu0hhhSRFLuasxA7nFUZ/zsn/AC5/ 8lcUO/52T/lz/wCSuKu/52T/AJc/+SuKu/52T/lz/wCSuKu/52T/AJc/+SuKu/52T/lz/wCSuKpZ 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 vcf0R/c/7sr9X/e8eNeXDelcVf/Z xmp.iid:ec1ebfb1-48cf-f940-a82b-2454716613b1 xmp.did:ec1ebfb1-48cf-f940-a82b-2454716613b1 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:ec1ebfb1-48cf-f940-a82b-2454716613b1 2022-01-26T22:20:35+01:00 Adobe Illustrator 26.0 (Windows) / Print Adobe Illustrator False True 1 942.814350 689.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 8: Figure 8

The main goal of the FNUA is to provide the user with access to Flow Namespaces and the flows hosted in them. A user may have many Flow Namespace and many Flows in each of them. By means of the FNUA, the user can manage the Flow Namespaces and the Flows in them. Also, the FNUA will provide the capabilities required to subscribe to external Flows, whether local to the FNAA, local to the NP or remote (in a different NP FNAA server).

4.2. Communications Examples

In this section, two usage examples of Network Participants communications are provided. The first one, we call unidirectional, since one NP subscribes to a remote Flow of a different NP. The second one, we call it bidirectional, since now these NP have mutual subscriptions.

4.2.1. Unidirectional Subscription

In the diagram of Figure 9, we can see an integration between two NP. In this case, there is a FlowA hosted in the Orange NP to which the FlowB in the Blue NP is subscribed. Both FlowA and FlowB count with a queue hosted in the Flow Events Broker, which could be an Apache Kafka instance for example. However, it must be possible to employ any Flow Events Broker of the NP's choice.

Example of a unidirectional subscription among two Network Participants. image/svg+xml Print 2022-01-26T22:23:19+01:00 2022-01-26T22:23:19+01:00 2022-01-26T22:23:19+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/aAAwDAQACEQMRAD8A9A32m382l6dBogsbW9eN JZZ7y2+sIYkVQyBUaI8mLj4q9K/MKUOdD88Byyy6EULVCGwm2XwqJ8VTex0y+S1Rb6z0+e6FfVlh UwxkkkjijJKQANt2OKGnsf8AchCP0dZ7xSmnLbZo/wDirFKI+of9q2z/AOC/684od9Q/7Vtn/wAF /wBecVd9Q/7Vtn/wX/XnFUJqkc1pZSXEOj2czRglgHA4qBUuQY1qF60BqcQpLFbrz75ctbmW1nks EuIOXqx/UpSRxNCdjuKjqMvOOPe4wzTPRNfLev6Rrc0RtFsbu2d2jdoYChVhGX/aJ8PDIyxgCwWc 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 xmp.iid:e19a3ff4-91e2-ad41-b94a-53d3cd4bf353 xmp.did:e19a3ff4-91e2-ad41-b94a-53d3cd4bf353 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf xmp.iid:85f7c93a-82cd-9a42-a29f-ac2ae7add6a4 xmp.did:85f7c93a-82cd-9a42-a29f-ac2ae7add6a4 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:85f7c93a-82cd-9a42-a29f-ac2ae7add6a4 2022-01-26T22:23:06+01:00 Adobe Illustrator 26.0 (Windows) / saved xmp.iid:e19a3ff4-91e2-ad41-b94a-53d3cd4bf353 2022-01-26T22:23:19+01:00 Adobe Illustrator 26.0 (Windows) / Print Adobe Illustrator False True 1 595.275574 841.889832 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 9: Figure 9

The steps followed to set up a subscription to a remote flow are: 1. A user of the Blue NP creates a new subscription to remote FlowA by means of the Flow Namespace User Agent (FNUA). 2. The FNUA connects to the Flow Namespace Accessing Agent (FNAA) of the Blue NP to inform the user request. 3. The FNAA in the Blue NP discovers the remote FNAA to which it must connect to obtain the flow connection parameters. First, it needs to authenticate and, if allowed, the connection parameters will be returned. 4. Once the FNAA in the Blue NP has all the necessary information, it will set up a new Processor that connects the flow in the Orange NP to a flow in the Blue NP. 5. Once the subscription is brought up, every time a Producer in the Orange NP writes an event to FlowA, the Flow Processor will receive it, since it is subscribed to it. Then, the Flow Processor will write that event to FlowB in the Blue NP. 6. From now on, every Consumer connected to FlowB will receive the events published on FlowA.

In case the user owner of FlowA in the Orange NP wishes to revoke the access, it must be able to do so by means of security credentials revoking against the Identity & Access Manager of the Orange NP.

4.2.2. Bidirectional Subscription

In Figure 10 we can see an example of all the components needed to set up a flow integration between two different NP. In this case, there are two flows being connected: * FlowA of the Orange NP with FlowB of the Blue NP * FlowC of the Blue NP with FlowD of the Orange NP

Example of a bidirectional subscription among two Network Participants. image/svg+xml Print 2022-01-26T22:24:36+01:00 2022-01-26T22:24:36+01:00 2022-01-26T22:24:36+01:00 Adobe Illustrator 26.0 (Windows) 256 108 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAbAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9MabpunNp1qzWsJJhjJJ jWpPEe2Koj9Gab/yyQ/8i1/pirv0Zpv/ACyQ/wDItf6Yqh5NN079IwD6rDQwykj017NH7YqiP0Zp v/LJD/yLX+mKu/Rmm/8ALJD/AMi1/pirv0Zpv/LJD/yLX+mKqF/Z2FvY3FwlnAXhieRQY1oSqkiu 3tiApLCLrz75ctbmW1nksEuIOXqx/UpSRxNCdjuKjqMvOOPe4wzTPRNfLev6Rrc0RtFsbu2d2jdo YChVhGX/AGifDwyMsYAsFnDLImiKZT+jNN/5ZIf+Ra/0ypud+jNN/wCWSH/kWv8ATFXfozTf+WSH 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 wPT/AN5fQk/3u+t/W6fFy9T6z+95eHL9WKv/2Q== xmp.iid:fbb607b1-37e8-fe43-bdb7-9326d0f23a17 xmp.did:fbb607b1-37e8-fe43-bdb7-9326d0f23a17 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:fbb607b1-37e8-fe43-bdb7-9326d0f23a17 2022-01-26T22:24:36+01:00 Adobe Illustrator 26.0 (Windows) / Print Adobe Illustrator False True 1 2953.879883 1245.549805 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 10: Figure 10

Each Flow has its corresponding Queue hosted in the NP Flow Events Broker. Also, there is one Flow Processor for each connection, meaning that these components are in charge of reading new events on source flows to write them to the destination flows as soon as received.

Also, we can see that in order to connect FlowB to FlowA, a connection from the Blue NP's FNAA has been initiated against the Orange NP's FNAA. This connection uses the FNAP to interchange the flow connection details. Analogously, the FNAA connection to set up the integration of FlowC with FlowD has been initiated by the Orange NP's FNAA.

After the flow connection details are obtained, the different Flow Processors are set up to consume and produce events from and to the corresponding Queue in the different NPs.

Once the two processors are initialized, all the events produced to FlowA in the Orange NP will be forwarded to FlowB in the Blue NP; and all the events produced to FlowC in the Blue NP will be forwarder to FlowD in the Orange NP.

5. Event Streaming Open Network Protocol

The protocol to be used in an Event Streaming Open Network is a key component of the overall architecture and design. This chapter is dedicated to thoroughly describe this protocol.

5.1. Protocol definition methodology

It is now necessary to specify the protocol needed for the Flow Namespace Accessing Agent or FNAA, which we have named the Flow Namespace Accessing Protocol or FNAP. In the diagram of Figure 11 we can see how an FNAA client connects with a FNAA server by means of the FNAP.

FNAA client and server communicate using FNAP. image/svg+xml Print 2022-01-26T22:24:36+01:00 2022-01-26T22:24:36+01:00 2022-01-26T22:24:36+01:00 Adobe Illustrator 26.0 (Windows) 256 108 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAbAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9MabpunNp1qzWsJJhjJJ jWpPEe2Koj9Gab/yyQ/8i1/pirv0Zpv/ACyQ/wDItf6Yqh5NN079IwD6rDQwykj017NH7YqiP0Zp v/LJD/yLX+mKu/Rmm/8ALJD/AMi1/pirv0Zpv/LJD/yLX+mKqF/Z2FvY3FwlnAXhieRQY1oSqkiu 3tiApLCLrz75ctbmW1nksEuIOXqx/UpSRxNCdjuKjqMvOOPe4wzTPRNfLev6Rrc0RtFsbu2d2jdo YChVhGX/AGifDwyMsYAsFnDLImiKZT+jNN/5ZIf+Ra/0ypud+jNN/wCWSH/kWv8ATFXfozTf+WSH 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 wPT/AN5fQk/3u+t/W6fFy9T6z+95eHL9WKv/2Q== xmp.iid:fbb607b1-37e8-fe43-bdb7-9326d0f23a17 xmp.did:fbb607b1-37e8-fe43-bdb7-9326d0f23a17 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:fbb607b1-37e8-fe43-bdb7-9326d0f23a17 2022-01-26T22:24:36+01:00 Adobe Illustrator 26.0 (Windows) / Print Adobe Illustrator False True 1 2953.879883 1245.549805 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 11: Figure 11

In order to define a finite state machine for the protocol and the different stimuli that cause a change of state, the model presented by M.Wild (Wild, 2013) in her paper "Guided Merging of Sequence Diagrams" will be employed. This model is beneficial since it provides an integrated method both for client and server maintaining the stimuli relationship that trigger a change of state in each component.

Merged Sequence Diagram for SMTP proposed by Wild, 2013. image/svg+xml Print 2022-01-26T22:36:54+01:00 2022-01-26T22:36:54+01:00 2022-01-26T22:36:54+01:00 Adobe Illustrator 26.0 (Windows) 256 128 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAgAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q8R83/mb5tsJvMS2+ rR2moWM91BZaH+jpJX+rwqpiuvrB5IOdeXxjia0G+KWj+ePmuzuri1bQjexWsGoXEl3I4jdhb3Nw kRVURAYwIAhota9TXqqy7yj55806t5zutJ1KxgtLC2S6iEsXqsslza3PpsI5XVVNIypK0B74q9Bx Q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYql+mf726t/wAxa/8AUJBiqYYq8HP/ADkHr2l3upjV bKy1BFemnW9jII1Cev6IaW5Mk/D7NSskStU9OPRSny/npqRtluz5Vk+qXFyNOs5FvFZpL94Ulity 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 xmp.iid:4980d862-c941-b24d-b40a-c1313ae4ada1 xmp.did:4980d862-c941-b24d-b40a-c1313ae4ada1 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:4980d862-c941-b24d-b40a-c1313ae4ada1 2022-01-26T22:36:54+01:00 Adobe Illustrator 26.0 (Windows) / Print Adobe Illustrator False True 1 1626.913582 797.699697 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 12: Figure 12

In Figure 12 we have the method proposed by Wild for SMTP, in which there are boxes representing states and arrows representing transitions. Each transition has a label composed of the originating stimulus that triggers the transition and a subsequent stimulus effect triggered by the transition itself. For instance, when a client connects to an SMTP Server, the client goes from "idle" state to "conPend" state. The label of this transition includes "uCon" as the stimulus triggering the transition, which triggers the effect "sCon". Then, on the diagram for the server we can see that the "sCon" triggers the transition from "waiting" state to "accepting" state in the server.

This method will be used to define the states and transitions for the Flow Namespace Accessing Protocol both for client and server.

5.2. Flow Namespace Accessing Protocol (FNAP)

Using the model proposed by Wild described previously, we define the finite-state machine for the FNAA Server, which we can see in Figure 13.

Finite-state machine for the Flow Namespace Accessing Protocol. image/svg+xml Print 2022-01-26T22:40:40+01:00 2022-01-26T22:40:40+01:00 2022-01-26T22:40:40+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/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FWP8A m2487wxwf4WtbO5kKym4+usygEKPSC8GTqxNfbuMVSOw1X845ZrdbvRNMt4pY3Mz+uzGJzDwjUhX NaXCl241/dEAfGDiqDttW/PKAy+voen3oIh9IiZLenT1fh9SSpoT+1So2qDilnukPqT6ZatqiJHq JjX64kX92JafHw+Jzxr9mprTrihF4q7FXYq7FXYq7FUPYXZuoGlK8Ss08VAa/wBzM8Vfp4VxVEYq 7FXYq7FXYqlXmWXzLFpyny5BbT6i00S8bwssIiZwJXYoVb4V32r8jirDrPWvzzLRi78v6UFIX1Sk 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 xmp.iid:ea3a113a-71b2-f04f-8610-acc1f2146172 xmp.did:ea3a113a-71b2-f04f-8610-acc1f2146172 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:c9914b06-205d-4060-b620-fae57f2f5102 xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:ea3a113a-71b2-f04f-8610-acc1f2146172 2022-01-26T22:40:40+01:00 Adobe Illustrator 26.0 (Windows) / Print Adobe Illustrator False True 1 2200.000000 828.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 13: Figure 13

The model in right side of Figure 13 shows that the FNAA server starts in a "waiting" state, which basically means that the server has successfully set up the networking requirements to accept client connections. Then, when a client connects, a transition is made to "accepting" state, in which internally the authentication procedure is made. If the authentication is successful, a transition is made to "ready" state, meaning that the client can now execute commands on the FNAA server.

For each command that the client executes, a transition is made to "cmdRecvd" state. Then, a response is returned to the client, transitioning again to "waiting" state. When the client executes the "Quit" command, a transition is made to the "waiting" state and the server must free all used networking resources for the now closed connection.

On the left side of Figure 13, we also have the client state machine with its corresponding transitions. The client triggers a connection to the server and once established, an authentication is needed. Once the authentication is correctly done, the client can start requesting commands to the server. For each command executed by the client, a transition is made to "cmdPend" state, until a response is returned by the server.

Eventually, a "Quit" command will be executed by the client and the connection will be closed.

5.3. Implementation

In this section, we provide an approach for the overall implementation of the proposed Event Streaming Open Network. Considering the components defined previously for the architecture, we will define which existing tools can be leveraged and those that require development.

5.3.1. Objectives

The objective of this implementation is to provide specifications for an initial implementation of the overall architecture for the Event Streaming Open Network. Whenever it is possible, existing tools should be leveraged. For those components that need development, a thorough specification is to be provided.

5.3.1.1. Implementation overview

In Figure 14, we have a diagram of the overall implementation proposal. The components that have the Kubernetes Deployment icon are the ones to be managed by the FNAA server instance. Then, we have a Kafka Cluster that provides a Topic instance for each flow. Finally, the DNS Infrastructure is leveraged.

Implementation overview using Kubernetes, Apache Kafka, DNS Bind9 and the Flow CLI tool.
Figure 14: Figure 14

5.4. Existing components

In this section, we describe the existing software components that can be leveraged for implementation.

5.4.1. Flow Events Broker (FEB)

Since there are currently many implementations for this component, it is necessary to develop the needed integrations of other components of the architecture to the main market leaders. Thus, we will consider the following Flow Events Broker for the implementation: Apache Kafka, AWS SQS and Google Compute PubSub.

In summary, this component does not need to be developed from scratch. However, the FNAA will need to be able to communicate with the different Flow Events Broker, meaning that it must implement their APIs as a client.

5.4.2. Flow Name Service (FN)

This component can be completely implemented by leveraging on the ISC Bind9 software component, which is the de facto leader for DNS servers. A given NP will need to deploy a Bind9 Nameserver and enable both DNSSEC and DNS Dynamic Update.

The impact of adopting Bind9 for the implementation means that the FNAA component needs to be able to use a remote DNS Server to manage the Flow URI registration, deregistration and execute recursive DNS resolution.

5.4.3. Components to be developed

In this section, we describe a set of tools that require development. These components, especially the FNAA, are the core components of every Network Participant. Moreover, these are the components that implement the network protocol FNAP.

Since these are the core components of the network, they are the natural candidates for validation. In the next chapter, we will show the feasibility of the core network components in the form of a Proof of Concept.

5.4.3.1. Flow Namespace Accessing Agent (FNAA)

The Flow Namespace Accessing Agent is a server component that triggers the creation of child processes that implement the different Flow Processors. This means that the instance running the FNAA will bring up new processes for each processor. One way of implementing this functionality can be a parent process that creates new child processes for each processor. However, this would imply the need of creating and managing different threads in a single FNAA instance.

The problem with the approach of a parent process and child processes for the FNAA is on the infrastructure level. The more processor a FNAA needs to manage, the more compute resources the FNAA would need. In the current cloud infrastructure context, this is problem because it means that additional compute resources should be assigned to the FNAA, depending on the quantity of processors and the required resources for each of them. In summary, this approach would be vertically scalable but not horizontally scalable.

Then, to avoid the scalability issue, the approach we propose is by implementing a Cloud Native application. By leveraging on Kubernetes, it is possible to trigger the creation of Deployments, which are composed of Pods. Each Pod can contain a given quantity of containers, which are processes running in a GNU/Linux Operating System. In this way, we can dedicate a Pod to run the FNAA server and different Pods to run the Processors. This approach provides a convenient process isolation and enables both horizontal and vertical scalability.

Moreover, the way in which the FNAA would bring up and manage Processor instances would be though an integration with the underlaying Kubernetes instance, by means of the Kubernetes API. The result is a Cloud Native application that leverages the power and flexibility of Kubernetes to manage the Processor instances.

On the other hand, the programming language for the FNAA must also be defined. For this, we consider that it must be possible to implement the FNAA and the Flow Processors in different programming languages. For the FNAP it is recommended to employ Golang, since Kubernetes CLI tool is implemented in this language and there are several libraries available for integration. As for the Flow Processors, it must be possible to use any programming language as long as the IPC interface is correctly implemented.

Regarding the IPC interface for the communications between the FNAA and the Flow Processors, the recommendation is to employ gRPC together with Protobuf. The rationale for choosing this this technology is the fact that gRPC enables binary communications, which are the desired type of communication for systems integration. Then, both the FNAA and the Flow Processors must share this Protobuf interface definition and implement it accordingly through gRPC.

Finally, the FNAA must implement the protocol we have named FNAP, which provides the main set of functionalities for the Event Streaming Open Network. The implementation of FNAP must be stateful, in the sense that it is connection-based. Additionally, the implementation must be text-based, with the goal that humans can interact with FNAA servers in the same way that it is possible for SMTP servers. The transport protocol must be TCP with no special definition for a port number, since the port should be able to be discovered by means of DNS SRV Resource Records.

Regarding security for the FNAA servers, TLS must be supported. This means that any client can start a TLS handshake with the FNAA servers before issuing any command.

In conclusion, the implementation of the FNAA over Kubernetes provides the needed flexibility and set of capabilities required for this component. It is recommended to implement the FNAA in Golang and enable the implementation of Flow Processors in any programming language as long as the Protobuf interface is correctly implemented. Finally, the FNAA must implement the protocol FNAP in a connection-based and text-based manner.

5.4.3.2. Flow Namespace User Agent (FNUA)

The Flow Namespace User Agent (FNUA) can have different implementations as long as they comply with the protocol FNAP.

We propose the initial availability of a CLI tool that acts as a Flow Namespace User Agent. This CLI tool must provide a client implementation of all the functionalities available in the FNAA server. Among the functionalities to be implemented as a must, we can mention: * Discover the FNAA server for a given Flow URI. * Connect to the FNAA server to manage Flow Namespaces and Flows, as exemplified in Figure 8.

Additionally, the FNUA should be able to discover the Authoritative FNAA server for a given Flow Namespace. This discovery shall be performed by leveraging on the DNS-SD specification. Refer to Annex D to review the discovery process.

Regarding the implementation of the CLI tool, it is recommended to employ Golang together with Cobra, a library specialized to create CLI tools. In Figure 15 we have a diagram that shows the different functionalities that the CLI tool should implement.

Flow CLI parameters diagram.
Figure 15: Figure 15

6. Proof of Concept

In this section, we will focus on providing a minimum implementation of the main Event Streaming Open Network component: the Flow Namespace Accessing Agent. This implementation should serve as a Proof of Concept of the overall Event Streaming Open Network proposal.

As described in the previous section, the Flow Namespace Accessing Agent (FNAA) is the main and core required component for the Open Network. All Network Participants must deploy an FNAA server instance in order to be part of the network. The FNAA actually implements a server-like application for the Flow Namespace Accessing Protocol (FNAP). Then, the first objective of this Proof of Concept is to show an initial implementation of the FNAA server component.

On the other hand, the FNAA is accessed by means of a Flow Namespace User Agent (FUA). This component acts as a client application that connects to a FNAA. Also, this component can take different forms: it could be a web-based application, a desktop application or even a command line tool. For the purposes of this Proof of Concept, we will implement a CLI tool that acts as a client application for the FNAA. Thus, the second objective of this PoC is to provide an initial implementation of the FNUA client component.

In the following sections, we will first describe the minimum functionalities considered for validating the overall proposal for the Event Streaming Open Network. This minimum set of requirements for both the FNAA and the FNUA will compose the Proof of Concept.

Afterwards, we will describe the technology chosen for the initial implementation of both the FNAA and the FNUA. Then, a description of how these tools work in isolation will be provided. Subsequently, we will review different use cases to prove how the network could be used by network participants and its users.

Lastly, we will provide a conclusion for this Proof of Concept, where we mentioning if and how the minimum established requirements have been met or not.

6.1. Minimum functionalities

Network Participants system administrators must be able to run a Server Application that acts as FNAA.

Users using a Client Application actiong as a FNUA must be able to: 1. Access the flow account and operate its flows. 2. Create a new flow. 3. Describe an existing flow. 4. Subscribe to an external flow.

6.2. FNAA - Server application

The FNAA server application must implement FNAP as described in Section 6. Basically, the FNAA will open a TCP port on all the IP addresses of the host to listen for new FNUA client connections.

The chosen language for the development of the FNAA is GoLang. The reason for choosing GoLang is because Kubernetes is written in this language and there is a robust set of libraries available for integration. Although there is no integration built with Kubernetes for this Proof of Concept, the usage of GoLang will enable a seamless evolution of the FNAA application. In future versions of the FNAA codebase, new functionalities leveraging Kubernetes will be easier to implement than if using a different programming language.

When the FNAA server application is initialized, it provides debug log messages describing all client interactions. In order to start the server application, a Network Participant system administrator can download the binary and execute it in a terminal:

ignatius ~ 0$./fnaad
server.go:146: Listen on [::]:61000
server.go:148: Accept a connection request.

Now that the 61000 TCP port is open, we can test the behaviour by means of a raw TCP using telnet command in a different terminal: ~~~ ignatius ~ 1$telnet localhost 61000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 fnaa.unix.ar FNAA ~~~ We can now see that the server has provided the first message in the connection: a welcome message indicating its FQDN fnaa.unix.ar.

On the other hand, the server application starts providing debug information for the new connection established:

ignatius ~ 0$./fnaad
server.go:146: Listen on [::]:61000
server.go:148: Accept a connection request.
server.go:154: Handle incoming messages.
server.go:148: Accept a connection request.

6.3. FNUA - Client application

In order to test the FNAA server application, a CLI-based FNUA application has been developed. The chosen language for this CLI tool is also GoLang. The reason for choosing GoLang for the FNUA is because of its functionalities for building CLI tools, leveraging on the Cobra library. Thus, the FNUA for the PoC is an executable file that complies with the diagram in Figure 14.

One of the requirements for the flow CLI tool is a configuration file that defines the different FNAA servers together with the credentials to use. An example of this configuration file follows:

ignatius ~/ 0$cat .flow.yml
agents:
  -
    name: fnaa-unix
    fqdn: fnaa.unix.ar
    username: test
    password: test
    prefix: unix.ar-
  -
    name: fnaa-emiliano
    fqdn: fnaa.emiliano.ar
    username: test
    password: test
    prefix: emiliano.ar-

namespaces:
  -
    name: flows.unix.ar
    agent: fnaa-unix
  -
    name: flows.emiliano.ar
    agent: fnaa-emiliano

In this file, we can see that there are two FNAA instances described with FQDN fnaa.unix.ar and fnaa.emiliano.ar. Then, there are two namespaces: one called flow.unix.ar hosted on fnaa-unix and second namespace flows.emiliano.ar hosted on fnaa-emiliano. This configuration enables the FNUA to interact with two different FNAA, each of which is hosting different Flow Namespaces.

Once the configuration file has been saved, the flow CLI tool can now be used. In the following sections, we will show how to use the minimum functionalities required for the Open Network using this CLI tool.

6.4. Use cases

### Use case 1: Authenticating a user After the connection is established, the first command that the client must execute is the authentication command. As previously defined in Chapter 5, every FNAA client must first authenticate in order to execute commands. Thus, the authentication challenge must be supported both by the FNAA as well as the FNUA.

It is worth mentioning that the chosen authentication mechanism for this PoC is SASL Plain. This command can be extended furtherly with other mechanisms in later versions. However, this simple authentication mechanism is sufficient to demonstrate the authentication step in the FNAP.

The SASL Plain Authentication implies sending the username and the password encoded in Base64. The way to obtain the Base64 if we consider a user test with password test, is as follows:

ignatius ~ 0$echo -en "\0test\0test" | base64
AHRlc3QAdGVzdA==

Now, we can use this Base64 string to authenticate with the FNAA. First, we need to launch the FNAA server instance:

ignatius~/ $./fnaad --config ./fnaad_flow.unix.ar.yaml
main.go:41: Using config file: ./fnaad_flow.unix.ar.yaml
main.go:57:     Using config file: ./fnaad_flow.unix.ar.yaml
server.go:103: Listen on [::]:61000
server.go:105: Accept a connection request.

Then, we can connect to the TCP port in which the FNAA is listening:

ignatius ~ 1$telnet localhost 61000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 fnaa.unix.ar FNAA
AUTHENTICATE PLAIN
220 OK
AHRlc3QAdGVzdA==
220 Authenticated

Once the client is authenticated, it can start executing FNAP commands to manage the Flow Namespace of the authenticated user. For simplicity purposes, in this Proof of Concept, we will be using a single user.

In the case of the CLI tool, there is no need to perform an authentication step, since every command the user executes will be preceded by an authentication in the server.

6.4.1. Use case 2: Creating a flow

Once the authentication is successful, the client can now create a new Flow. The way to do this using the CLI tool would be:

ignatius ~/ 0$./fnua create flow time.flow.unix.ar
Resolving SRV for fnaa.unix.ar. using server 172.17.0.2:53
Executing query fnaa.unix.ar. IN 33 using server 172.17.0.2:53
Executing successful: [fnaa.unix.ar.    604800  IN      SRV     0 0 61000 fnaa.unix.ar.]
Resolving A for fnaa.unix.ar. using server 172.17.0.2:53
Executing query fnaa.unix.ar. IN 1 using server 172.17.0.2:53
Executing successful: [fnaa.unix.ar.    604800  IN      A       127.0.0.1]
Resolved A to 127.0.0.1 for fnaa.unix.ar. using server 172.17.0.2:53
C: Connecting to 127.0.0.1:61000
C: Got a response: 220 fnaa.unix.ar FNAA
C: Sending command AUTHENTICATE PLAIN
C: Wrote (20 bytes written)
C: Got a response: 220 OK
C: Authentication string sent: AHRlc3QAdGVzdA==
C: Wrote (18 bytes written)
C: Got a response: 220 Authenticated
C: Sending command CREATE FLOW time.flow.unix.ar
C: Wrote (31 bytes written)
C: Server sent OK for command CREATE FLOW time.flow.unix.ar
C: Sending command QUIT
C: Wrote (6 bytes written)

The client has discovered the FNAA server for Flow Namespace flow.unix.ar by means of SRV DNS records. Thus, it obtained both the FQDN of the FNAA together with the TCP port where it is listening, in this case 61000. Once the resolution process ends, the FNUA connects to the FNAA. First, the FNUA authenticates with the FNAA and then it executes the create flow command.

If we were to simulate the same behavior using a raw TCP connection, the following steps would be executed: ~~~ ignatius ~ 1$telnet localhost 61000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 fnaa.unix.ar FNAA AUTHENTICATE PLAIN 220 OK AHRlc3QAdGVzdA== 220 Authenticated CREATE FLOW time.flows.unix.ar 220 OK time.flows.unix.ar ~~~

Now, the client has created a new flow called time.flows.unix.ar located in the flows.unix.ar namespace. The FNAA in background has created a Kafka Topic as well as the necessary DNS entries for name resolution.

6.4.2. Use case 3: Describing a flow

Once a flow has been created, we can obtain information of if by executing the following command using the CLI tool:

ignatius ~/ 1$./fnua describe flow time.flow.unix.ar
Resolving SRV for fnaa.unix.ar. using server 172.17.0.2:53
Executing query fnaa.unix.ar. IN 33 using server 172.17.0.2:53
Executing successful: [fnaa.unix.ar.    604800  IN      SRV     0 0 61000 fnaa.unix.ar.]
Nameserver to be used: 172.17.0.2
Resolving A for fnaa.unix.ar. using server 172.17.0.2:53
Executing query fnaa.unix.ar. IN 1 using server 172.17.0.2:53
Executing successful: [fnaa.unix.ar.    604800  IN      A       127.0.0.1]
Resolved A to 127.0.0.1 for fnaa.unix.ar. using server 172.17.0.2:53
C: Connecting to 127.0.0.1:61000
C: Got a response: 220 fnaa.unix.ar FNAA
C: Sending command AUTHENTICATE PLAIN
C: Wrote (20 bytes written)
C: Got a response: 220 OK
C: Authentication string sent: AHRlc3QAdGVzdA==
C: Wrote (18 bytes written)
C: Got a response: 220 Authenticated
C: Sending command DESCRIBE FLOW time.flow.unix.ar
C: Wrote (33 bytes written)
C: Server sent OK for command DESCRIBE FLOW time.flow.unix.ar
Flow time.flow.unix.ar description:
flow=time.flow.unix.ar
type=kafka
topic=time.flow.unix.ar
server=kf1.unix.ar:9092
Flow time.flow.unix.ar described successfully
Quitting
C: Sending command QUIT
C: Wrote (6 bytes written)

In the output of the describe command we can see all the necessary information to connect to the Flow called time.flow.unix.ar: (i) the type of Event Broker is Kafka, (ii) the Kafka topic has the same name of the flow and (iii) the Kafka Bootstrap server with port is provided. If we were to obtain this information using a manual connection, the steps would be:

ignatius ~ 1$telnet localhost 61000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 fnaa.unix.ar FNAA
AUTHENTICATE PLAIN
220 OK
AHRlc3QAdGVzdA==
220 Authenticated
DESCRIBE FLOW time.flows.unix.ar
220 DATA
flow=time.flows.unix.ar
type=kafka
topic=time.flows.unix.ar
server=kf1.unix.ar:9092
220 OK

Now, we can use this information to connect to the Kafka topic and start producing or consuming events.

6.4.3. Use case 4: Subscribing to a remote flow

In this section, we will show how a subscription can be set up. When a user commands the FNAA to create a new subscription to a remote Flow, the local FNAA server first needs to discover the remote FNAA server. Once the server is discovered by means of DNS resolution, the local FNAA contacts the remote FNAA, authenticates the user and then executes a subscription command.

Thus, the initial communication between the FNUA and the FNAA, in which the user indicates to subscribe to a remote flow, would be as follows: ~~~ ignatius ~ 1$telnet localhost 61000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 fnaa.unix.ar FNAA AUTHENTICATE PLAIN 220 OK AHRlc3QAdGVzdA== 220 Authenticated SUBSCRIBE time.flows.unix.ar LOCAL emiliano.ar-time.flows.unix.ar 220 DATA ksdj898.time.flows.unix.ar 220 OK ~~~

Once the user is authenticated, a SUBSCRIBE command is executed. This command indicates first the remote flow to subscribe to. Then, it also specifies with LOCAL the flow where the remote events will be written. In this example, the remote flow to subscribe to is time.flows.unix.ar, and the local flow is emiliano.ar-time.flows.unix.ar. Basically, a new flow has been created, emiliano.ar-time.flows.unix.ar, where all the events of flow time.flows.unix.ar will be written.

The server answers back with a new Flow URI, in this case ksdj898.time.flows.unix.ar. This Flow URI indicates a copy of the original flow time.flows.unix.ar created for this subscription. Thus, the remote FNAA has full control over this subscription, being able to revoke it by simply deleting this flow or applying Quality of Service rules.

The remote FNAA has set up a Bridge Processor to transcribe messages in topic time.flows.unix.ar to the new topic ksdj898.time.flows.unix.ar. Another alternative to a Bridge Processor would be a Distributor Processor, which could be optimized for a Flow with high demand. Moreover, instead of creating a single Bridge Processor per subscription, a Distributor Processor could be used, in order to have a single consumer of the source flow and write the events to several subscription flows.

The user could use the FNUA CLI tool to execute this command in the following manner:

ignatius ~ 0$./fnua --config=./flow.yml subscribe time.flows.unix.ar --nameserver 172.17.0.2 -d --agent fnaa-emiliano
Initializing initConfig
    Using config file: ./flow.yml
Subscribe to flow
Agent selected: fnaa-emiliano
Resolving FNAA FQDN fnaa.emiliano.ar
Starting FQDN resolution with 172.17.0.2
Resolving SRV for fnaa.emiliano.ar. using server 172.17.0.2:53
Executing query fnaa.emiliano.ar. IN 33 using server 172.17.0.2:53
FNAA FQDN Resolved to fnaa.emiliano.ar. port 51000
Resolving A for fnaa.emiliano.ar. using server 172.17.0.2:53
Resolved A to 127.0.0.1 for fnaa.emiliano.ar. using server 172.17.0.2:53
C: Connecting to 127.0.0.1:51000
C: Got a response: 220 fnaa.unix.ar FNAA
Connected to FNAA
Authenticating with PLAIN mechanism
C: Sending command AUTHENTICATE PLAIN
C: Wrote (20 bytes written)
C: Got a response: 220 OK
C: Authentication string sent: AHRlc3QAdGVzdA==
C: Wrote (18 bytes written)
C: Got a response: 220 Authenticated
Authenticated
Executing command SUBSCRIBE time.flows.unix.ar LOCAL emiliano.ar-time.flows.unix.ar
C: Sending command SUBSCRIBE time.flows.unix.ar LOCAL emiliano.ar-time.flows.unix.ar
C: Wrote (67 bytes written)
C: Server sent OK for command SUBSCRIBE time.flows.unix.ar LOCAL emiliano.ar-time.flows.unix.ar
Flow emiliano.ar-time.flows.unix.ar subscription created successfully
Server responded: emiliano.ar-time.flows.unix.ar SUBSCRIBED TO ksdj898.time.flows.unix.ar
Quitting
C: Sending command QUIT
C: Wrote (6 bytes written)
Connection closed

This interaction of the FNUA with the FNAA of the Flow Namespace emiliano.ar (fnaa-emiliano) has trigger an interaction with the FNAA of unix.ar Flow Namespace (fnaa-unix). This means that before fnaa-emiliano was able to respond to the FNUA, a new connection was opened to the remote FNAA and the SUBSCRIBE command was executed.

The log of fnaa-emiliano when the SUBCRIBE command was issued looks as follows:

server.go:111: Handle incoming messages.
server.go:105: Accept a connection request.
server.go:253: User authenticated
server.go:347: FULL COMMAND: SUBSCRIBE time.flows.unix.ar LOCAL emiliano.ar-time.flows.unix.ar
server.go:401: Flow is REMOTE
client.go:280: **#Resolving SRV for time.flows.unix.ar. using server 172.17.0.2:53
server.go:417: FNAA FQDN Resolved to fnaa.unix.ar. port 61000
client.go:42: C: Connecting to 127.0.0.1:61000
client.go:69: C: Got a response: 220 fnaa.unix.ar FNAA
server.go:435: Connected to FNAA
server.go:436: Authenticating with PLAIN mechanism
client.go:126: C: Sending command AUTHENTICATE PLAIN
client.go:133: C: Wrote (20 bytes written)
client.go:144: C: Got a response: 220 OK
client.go:154: C: Authentication string sent: AHRlc3QAdGVzdA==
client.go:159: C: Wrote (18 bytes written)
client.go:170: C: Got a response: 220 Authenticated
server.go:444: Authenticated
client.go:82: C: Sending command SUBSCRIBE time.flows.unix.ar
client.go:88: C: Wrote (30 bytes written)
client.go:112: C: Server sent OK for command SUBSCRIBE time.flows.unix.ar
server.go:456: Flow time.flows.unix.ar subscribed successfully
server.go:457: Server responded: ksdj898.time.flows.unix.ar
server.go:459: Quitting

We can see how fnaa-emiliano had to trigger a client subroutine to contact the remote fnaa-unix. Once the server FQDN, IP and Port is discovered by means of DNS, a new connection is established and the SUBSCRIBE command is issued. Here we can see the log of fnaa-unix:

server.go:111: Handle incoming messages.
server.go:105: Accept a connection request.
server.go:253: User authenticated
server.go:139: Received command: subscribe
server.go:348: [SUBSCRIBE time.flows.unix.ar]
server.go:367: Creating flow endpoint time.flows.unix.ar
server.go:368: Creating new topic ksdj898.time.flows.unix.ar in Apache Kafka instance kafka_local
server.go:369: Creating Flow Processor src=time.flows.unix.ar dst=ksdj898.time.flows.unix.ar
server.go:370: Adding DNS Records for ksdj898.time.flows.unix.ar
server.go:372: Flow enabled ksdj898.time.flows.unix.ar
server.go:139: Received command: quit

Thus, we were able to set up a new subscription in fnaa-emiliano that trigger a background interaction with fnaa-unix.

6.5. Results of the PoC

We can confirm the feasibility of the overall Event Streaming Open Network architecture. The test of the proposed protocol FNAP and its implementation, both in the FNAA and FNUA (CLI application), show that the architecture can be employed for the purpose of distributed subscription management among Network Participants.

The minimum functionalities defined both for the Network Participants and the Users were met. Network Participants can run this type of service by means of a server application, the FNAA server. Also, the CLI-tool resulted in a convenient low-level method to interact with a FNAA server.

In further implementations, the server application should be optimized as well as secured, for instance with a TLS handshake. Also, the CLI-tool could be enhanced by a web-based application with a friendly user interface.

Nevertheless, the challenge for a stable implementation of both components is the possibility of supporting different Event Brokers and their evolution. Not only Apache Kafka should be supported but also the main Public Cloud providers events solutions, such as AWS SQS or Google Cloud Pub/Sub. Since the Event Brokers are continuously evolving, the implementation of the FNAA component should keep up both with the API and new functionalities of these vendors.

Regarding the protocol design, it would be needed to enhance the serialization of the exchanged data. In this sense, it could be convenient to define a packet header for the overall interaction between the FNAA both with remote FNAA as well as with FNUA.

Regarding the subscription use case, it would be necessary to establish a convenient format for the server response. Currently, the server is returning a key/value structure with the details of the Flow. This structure may not be the most adequate, since it may differ depending on the Event Broker used.

Also, the security aspect needs further analysis and design since its fragility could lead to great economical damage for organizations. Thus, it would be recommended to review the different security controls needed for this solution as part of an Information Security Management System.

Finally, the implementation should leverage the Cloud Native functionalities provided by the Kubernetes API. For example, the FNAA should trigger the deployment of Flow Processors on demand, in order to provide isolated computing resources for each subscription. Also, a Kubernetes resource could be developed to use the kubectl CLI tool for management, instead of a custom CLI tool.

7. Summary & Conclusions

In this chapter we will provide a summary of everything that has been described in this document as well as some conclusions about it.

We have identified a use case for which there is currently no adequate solution provided by existing tools. This use case is based on the cross-organization integration of real-time event streams. Nowadays, organizations intending to integrate these kind of data streams struggle with offline communication to achieve a common interface for integration. In this context, we proposed an Open Network for Event Streaming as a possible solution for this difficulty.

For this Open Network, we have followed the main necessities from the technical perspective. While there already exist many components that can be leveraged, some components require analysis, design, and implementation. Then, we referred to the Commons Infrastructure literature in order to show how Event Streaming can be considered an Infrastructure Resource that can enable downstream productive activities. Finally, we established the main guidelines that an Open Network should follow, basing these definitions on Free, Open & Neutral Networks.

Using the previous definitions, we have designed an architecture for the Event Streaming Open Network, establishing the components that the different Network Participants should implement in order to participate in the network. After providing a thorough description of all the components, we showed some use cases of integration among different Network Participants.

Once the architecture was defined, we proposed an implementation approach which describes the existing components that can be leveraged as well as those that need to be developed from scratch. The outcome was that a server-side application called FNAA had to be developed. This application implements the protocol FNAP and can be accessed by a client application, which we named FNUA.

Finally, we proved the feasibility of the proposed architecture by providing an implementation of the minimum functionalities required, in the form of a Proof of Concept. The results of this PoC were encouraging since it was possible to implement the initial functionalities for the FNAA and FNUA components.

As conclusion, we can mention that there is great potential for an Open Network for Event Streaming among organizations. In the same way the email infrastructure acts as an open network for electronic communications among people, this kind of network would enable developers to integrate real-time event streams while minimizing offline agreement of interfaces and technologies.

However, there are many difficulties that could be furtherly worked on. First, a robust implementation for the Event Streaming Open Network main components must be provided, mainly for the FNAA and FNUA. In order to achieve an acceptable level of quality and stability, the development of a community around the project is needed.

Secondly, we found that the proposed architecture is a convenient starting point. However, it can suffer modifications based on the learning process during the implementation. For example, while designing the architecture, we avoided the need of a database for the FNAA component, leveraging on the DNS infrastructure. While this can be sufficient for the minimum functionalities described, it will most probably be necessary for the FNAA to persist data in a database of its own. In this sense, we believe that leveraging the Kubernetes resources model could be a convenient alternative.

Thirdly, during the PoC execution, we identified some difficulties implementing the security functionalities of authentication and authorization. Although we were able to implement an authentication mechanism, the reality indicates that integration with well-established protocols is needed (i.e., OAuth, GSSAPI, etc.).

Finally, there is also the need to leverage on the Cloud Native architecture, basically Kubernetes, to provide hyper-scalability and enable Network Participants to agnostically choose the underlaying infrastructure. The selection of Golang for the PoC implementation showed to be convenient, given the vast number of available libraries for integration of third-party components and services.

Notwithstanding the difficulties, we firmly believe that cross-organization real-time event integration can provide great benefits for society. It would enhance the efficiency of business processes throughout organizations. Also, it would provide broad visibility to the final users, enabling experimentation and entrepreneurship. New business models for existing productive activities could be developed, as well as enabling innovation, which in turn would conform the positive externalities of the Event Streaming Open Network.

8. Security Considerations

TODO Security

9. IANA Considerations

This document has no IANA actions.

10. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC2782]
Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, DOI 10.17487/RFC2782, , <https://www.rfc-editor.org/rfc/rfc2782>.
[RFC3261]
Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, , <https://www.rfc-editor.org/rfc/rfc3261>.
[RFC5321]
Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, DOI 10.17487/RFC5321, , <https://www.rfc-editor.org/rfc/rfc5321>.
[RFC6763]
Cheshire, S. and M. Krochmal, "DNS-Based Service Discovery", RFC 6763, DOI 10.17487/RFC6763, , <https://www.rfc-editor.org/rfc/rfc6763>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.

Acknowledgments

SPINELLA E. (2022) [Online] Event Streaming Open Network Master's Thesis https://drive.google.com/file/d/1R9H-4knAztez_yUPlr7aZSkbUjs8jL3j

URQUHART J. (2021) Flow Architectures

FRISCHMANN B. (2007) [Online] Infrastructure Commons in Economic Perspective < https://firstmonday.org/article/view/1901/1783>

WIDL M. (2013), Guided Merging of Sequence Diagrams

NAVARRO L. (2018) [Online] Network Infrastructures: The commons model for local participation, governance and sustainability https://www.apc.org/en/pubs/network-infrastructures-commons-model-local-participation-governance-and-sustainability

BRINO A. (2019) Towards an Event Streaming Service for ATLAS data processing.

GUTTRIDGE, Gartner (2021) "Modern Data Strategies for the Real-time Enterprise" Big Data Quarterly 2021

Author's Address

Emiliano Spinella
Syndeno