ARCHERY data model and DNS records rendering

ARCHERY implies a minimalistic data model that is targeting mostly static service information to address the distributed e-Infrastructure resource grouping and service discovery needs.

The ARCHERY objects and their releations are embedded into the DNS infrastructure as a dedicated Resource Record sets according to the rendering described below.

ARCHERY objects

To represent the distributed e-infrastructure concept the ARCHERY data model defines three type of objects: the Endpoint Object, the Service Object and the Group Object.

ARCHERY data model

Fig. 25 ARCHERY objects, their attributes and relations in the data model.

Endpoint object

Endpoint object is used to capture information about a network location that can be used to access specific service functionality, including accessing information within ARCHERY registry service itself. For the later special endpoint types were defined (see below). The Endpoint object is described with the following set of attributes:

  • Endpoint URL - defines the network location by which the service functionality is accessible;
  • Endpoint Type - contains the value from the Endpoint type enumeration defined by the e-Infrastructure operators [1]. In addition to ordinary service endpoint types two special ARCHERY endpoint types archery.group and archery.service had been introduced for accessing the ARCHERY Group and Service objects within the registry.
  • Endpoint State (optional) - Boolean value that indicates the endpoint availability. In case of an ARCHERY service endpoint, if the endpoint state is false (unavailable) it is still used to represent e-Infrastructure topology, but should not be used during service endpoints discovery. Missing attribute is interpreted as true i.e. the endpoint is available.
[1]The org.ogf.glue.emies.activiticreation, org.nordugrid.ldapglue2, org.nordugrid.gridftpd are examples of endpoint types used in NorduGrid infrastructure.

Service object

Service object represents an e-Infrastructure service, like Computing Element, Storage Element, etc. The Service object is described with the following set of attributes:

  • Service ID - holds the service identifier as an arbitrary string. For example the ID can be derived from the hostname;
  • Service Type - contains the value from the Service type enumeration defined by the e-Infrastructure operators;
  • Service Endpoints - an array of Endpoint objects associated with the Service.

Group object

Group object is used to organize other objects such as ARCHERY Service or Group. The grouping was introduced to the data model so that infrastructure topologies (i.e. hierarchies or federations) can be represented inside the registry in a flexible way. The Group object is described with the following set of attributes:

  • Group ID (optional) - holds the group identifier as an arbitrary string.
  • Group Type (optional) - defines the grouping type based on organizational structure; example values could be: Site, Country, Tier, etc.
  • ARCHERY Endpoints - an array of Endpoint objects of special defined ARCHERY endpoint types (archery.group or archery.service). These Endpoint objects describe the optional state and URL of the ARCHERY objects inside the registry.

Following the data model the service endpoint discovery process can start from the entry point Group Object and recursively contacting all the ARCHERY Endpoints.

ARCHERY object attributes allow taking into account group, service and/or endpoint types as well as availability status during the recursive discovery process to query only the subset of objects.

DNS Resource Records rendering

Rendering ARCHERY objects

ARCHERY objects are rendered using TXT resource records (RRs). These TXT RRs contain the space separated key=value pairs where keys correspond to the data model object attributes. Boolean object attributes have values specified as 0 or 1.

The Endpoint Object is rendered with a single TXT RR where Endpoint Object attributes – Endpoint URL, Endpoint Type and optional Endpoint State are represented by the u, t, s keys in this specific order within the space separated key-value pairs.

The Service Object of the ARCHERY data model is rendered by a dedicated RRSet identified by unique domain name that can be used to access this object inside the registry.

The service RRSet is composed of single service object identity RR and one RR for every Endpoint objects associated with the service. The service object identity RR has the format of o=service followed by t=<Service Type> and id=<Service ID>:

<DNS name> TXT "o=service t=<Service Type> id=<Service ID>"
<DNS name> TXT "u=<Endpoint URL> t=<Endpoint Type> [s={0|1}]"
<DNS name> TXT                   ...
<DNS name> TXT "u=<Endpoint URL> t=<Endpoint Type> [s={0|1}]"

The Group Object of is rendered by a dedicated RRSet identified by unique domain name that can be used to access this object inside the registry.

The Group RRSet is composed of single Group object identity RR and one RR for every ARCHERY Endpoint objects pointing to other Service or Group objects that are part of this specific Group. The Group object identity RR has the format of o=group followed by optional t=<Group Type> and optional id=<Group ID>:

<DNS name> TXT "o=group [t=<Group Type>] [id=<Group ID>]"
<DNS name> TXT "u=<DNS URL> t=archery.{group|service} [s={0|1}]"
<DNS name> TXT              ...
<DNS name> TXT "u=<DNS URL> t=archery.{group|service} [s={0|1}]"

Embedding ARCHERY object relations

In the registry rendering the entry point Group Object is distinguished by the predefined RRSet DNS name starting with the mandatory _archery. Any other objects may have arbitrary RRSet name in any DNS zone. Exact RRSets naming scheme does not affect service discovery process, but should be consistent and transparent from the operational point of view.

The child-parent Endpoint Object to Service Object relation is implicitly defined by means of grouping within the same RRSet

The ARCHERY Data model allows grouping of Service and Group Objects into Group objects via the intermediate Endpoint objects. This grouping in the DNS rendering is implemented by using dedicated ARCHERY Endpoint types that are contained as RR text inside the Group object’s RRSet.

Both Group Object to Group Object and Group Object to Service Object relations rest upon the unique DNS name of the RRSet of the pointed object.