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.

Fig. 10 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
andarchery.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
orarchery.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.