RFC 2552

Architecture for the Information Brokerage in the ACTS Project GAIA

๐Ÿ“… published April 1999, from ietf

RFC 2552: Architecture for Information Brokerage in the ACTS Project GAIA ๐Ÿ“šโœจ

(part 1 of 6)

Okay bestie, this RFC is the GAIA architecture doc, and it's from April 1999 ๐ŸŒธ. It's written by M. Blinov, M. Bessonov, and C. Clissmann, all from Teltec UCD-CS in Ireland ๐Ÿ‡ฎ๐Ÿ‡ช. It's labelled Informational, which means it's sharing ideas, not setting a standard. The title block doesn't list anything it obsoletes or updates, so it's a standalone vibe ๐Ÿ’….


Status of this Memo ๐Ÿ“

This one's just here to inform the Internet community ๐Ÿซถ. It is not a standard of any kind, and you can share it as much as you want, because distribution is unlimited ๐Ÿฆ‹.

The copyright line reads Copyright (C) The Internet Society (1999). All Rights Reserved. Lawyers are gonna love it ๐Ÿ’œ.

Abstract ๐ŸŒˆ

This memo introduces a generic architecture for information brokerage that works for any domain and any supplier, no matter who's selling what ๐Ÿ’–. It was designed as part of the ACTS project GAIA, which stands for Generic Architecture for Information Availability ๐Ÿงš.

1. Introduction โœจ

Okay so, today there are so many goods and services on the electronic market, and the number of suppliers keeps going up and up ๐Ÿ“ˆ. But ngl, there's still no efficient way for a customer to find the product or information they want, or the supplier who can actually provide it ๐Ÿ˜ญ. Customers and suppliers literally can't keep up with how much information is out there on their own ๐Ÿ’€. On top of that, all the different protocols, formats, and underlying networks are super heterogeneous, which slows down the whole electronic market ๐Ÿ™ˆ.

So the answer is brokerage systems! ๐ŸŽ€ These work as middlepeople between customers and content suppliers. They help the customer through the trading process and hide all the messy distribution and heterogeneity of information from them ๐Ÿซถ. Designing a domain and supplier independent generic architecture for these brokerage systems is the goal of the GAIA project (Generic Architecture for Information Availability) ๐Ÿ”ฅ. GAIA got part funding from the EU ACTS programme for Research and Technological Development ๐Ÿ’œ.

The GAIA brokerage system lets a customer do four things ๐Ÿ‘‘:

  • search for a particular "product" (information, content or services) that they're interested in
  • locate the product, i.e. find supplier(s) from whom the product is available
  • order the product from the supplier
  • receive delivery of the product by digital means

All of these actions are carried out by the broker when the customer asks for them ๐Ÿงš. The customer reaches broker services through one unified user interface, and the customer's system doesn't have to support every protocol involved in the trading process. Main character energy for the customer, no cap ๐Ÿ’….

The full specification of the GAIA Architecture is in the GAIA Standard [1] ๐Ÿ“–. That standard covers the GAIA Reference Model, GAIA Functional Architecture, GAIA Standard Profiles, and the specification of the GAIA interfaces ๐ŸŒธ.

This memo doesn't try to copy the whole GAIA Standard. It just explains the basic ideas and concepts ๐Ÿฆ‹.

The structure of this memo follows the structure of the GAIA Standard, so here's the breakdown ๐Ÿ“:

  1. The GAIA Reference Model provides a common basis for the description and specification of brokerage systems, including the GAIA system.
  2. The GAIA Functional Architecture defines functional elements of the GAIA Broker, their roles and relationships.
  3. The GAIA Brokerage System Interfaces describes internal and external interfaces of the GAIA brokerage system.
  4. The GAIA Standard Profiles specifies mandatory and optional profiles to which brokerage systems may conform.

2. The GAIA Reference Model ๐Ÿง 

The GAIA Reference Model is the big-picture map ๐Ÿ—บ๏ธ. It outlines the operations and actors involved in finding, ordering, and delivering physical and digital objects and services (which it calls "Products") in a global brokered distributed information environment โœจ. It shows the overall GAIA environment and how its components are related to each other ๐Ÿ’–. Any further standards work on individual GAIA components uses this model and its terminology ๐Ÿซถ.

The GAIA environment is basically a bunch of actors and functions teaming up to handle discovery, ordering, and delivery of information and services ๐Ÿค. The actors play roles in the procedure, including starting and running the Actions that together make up the whole transaction ๐Ÿ’…. The GAIA architecture gives a standardised and widely applicable framework for brokered search and retrieve applications in a large-scale networked environment ๐ŸŒˆ.

2.1. GAIA Roles ๐Ÿ‘‘

The GAIA model has three main roles that actors can play: the Customer, the Broker, and the Supplier ๐Ÿ’œ. These roles are shown in Figure 1 below ๐Ÿฆ‹. There's also a whole other class of active entities that play supporting roles in the Actions. That class is called GAIA "Helpers", and it includes things like authentication and payment ๐Ÿ”. The actors are organisations and individuals in the supply chain, and every GAIA actor plays at least one role at any given time ๐Ÿซถ.

2.1.1. The Customer ๐Ÿ›๏ธ

The Customer wants to get some Products, or information about some Products ๐Ÿ’–. The Customer role kicks off the GAIA transaction by requesting one or more GAIA Actions, and then the Customer gets the results ๐ŸŽ€. The Customer can deal with actors playing either of the other two roles, the Broker or the Supplier ๐ŸŒธ. And those actors can also play the Customer role themselves while asking other Brokers for more services ๐Ÿ”„.

2.1.2. The Broker ๐Ÿค

The Broker gives brokerage services to both the Customer and the Supplier ๐Ÿ’…. It answers the Customer's requests for Products, or for information about Products โœจ. The Products a Broker hands to the Customer can come from one or more Suppliers and/or Brokers ๐Ÿงš. The Broker's main job is to collect and collate information from lots of different Suppliers and pass it along to the Customer, so the Customer never has to deal with a pile of Suppliers themselves ๐Ÿ™Œ. A Broker can also act on a Supplier's behalf by spreading the word about the Products that are available ๐Ÿ“ฃ. The actor playing the Broker can be a Supplier to a Customer or another Broker at the same time ๐Ÿฆ‹. And the Broker can play the Customer role while it's talking to another Broker or a Supplier ๐Ÿ”.

2.1.3. The Supplier ๐Ÿ“ฆ

The Supplier is where the Product comes from ๐ŸŒŸ. The Supplier gives the Broker information about the Product it can supply ๐Ÿ’œ. The Supplier can send its Product straight to the Customer, or to the Broker so the Broker can forward it to the Customer ๐Ÿšš. An actor playing the Supplier role can also play the Broker role ๐Ÿซถ. A Supplier might deal with a large number of Brokers and Customers across a bunch of GAIA transactions ๐ŸŒˆ.

2.1.4. Helpers ๐Ÿงš

A Helper is an application layer entity that plays a supporting role in a GAIA transaction ๐Ÿ› ๏ธ. Helpers provide a service the supply chain needs, but that sits outside the core functionality of the Broker ๐Ÿ’–. Examples include a global directory service, a payment service, or an authentication service ๐Ÿ“’.

The authentication Helper is all about making it possible for one actor to authenticate another ๐Ÿ”. The payment Helper is all about supporting a payment mechanism from one actor to another ๐Ÿ’ธ.

In any given GAIA transaction there will be one or more Customers (usually just one), one or more Brokers, and one or more Suppliers ๐Ÿ‘ฏ. The Customer gives the Broker a description of the Product they're looking for โœ๏ธ. The Broker might bring in other Brokers to help search for the Product ๐Ÿ”. When the Broker finds a Supplier of the Product, that info goes into the Broker's response to the Customer ๐ŸŽฏ. And during an Action, the Broker might need to call on one or more Helpers ๐Ÿซถ.

2.2. GAIA Actions ๐ŸŽฌ

Each GAIA transaction is made up of one or more Actions ๐Ÿ’œ. These Actions are the Customer's requests to the Broker or the Supplier to carry out some operation and send back a response ๐Ÿ“จ. Four Actions are defined ๐Ÿ”ฅ:

  • Search
  • Locate
  • Order
  • Deliver

These Actions are shown in Figure 1 ๐Ÿฆ‹.

   +--------+    .   .    +--------+    .   .    +-----------+
   |        |-- Search -->|        |-- Search -->|           |+
   |        |    :   :    |        |    :   :    |           ||
   |        |-- Locate -->|        |-- Locate -->|           ||
   |Customer|    :   :    | Broker |    :   :    |Supplier(s)||
   |        |-- Order --->|        |-- Order --->|           ||
   |        |    :   :    |        |    :   :    |           ||
   |        |<- Deliver --|        |<- Deliver --|           ||
   +--------+    :   :    +--------+    :   :    +-----------+|
                 :   :                  :   :     +-----------+
                Helpers                Helpers
             <Authentication> <Payment> <Security>

Figure 1 GAIA Roles and Actions ๐ŸŽ€

The Search Action happens when the Customer asks the Broker to find some information for them ๐Ÿ™‹. To do this, the Customer describes the Product they need to the Broker ๐Ÿ“. Based on that description, the Broker runs a search for the Customer and sends back the result ๐Ÿš€. The result of a Search Action is a set of unique identifiers that point to the Products matching the Customer's description ๐Ÿ’–.

2.2.2. Locate ๐Ÿ“

The Locate Action happens when the Customer asks the Broker for info about where a Product is and who's selling it ๐Ÿ—บ๏ธ. For the Broker to do this, the Customer has to give an unambiguous identification of the Product, which might be the result of a Search Action ๐ŸŽฏ. The Broker sends back information about a source or sources for the Product ๐Ÿ“ฆ. That data includes the Terms of Availability, like the available delivery methods, delivery time, costs, and so on ๐Ÿ’ธ. But ngl, this info isn't final yet, because special terms and conditions might apply, like discounts for certain categories of Customers ๐Ÿ™ˆ. The final version of the Terms of Availability gets settled during the negotiation phase of the Order Action ๐Ÿค.

2.2.3. Order ๐Ÿ›’

The Order Action happens when the Customer asks the Broker to get a Product for them, or asks the Supplier to sell the Product straight to the Customer ๐Ÿ’…. To make an Order happen, the Customer gives the Broker or Supplier the Product source information, which might come from a Locate Action ๐Ÿ“’. The Order Action has a negotiation phase and (possibly) a purchase phase โœจ. During the negotiation phase, the Customer gets a quotation with the final version of the Terms of Availability for the (batch of) Products they're thinking about buying ๐Ÿงพ. If the Customer is happy with those conditions, they commit to the purchase ๐Ÿ’–. Or, if the Broker or Supplier supports telepresence services for talking with their representatives, those can be used during the negotiations too ๐Ÿ“น๐Ÿซถ.

2.2.4. Deliver โœจ

okay so the Deliver Action is the moment the Broker actually hands the Customer their requested Product ๐ŸŽ the Product can be information, some physical object, or metadata. and it can show up as a response to an Order Action, a Search Action, or a Locate Action ๐Ÿ’…

bestie, here's the tea: the Actions in this section can logically be lined up as one integrated sequence, but that is NOT necessarily the case ๐Ÿซถ Actions can happen independently instead of being part of a four-Action whole. like, the Customer could get info through some other mechanism than GAIA Search and Locate Actions, and then do Order and Deliver Actions based on that ๐Ÿฆ‹ iconic flex

2.3. GAIA Helper Events ๐ŸŒธ

so during any of the GAIA Actions we just talked about, sometimes you need some supporting activity ๐Ÿ’– these are called GAIA Helper events, and they include things like authentication and payment. the Helper entities show up during the GAIA events to provide services, on top of the GAIA Actions, to the GAIA actors ๐Ÿงš

Authentication ๐Ÿ”

to verify the identity of one GAIA actor to another, an authentication exchange might need to happen. this can occur during any of the GAIA Actions. the manner or method of authentication is outside the scope of this document ๐Ÿ™ˆ

Payment ๐Ÿ’ธ

payment might need to happen during a GAIA transaction. in that case, one GAIA actor pays one or more other GAIA actors. the manner or method of payment is outside the scope of this document ๐Ÿ’œ

Security ๐Ÿ›ก๏ธ

as part of any GAIA Action, some security operations might be needed, like encryption of data, verification of source and content integrity of Product, or digital signature of some data entity or entities. the particular security services and mechanisms that may be required, or the way they may be provided, is outside the scope of this document. no cap, that's a whole separate conversation ๐Ÿ’€


3. The GAIA Functional Architecture ๐Ÿ‘‘

3.1. The Concept ๐ŸŽ€

the GAIA Functional Architecture breaks the overall functionality of the GAIA Broker down into a bunch of components ๐Ÿงฉ it describes the roles and relationships of these components, and how they interoperate ๐Ÿ’–

to work in a heterogeneous environment, the architecture introduces three levels of abstract elements of the Broker: the Kernel, Functional Unit Managers (FUMs), and Functional Units (FUs) (see Figure 2) โœจ

    GAIA Broker:
    ------------
                   [  Kernel  ]                Kernel
                     /       \                 level
                    /         \
     [Functional Unit]     [Functional Unit]   Technology-independent
     [    Manager    ]     [    Manager    ]   action-dependent
          /    \                 /    \        level
         /      \               /      \
 [Functional][Functional] [Functional][Functional]  Technology
 [Unit      ][Unit      ] [Unit      ][Unit      ]  dependent
                                                    level
 Figure 2 Levels of the architecture

Functional Units are the technology dependent parts of the architecture ๐Ÿ”ง they perform required transactions in terms of a particular protocol. all FUs are covered by a technology independent interface ๐Ÿซถ FUs get grouped by the trading action they take part in, e.g. search FUs or locate FUs, and each group is governed by the matching Functional Unit Manager ๐Ÿ‘‘

Functional Unit Managers hold technology independent functions for particular actions ๐Ÿ’… to use a particular technology, an FUM uses the services of its attached FUs. there can be several FUs attached to one FUM, so the FUM can operate in different technology contexts ๐Ÿฆ‹

there's one FUM in the system for every area of functionality, e.g. search, locate, and order ๐ŸŒˆ the Kernel is in charge of managing the activity of the different FUMs (each one matching a different action) and synchronising events between them โญ

the GAIA Functional Architecture sets up relationships between the existing technologies (standards and protocols) that are combined in the GAIA Standard, in the context of a brokerage system ๐ŸŽ€ it's expected that new technologies will evolve that could be viable alternatives to the ones selected. the abstract and modular nature of the Functional Architecture lets one technology be swapped for a new one without disrupting the rest of the brokerage system ๐Ÿ˜ญ๐Ÿซถ

3.2. Functional Units ๐Ÿงš

the brokerage system gives its users a number of services ๐Ÿ’– these services are supported by the functions of the brokerage system, including, for example,

  • searching
  • ordering
  • payment

each of these functions can be provided by a number of different candidate technologies ๐ŸŒธ but the operations that need to be carried out stay the same. no matter which technologies get picked, the functional requirements don't change ๐Ÿ’œ the required operations are described in terms of abstract primitives, which can be mapped to the protocol instructions of the technology chosen to support the function โœจ a mapping component, called a Functional Unit (FU), is defined for each candidate technology, and it converts calls to abstract primitives into protocol instructions ๐Ÿ”ฅ the FU acts as an adaptor between its particular technology and the rest of the brokerage system ๐Ÿซถ

Functional Units get defined for each candidate technology that can be used to fulfil a particular functional need of the brokerage system ๐Ÿ’… a Functional Unit accepts abstract primitive invocations and maps them to calls to the particular technology it's dedicated to ๐Ÿฆ‹ the results of those calls get translated back into the corresponding abstract primitives and returned by the FU, as shown in Figure 3 ๐ŸŒˆ

          * The rest of the Broker *
                 ^
                 |  -abstract primitives
                 v
              +------------+
              | Functional |
              |    Unit    |
              +------------+
                 ^
                 |  -technology-specific commands
                 v
          * Technology functions *

Figure 3 GAIA Functional Unit

3.3. Functional Unit Managers ๐Ÿฆ„

like we said above, a bunch of different candidate technologies can fulfil a particular functional requirement of the brokerage system ๐Ÿ’– depending on the details of the GAIA transaction (underlying network, Customer system capabilities, etc.), different technologies may be more useful during different transactions ๐ŸŒธ so each candidate technology gets its own Functional Unit, which is invoked when that particular technology is required โœจ

a number of different Functional Units can exist that fulfil the same functional requirement ๐Ÿ’… to pick the most appropriate FU (and technology), the brokerage system needs to know which one is most useful at any given time. generally that's the technology supported by the target Supplier system ๐Ÿ‘‘ this is the job of the Functional Unit Manager, or FUM. each function of the brokerage system has a single FUM, which the Broker Kernel invokes using abstract primitives ๐ŸŽ€ this FUM picks the most appropriate candidate technology and calls the matching FU (see Figure 4) ๐Ÿ”ฅ

the interface between the FUM and its FUs is defined for every FUM in an open, platform independent, and programming language independent way ๐ŸŒˆ these interfaces don't depend on any particular technology ๐Ÿซถ this lets the Broker be configured with different subsets of FUs, so you can attach whichever technologies you want ๐Ÿงš if a new technology needs supporting, a new FU implementing it can be created according to the interface specification and attached to the matching FUM ๐Ÿ˜ญโœจ

          +--------------------------------------+
          |       Functional Unit Manager        |
          +--------------------------------------+
                 ^                       ^
                 | -abstract primitives- |
                 v                       v
            +------------+        +------------+
            | Functional |        | Functional |
            |    Unit    |        |    Unit    |
            +------------+        +------------+
             ^                                ^
             | -technology-specific commands- |
             v                                v
           * Technology *          * Technology *
           * functions  *          * functions  *

Figure 4 Functional Unit Manager

3.4. The Kernel ๐Ÿ‘‘

the Kernel of the brokerage system acts as a bus for transmitting abstract primitives between FUMs ๐ŸšŒ each FUM imports a set of abstract primitives representing the services it expects to receive from some other part of the system ๐Ÿ’œ the services the FUM is prepared to provide to other elements of the brokerage system are presented as exported abstract primitives ๐Ÿฆ‹ all of these abstract primitives get imported from, and exported to, the Kernel (see Figure 5) ๐Ÿ’…

the Kernel is also responsible for synchronisation of different actions within a transaction, and for maintaining a common context between actions ๐Ÿซถโœจ

          +-------------------------------------+
          |           Broker Kernel             |
          +-------------------------------------+
               ^            ^              ^
               | -abstract- | -primitives- |
               v            v              v
           +-------+     +-------+     +-------+
           |  FUM  |     |  FUM  |     |  FUM  |
           +-------+     +-------+     +-------+

Figure 5 Broker Kernel

3.5. Description of FUMs ๐Ÿงš

okay so the brokerage system has ten core activities it's juggling, and each one gets its own FUM to handle it ๐Ÿ’…:

  1. searching for Products that fit a user description
  2. sourcing Products the identification of which is known
  3. allowing users to order Products
  4. delivering information in item format
  5. delivering information as a continuous media stream
  6. providing a user interface to the brokerage services
  7. alerting users as to the availability of information
  8. interacting with external directory services
  9. authentication of other actors
  10. payment operations

each one is handled by its matching FUM, and you can see how they all fit together in Figure 6 โœจ

Search FUM ๐Ÿ”

the Search FUM takes requests to search for Products that fit a particular user description. it sends back lists of identifiers of Products that fit the description.

Locate FUM ๐Ÿ“

the Locate FUM takes Product identifiers and figures out where they can be obtained. it returns lists of Suppliers and locations for the Product.

Order FUM ๐Ÿ›’

the Order FUM runs the negotiations between a Customer and a Supplier so they can agree on the terms of availability for a particular Product or group of Products. once the negotiation phase is done, the Order FUM accepts purchase commitments from the Customer and forwards them to the Supplier. it then returns a notification of the status of the Order Action ๐Ÿซถ

                    The GAIA Broker:
                    ----------------
(Customer))   (Alerting))  (  DS   ))  (Auth))  (Payment))
(   FUs  ))   (   FUs  ))  (  FUs  ))  ( FUs))  (  FUs  ))
(e.g.HTTP))   (e.g. SMS))  (eg LDAP))  (    ))  (e.g.SET))
    \/            \/           \/        \/        \/
[Customer]     [Alerting]    [ DS  ]  [ Auth ]  [Payment]
[  FUM   ]     [  FUM   ]    [ FUM ]  [  FUM ]  [  FUM  ]
    |              |            |         |         |
 +----------------------------------------------------------+
 |                  Broker Kernel                           |
 +----------------------------------------------------------+
    |             |            |            |            |
[ Search ]    [ Locate ]    [ Order ]   [ Stream ]   [Discrete]
[  FUM   ]    [  FUM   ]    [  FUM  ]   [Delivery]   [Delivery]
[        ]    [        ]    [       ]   [  FUM   ]   [  FUM   ]
    /\            /\           /\           /\           /\
( Search  ))  ( Locate  ))  (  Order   ))  ( SD   ))  ( DD   ))
(   FUs   ))  (   FUs   ))  (  FUs     ))  ( FUs  ))  ( FUs  ))
(eg Z39.50))  (eg Z39.50))  (eg ISO ILL))  (eg RTP))  (eg FTP))

Figure 6 GAIA Functional Architecture

Discrete Delivery FUM ๐Ÿ“ฆ

the Discrete Delivery FUM manages the delivery of discrete items to the Customer.

Stream Delivery FUM ๐ŸŽฌ

the Stream Delivery FUM manages the delivery of real-time multimedia data streams to the Customer.

Customer FUM ๐Ÿ’–

the Customer FUM provides an interface that supports the Customer's systems interaction with the brokerage system.

Alerting FUM ๐Ÿ””

the Alerting FUM notifies Customers about changes that may interest them.

Directory Services FUM ๐Ÿ“š

the Directory Services FUM provides an interface between an external directory service and the brokerage system.

Authentication FUM ๐Ÿ”

the Authentication FUM provides a mechanism that allows a user to prove their identity to the brokerage system.

Payment FUM ๐Ÿ’ธ

the Payment FUM provides a mechanism for payment from one actor to another.

4. GAIA Brokerage System Interfaces ๐Ÿ”Œ

this chapter covers the internal and external interfaces of the GAIA brokerage system.

4.1. Internal Interfaces

communication between the functional components inside the GAIA Broker is based on the OMG CORBA model [2]. the interfaces between components are defined in the IDL language specified by OMG, and interface calls get passed between components by the Object Request Broker (ORB) ๐Ÿง 

the big win here is that the interface specs are platform and programming language independent. these interfaces can be implemented in different programming languages on different platforms. all the necessary conversions during interface invocations are handled transparently by an ORB. the CORBA model also lets you install different functional components of the GAIA Broker on different computers connected by a network, and interface calls get carried across the network by an ORB, invisible to the application โœจ

the specification of the interfaces between the Kernel and FUMs, and between each FUM and its corresponding FUs, is presented in the GAIA Standard [1].

4.2. External protocols ๐ŸŒธ

the GAIA Broker can use existing protocols to talk to other actors. for example, it can use HTTP for interactions with Customers and Z39.50 for search, etc. like we covered in the GAIA Functional Architecture, support for particular technologies comes from FUs. you can extend the set of supported protocols by attaching new FUs to a Broker. a Broker can support several protocols for each action, and the FUMs will pick the most appropriate protocol for a transaction. the more protocols a Broker supports, the better service it can give Customers and Suppliers ๐Ÿ™Œ

the GAIA Standard doesn't limit the set of protocols a Broker can support. however, for the sake of interoperability, it defines several GAIA profiles. these profiles set out a common subset of protocols (and a common range of protocol parameters) that Brokers are encouraged to support, so that GAIA Brokers can talk to each other and to GAIA-aware Suppliers and Customers ๐Ÿค

existing protocols aren't the only way to reach the GAIA Broker, though. the GAIA interfaces were designed as a generalisation of existing interfaces and protocols, so they offer more functionality than any single protocol does. to get full access to the Broker's functionality, the GAIA Standard lets users (Customers and other Brokers) call the CORBA-defined Customer interface of the GAIA Broker directly (the interface between the Customer FUM and FUs), as shown in Figure 7. in that case, the Customer system reaches the Broker's Customer interface through an underlying ORB and can request operations by calling the corresponding methods of the interface. the GAIA Broker's Customer interface is specified in the GAIA Standard [1]. ๐ŸŽ€

                          +----------------+
                          |Broker          |
                          |                |
                          |   --------     |
  +-----------+           |  [ Kernel ]    |
  |  Broker   |           |   --------     |
  |    or     |           |  [Customer]    |
  | Customer  |           |  [  FUM   ]    |
  |           |           |  ========== <-GAIA Customer
  |        *  |           |  *       *     | \interface
  | { O R B *}* * * * * * *{* O  R  B * }  |
  +-----------+    iiop   |            *   |         +----------+
                          |     (Customer) |         | Customer |
                          |     (   FU   ) |         |          |
                          +------------I---+         +----I-----+
                                        \      HTTP      /
                                         - - -      - - -

Figure 7 External protocols and the GAIA Customer interface

where Customer and Supplier systems aren't CORBA-aware, they can talk to a GAIA Broker using existing protocols. if they can use an ORB, though, they are encouraged to connect to a Broker's Customer interface. the upside of that route is that it avoids tying a particular protocol to the GAIA interface. the first method makes it possible to interact with all existing types of Customers and Suppliers using existing, widespread protocols. the later method was designed to get maximum functionality by using native GAIA methods for communication with Customers and Suppliers ๐Ÿ’œ

5. GAIA Standard Profiles ๐ŸŒˆ

the GAIA Standard defines a number of profiles that a Broker may support so it can interoperate with other GAIA actors (Customers, Suppliers and other Brokers). which profile a Broker picks depends on the level and type of service it wants to deliver in a GAIA-conformant way. the higher the level of service a Broker gives a Customer, and the longer the supply chain the Broker wants to support, the more advanced the profile and/or the greater the number of extension modules the Broker has to support ๐Ÿ“ˆ

5.1. Supply Chains โ›“๏ธ

the GAIA profile definition approach is based on the possible types of supply chain a brokerage system can be part of.

the operations of a brokerage system fall into three categories:

  • interactions with the Customer
  • interactions with other Brokers
  • interactions with Suppliers

the first and last of these happen at the two ends of a supply chain, while interbroker operations take place at other points in the chain. a supply chain can take a number of different forms:

  • a minimal chain, where the Customer and the Broker are the ends of the chain and there are no intervening links. in this case, the Broker plays the role of Supplier to the Customer.
  • a three-piece chain, where the Broker deals with the Customer and the Supplier but not with any other Broker.
  • a longer chain, with one or more interbroker operations.
   Minimal Supply Chain:
       +--------+         +-------------+
       |Customer| <=====> | Broker      |
       +--------+         |(as Supplier)|
                          +-------------+
   3-piece Supply Chain:
       +--------+       +--------+       +--------+
       |Customer| <===> | Broker | <===> |Supplier|
       +--------+       +--------+       +--------+
   Longer Supply Chain:
       +--------+       +--------+   +--------+       +--------+
       |Customer| <===> | Broker |<=>| Broker | <===> |Supplier|
       +--------+       +--------+   +--------+       +--------+

Figure 8 Supply Chains

5.1.1. Minimal Supply Chains ๐Ÿฅฐ

as discussed in the GAIA Reference Model, a GAIA transaction is made up of a number of actions, like search, order, and delivery. every transaction is kicked off by the Customer, who makes a request to the Broker. if the Broker can fulfil the request, the transaction doesn't involve any other actors.

in this simple case, the GAIA transaction involves only the Customer and the Broker. the only protocol that really needs to be standardised is the one between the Customer and the Broker, and that's specified in the GAIA Standard Minimal profile below ๐Ÿซถ

5.1.2. Longer Supply Chains โœจ

okay so what if the Broker can't fulfil a request? ๐Ÿ˜ญ no panic, bestie. The action can get passed along to other Brokers, and the original Broker plays the Customer role for them ๐Ÿซถ Each of those Brokers can keep passing it on if they can't handle it either ๐Ÿ”—

Eventually, if the action works out, a Supplier shows up who can fulfil the request ๐ŸŽ€ So the whole supply chain is one Customer, one or more Suppliers, and one or more Brokers. it's giving teamwork ๐Ÿ’…

To pass an action from one Broker to another, there has to be a standardised communication protocol for broker-broker interaction ๐Ÿฆ‹ That's specified in the Basic profile, down below, and it's based on CORBA ๐Ÿ’œ

Suppliers and Brokers aren't obliged to support the Basic profile of the GAIA Standard, though ๐Ÿ™ˆ They can use another, more traditional protocol instead, like Z39.50 for discovery or ISO ILL for ordering ๐ŸŒธ The Extension Modules to the GAIA Standard say which profiles to use for the different brokerage functions โœจ

5.2. Introduction to the GAIA Standard Profiles and Modules

okay here are the profiles ๐Ÿ‘‘

  • The Minimal profile, which is the very least to which a GAIA Broker must conform
  • The Basic Profile, which allows inter-broker communication
  • A number of Extension Modules, which allow the Broker to provide various services, and to interoperate with Suppliers, Brokers and Customers using protocols specified in the modules
  • A set of Interface Modules, that defines which particular Functional Unit CORBA interfaces are supported by the Broker

every Broker has to conform at least to the Minimal profile so it can give a web-based user interface ๐Ÿ’– To take part in inter-broker communications, the Basic profile is recommended ๐Ÿงš For talking to entities that aren't CORBA-aware, and for advanced services, there are other modules of the standard the Broker may conform to. These are called "Extension Modules", and they characterise the protocols and standards in a particular area of functionality ๐ŸŒˆ A Broker can pick whichever Extension Modules match the functionality it wants to achieve โœจ

The GAIA Standard specifies all interfaces between FUM and FUs for the GAIA Broker ๐Ÿ“‹ But it would be too much to make every Broker implement all of them ๐Ÿ˜ญ So the GAIA Standard breaks all the interfaces up into a number of Interface Modules ๐Ÿงฉ A Broker can choose the subset of Interface Modules that matter most in its area of operation, and implement the interfaces defined in those modules ๐Ÿฆ‹ These interfaces only matter inside the broker system and don't play any role in communication with other GAIA actors ๐Ÿ™ˆ Still, a declaration of supported interfaces is important, because it's how the administrator finds the areas where the Broker's functionality can be extended by attaching GAIA-conformant FUs ๐Ÿ’…

5.3. Minimal Profile

the minimum a Broker must support lets it provide services to the Customer as part of a minimal chain ๐ŸŽ€ In this case, all the Broker needs is a user interface for the Customer. Anything else happens inside the Broker, so it doesn't come within the scope of the standard ๐Ÿ’œ

The Minimal profile requires the Broker to implement a user interface based on the HTTP 1.1 protocol, defined in RFC 2068 [3], and HTML 2.0, defined in RFC 1866 [4]. It means a Customer should be able to reach the basic functionality of the GAIA Broker using an HTTP 1.1 and HTML 2.0 conformant web-browser ๐ŸŒธ

It should be possible for Customers to locate a GAIA Broker. So a GAIA Broker should be registered in a Directory Service, using a schema specified in the GAIA Standard [1] ๐Ÿ”

+-------------------------------------------------+
| Minimal Profile                                 |
+------------------------+------------------------+
| Customer               | HTTP 1.1 (server),     |
|                        | HTML 2.0               |
+------------------------+------------------------+

5.4. Basic Profile

ngl a Broker can function with just the minimal stuff, but dealing with other Brokers is a huge part of being a GAIA Broker ๐ŸŒˆ The goal of the Basic profile is federation between Brokers ๐Ÿซถ Every GAIA Broker can use the services of other GAIA Brokers to fulfil a Customer's request. That Broker can then use the service of a third GAIA Broker, so every request can be chained through several Brokers โ›“๏ธ This extends the abilities of every GAIA action (Search, Locate, Order, etc.) ๐Ÿš€ Chained transactions matter most in the discovery phase, where a Broker that can't fulfil a particular information requirement passes the search to another Broker ๐Ÿ”

The Basic profile requires the Broker to implement the GAIA Customer interface defined in terms of CORBA. This interface is described in more detail in Section 4.2 above. The Basic profile also requires the Broker to implement interface requestor procedures, i.e. to be able to connect to the Customer interfaces of other Brokers. The ORB used by the Broker should be conformant to the CORBA 2.0 specification [2] and use IIOP protocol for inter-ORB communications [2] ๐Ÿ’–

A full specification of the GAIA Customer interface is presented in the GAIA Standard [1] ๐Ÿ“–

A GAIA Broker should be able to find other Brokers and Suppliers, and it should also allow other participants to find it ๐Ÿ”ญ So a GAIA Broker should support a directory service. The Basic profile includes a directory access protocol for this purpose. The actual choice of protocol isn't standardised, because the choice doesn't influence the success of the Broker's inter-operation with other Brokers ๐Ÿคทโ€โ™€๏ธ The directory schema that should be used is specified in the GAIA Standard โœจ

The Basic profile suggested for a Broker to interoperate with other GAIA Brokers looks like this ๐Ÿฆ‹

+----------------------------------------------------------------+
| Basic Profile                                                  |
+------------------------+---------------------------------------+
| Customer               | GAIA Customer interface/IIOP (server) |
| Search and Locate      | GAIA Customer interface/IIOP (client) |
|        (Discovery)     |                                       |
| Order                  | GAIA Customer interface/IIOP (client) |
| Directory              | Some directory access protocol,       |
|                        | such as LDAP                          |
+------------------------+---------------------------------------+

5.5. Extension Modules

so Brokers can still interoperate with Brokers that don't do the Basic profile ๐Ÿฅน They also need to deal with Suppliers and Customers who aren't CORBA-aware, and to deliver items and data streams via the Broker ๐Ÿ“ฆ That's why other open technologies are suggested as extensions to the Basic and Minimal profiles ๐ŸŒŸ These technologies come from the technology evaluation done as part of the project GAIA ๐Ÿงช

The extra protocols are grouped into Extension Modules. Supporting these Extension Modules is optional ๐Ÿ’œ A Broker can pick whichever Extension Modules match the functionality it wants to achieve ๐ŸŽ€ There's one Extension Module for each functional area that the Basic and Minimal Profiles don't cover, plus one Extension Module for each of the existing areas (Customer, Discovery, and Order), so you can use protocols other than GAIA abstract primitives ๐Ÿ”ฅ

The following Extension Modules are defined ๐Ÿ‘‘

  • Discovery Extension Module
  • Order Extension Module
  • Discrete Delivery Extension Module
  • Stream Delivery Extension Module
  • Security Extension Module
  • Payment Extension Module
  • Alerting Extension Module
  • Customer Discovery Extension Module

5.5.1. Discovery Extension Module

the Discovery Extension Module specifies the technologies used for searching for and locating products and services ๐Ÿ”Ž

This Extension Module requires the Broker to support the client part of the Z39.50 protocol, as defined in [5]. The following subset of the protocol is required:

  • Init, Search, and Present services
  • GRS-1 record syntax

Z39.50 protocol PDUs should be carried using TCP/IP network protocols ๐ŸŒ

+-------------------------------------------------+
| Discovery Extension Module                      |
+------------------------+------------------------+
| Searching,             | Z39.50 (client)        |
| Locating               |                        |
+------------------------+------------------------+

5.5.2. Order Extension Module

the Order Extension Module specifies the protocols used to order products and services from a Supplier ๐Ÿ›’

This Extension Module requires the Broker to support all mandatory services of the client part of the ISO ILL protocol [6]. Basic conformance criteria should be adhered to. ISO ILL protocol PDUs should be carried using TCP/IP network protocols ๐Ÿ’…

+-------------------------------------------------+
| Order Extension Module                          |
+------------------------+------------------------+
| Order                  | ISO ILL (client)       |
+------------------------+------------------------+

5.5.3. Discrete Delivery Extension Module ๐Ÿ“ฆโœจ

okay bestie, this one is all about how the on-line products and services actually get delivered to the Customer ๐Ÿ’… There are two delivery scenarios:

  • Direct Supplier to Customer delivery The delivery can be a single step, where the Supplier hands its product straight to the Customer and no Broker touches the delivery at all ๐Ÿฆ‹ The Broker might have pointed the Customer toward the Supplier, but if the Broker isn't involved in the delivery, the Discrete Delivery Extension Module does not apply, no cap.
  • Delivery over a supply chain with one or more Brokers involved If the Broker is the middle link in a Supplier-Broker-Customer chain, the Broker uses the protocols in this module to receive the product from the Supplier and then pass it along to the Customer ๐Ÿ”ฅ

The Discrete Delivery Extension Module requires the Broker to have both FTP client and FTP server functionality [7], so it can receive files and send files over FTP ๐Ÿ“

The Broker also needs to be able to accept and generate e-mail messages ๐Ÿ’Œ The e-mail protocol is Internet e-mail, built on SMTP [8] and the mail data formats from RFC 822 [9]. That combo is totally enough for making, sending, and managing text-only emails, but if you want to send actual data files of all kinds, you need extensions to SMTP and RFC 822. This module uses MIME (Multipurpose Internet Mail Extensions), which is defined in RFCs 2045-2049 [10]. So the vibe is: a GAIA Broker must be able to send and receive "simple" SMTP/RFC822 mail, and it also must be able to handle the RFC 2045-2049 MIME mail extensions ๐ŸŒˆ

For electronic document delivery, this module requires support for GEDI version 3.0 ๐Ÿ“„โœจ

+--------------------------------------------------------+
| Discrete Delivery Extension Module                     |
+------------------------+-------------------------------+
| FTP profile            | FTP (client+server)           |
| Email profile          | Internet e-mail [SMTP,RFC822] |
|                        |   (receiver+sender),          |
|                        | MIME                          |
| Document delivery      | GEDI version 3.0              |
+------------------------+-------------------------------+

5.5.4. Stream Delivery Extension Module ๐ŸŽง

This Extension Module is here for real-time multimedia delivery by the GAIA Broker, and it's giving live-stream energy ๐ŸŽ€

There are a few scenarios for stream delivery. A stream can go:

  • directly from a Supplier to a Customer The Broker isn't part of the stream delivery here. This scenario is out of scope for this standard, so we're not talking about it ๐Ÿ™ˆ
  • from a Supplier to a Customer via a Broker The Broker can add value by doing things like caching, mixing streams, and branching one stream out to several Customers ๐ŸŒธ
  • from a Broker to a Customer The Broker can store a small amount of multimedia data, like audio examples, in its own database and send it to a Customer whenever they ask ๐Ÿงš

The Stream Delivery Extension Module is recommended for a Broker to implement, so it can cover the last two real-time multimedia scenarios ๐Ÿ’œ

To do this, the Broker needs to support these technologies:

  • Compression MPEG-2 Audio Layer 3, specified in ISO/IEC 13818-3 [11]. Only support for constrained parameter streams (CSPS) is required ๐ŸŽถ
  • Data transfer protocol RTP over UDP/IP, defined in RFC 1889 [12]. Both the client and server parts are needed. It is recommended that the Broker supports the full behaviour of an RTP application service entity ("translator" or "mixer"), but that isn't required ๐Ÿฆ‹
  • Mapping RTP payload format for MPEG Audio (MPA), defined in RFC 2250 [13] ๐Ÿ—บ๏ธ
  • Session control protocol RTCP, specified in RFC 1889 [12] ๐ŸŽ›๏ธ

This profile delivers high-quality audio over networks without guaranteed quality of service, like the Internet. Iconic for a reason ๐Ÿ‘‘

+----------------------------------------------------+
| Stream Delivery Extension Module                   |
+--------------------------+-------------------------+
| Compression              | MPEG-2 Audio Layer 3    |
| Data transfer            | RTP (client+server)     |
| Mapping                  | RFC 2250                |
| Session control protocol | RTCP                    |
+--------------------------+-------------------------+

5.5.5. Security Extension Module ๐Ÿ”

Okay, security is the whole point here, so let's go ๐Ÿซถ The basic security services GAIA needs are:

  • Authentication of users, remote servers (both as entity authentication and as bilateral peer-to-peer authentication), senders, and receivers in network transactions, plus authentication of documents. Authentication is needed in three situations: when the user's workstation starts the session, inside a local environment (client/server authentication), and across a global, open network (the Internet) ๐Ÿชช
  • Confidentiality and integrity of all resources sent over the network or handled locally at application servers and user workstations ๐Ÿค
  • Control of access to services and resources ๐Ÿšช
  • Non-repudiation of transactions, participants, and sensitive documents โœ๏ธ

This module lets a Broker keep its communications secure with other participants. It handles channel security, authentication, and certificate exchange ๐Ÿ’–

The Security Extension Module specifies these protocols and algorithms:

  • Privacy, integrity, non-repudiation SSL v3.0 protocol, defined in [14] PKCS #7, defined in [15]
  • Remote, client/server authentication GSS v5, specified in RFC 1508 [16]
  • Certification services PKIX certification protocol, specified in [17]
+-----------------------------------------------------------+
| Security Extension Module                                 |
+--------------------------------------+--------------------+
| Privacy, integrity, non-repudiation  | SSL v 3.0, PKCS #7 |
| Remote, client/server authentication | GSS v5             |
| Certification services               | PKIX certification |
|                                      |      protocol      |
+--------------------------------------+--------------------+

5.5.6. Payment Extension Module ๐Ÿ’ธ

This module lets a Broker do electronic payment operations with Customers, Suppliers, and other Brokers ๐Ÿ’… These operations can happen at any stage of a GAIA transaction, during a Search, Locate, Order, or Deliver Action.

The GAIA Standard doesn't specify the tariffing or charging model a Broker uses. That's an internal matter, so it's the Broker's call โœจ Once a bill has been agreed on, though, the payment has to happen in a secure and mutually acceptable way ๐Ÿ”’ The payment procedure in the GAIA Standard uses the SET specification.

The Payment Extension Module requires a Broker to support the SET v1.0 merchant's server and the SET certification protocol, specified in [18] ๐Ÿ›๏ธ

+----------------------------------------------------+
| Payment Extension Module                           |
+------------------------+---------------------------+
| Payment                | SET v 1.0 :               |
|                        | 1) CA server for banks    |
|                        | 2) Cardholder wallet      |
|                        | 3) Merchant Server        |
|                        | 4) Payment Gateway server |
+------------------------+---------------------------+

5.5.7. Alerting Extension Module ๐Ÿ””

The Alerting Extension Module is how you notify Customers about changes they'd find interesting ๐Ÿ‘€

This Extension Module needs support for these technologies:

  • Internet e-mail, based on the SMTP protocol [8] and the mail data formats from RFC 822 [9]. The Broker should be able to generate and send e-mail messages ๐Ÿ“ง
  • SMS (Short Message Service), specified in [19] ๐Ÿ“ฑ
+-----------------------------------------------------+
| Alerting Extension Module                           |
+-----------+-----------------------------------------+
| Alerting  | Internet e-mail [SMTP,RFC822] (sender), |
|           | SMS                                     |
+-----------+-----------------------------------------+

5.5.8. Customer Discovery Extension Module ๐Ÿ”

The Customer Discovery Extension Module lets Z39.50 clients use the GAIA Broker's services. It's a whole vibe ๐Ÿงš

This Extension Module requires the Broker to support the server part of the Z39.50 protocol, as defined in [5]. The subset that's required is:

  • Init, Search, and Present services
  • GRS-1 record syntax

Z39.50 protocol PDUs should be carried over TCP/IP network protocols ๐ŸŒ

+----------------------------------------------------+
| Discovery Extension Module                         |
+------------------------+---------------------------+
| Searching,             | Z39.50 (server)           |
| Locating               |                           |
+------------------------+---------------------------+

5.6. Interface Modules ๐Ÿงฉ

For conformance purposes, all the interfaces between FUMs and FUs that the GAIA Standard specifies get grouped into GAIA Interface Modules. A GAIA Broker is recommended to support these modules, but they aren't mandatory. A Broker can pick the subset of Interface Modules that matter most in its area of operation and implement the interfaces in those modules ๐Ÿ’–

A full specification of the Functional Unit interfaces is in the GAIA Standard [1] ๐Ÿ“–

The table below shows the Interface Modules and which interfaces have to be supported in each one:

+--------------------+------------------------------------+
| Interface Module   | Interfaces that are required to be |
|                    | supported in this module           |
+--------------------+------------------------------------+
| Search             | Search FU interface                |
| Locate             | Locate FU interface                |
| Order              | Order FU interface                 |
| Discrete Delivery  | Discrete Delivery FU interface     |
| Stream Delivery    | Stream Delivery FU interface       |
| Customer           | Customer FU interface              |
| Alerting           | Alerting FU interface              |
| Directory Services | Directory Services FU interface    |
| Authentication     | Authentication FU interface        |
| Payment            | Payment FU interface               |
+--------------------+------------------------------------+

6. Acknowledgement ๐ŸŒท

We want to say a huge thank you to every member of the GAIA Consortium ๐Ÿซถ Their very lively discussion, plus all the valuable direct and indirect input they gave during the design process of the GAIA Standard, made this happen โœจ

7. Security Considerations ๐Ÿšจ

Security issues related to electronic brokerage are discussed in Sections 2.1.4, 2.3 and 5.4.5. Go read those, bestie, they're important ๐Ÿ’€

8. References โœจ

Okay bestie, here are all the sources the spec leans on, and I'm keeping every single detail ๐Ÿ“š๐Ÿค“

[1] GAIA Consortium, Deliverable 0403, "GAIA Standard (Final)", December 1998, see also <http://www.syspace.co.uk/GAIA/>.

[2] Object Management Group, "CORBA 2.0 Specification", July 1996, See <ftp://ftp.omg.org/pub/docs/formal/97-02-25.pdf>.

[3] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2068, January 1997.

[4] Berners-Lee, T. and D. Connolly, "Hypertext Markup Language - 2.0", RFC 1866, November 1995.

[5] ANSI/NISO Z39.50-1995 or ISO 23950 "Information Retrieval: Application Service Definition and Protocol Specification".

[6] ISO 10161:1997 "Information and documentation -- Open Systems Interconnection -- Interlibrary Loan Application Protocol Specification".

[7] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, RFC 959, October 1985.

[8] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, August 1982.

[9] Crocker, D., "Standard for the format of ARPA Internet text messages", STD 11, RFC 822, August 1982.

[10] Freed, N., and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.

Freed, N., and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.

Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text", RFC 2047, November 1996.

Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", RFC 2048, November 1996.

Freed, N., and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples", RFC 2049, November 1996.

[11] ISO/IEC IS 13818 "Information technology -- Coding of moving pictures and associated audio information"

Part 1: Systems Part 2: Video Part 3: Audio Part 4: Conformance testing Part 5: Software simulation

[12] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", RFC 1889, January 1996.

[13] Hoffman, D., Fernando, G., Goyal, V. and M. Civanlar, "RTP Payload Format for MPEG1/MPEG2 Video", RFC 2250, January 1998.

[14] Freier, A., Karlton, P. and P. Kocher, "The SSL Protocol - Version 3.0", Work in Progress, Transport Layer Security Working Group, November 1996, See <http://home.netscape.com/eng/ssl3/index.html>.

[15] PKCS #7: Cryptographic Message Syntax Standard. Version 1.5, November 1993.

[16] Linn, J., "Generic Security Service Application Program Interface", RFC 1508, Geer Zolot Associate, September 1993.

[17] Public-Key Infrastructure (X.509) IETF Working Group, <http://www.ietf.org/html.charters/pkix-charter.html>, July 98.

[18] "SET Secure Electronic Transaction Specification", Version 1.0, MasterCard and Visa, May 97.

[19] Digital Cellular Telecommunications System (Phase 2+): Technical Realization of the Short Message Service (SMS) Point-to-Point (PP) (GSM 3.40). Version 5.2.0. European Telecommunications Standards Institute. May 1996.


9. Authors' Addresses ๐ŸŽ€

Meet the squad behind this spec, the team from University College Dublin ๐Ÿ‡ฎ๐Ÿ‡ช๐ŸŒธ

Mikhail Blinov

Mikhail Blinov
Computer Science Department
University College Dublin
Belfield, Dublin 4, Ireland

Phone: +353 1-706-2488
Fax:   +353 1-269-7262
EMail: mch@net-cs.ucd.ie

Mikhail Bessonov

Mikhail Bessonov
Computer Science Department
University College Dublin
Belfield, Dublin 4, Ireland

Phone: +353 1-706-2488
Fax:   +353 1-269-7262
EMail: mikeb@net-cs.ucd.ie

Ciaran Clissmann

Ciaran Clissmann
Computer Science Department
University College Dublin
Belfield, Dublin 4, Ireland

Phone: +353 1-706-2488
Fax:   +353 1-269-7262
EMail: ciaranc@net-cs.ucd.ie

Legal stuff, but it matters, so here it is in full ๐Ÿซถ

Copyright (C) The Internet Society (1999). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

That's the whole spec, bestie! ๐ŸŒˆ๐Ÿฆ‹๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from