Paul Palse

GRS Sources and the RIPE Database API

Paul Palse
5

A while ago we announced the new Global Resource Service (GRS) for the RIPE Database. It allows you to query other Regional Internet Registry (RIR) databases and Routing Registry data using the RIPE Database interface. In this article we describe this service some more and show some examples.


 

Note that this article is not up to date anymore. Please refer to the most up-to-date RIPE Databse documentation .

Introduction

A while ago we announced the new Global Resource Service (GRS) for the RIPE Database. It allows for queries to other Regional Internet Registry (RIR) databases and Routing Registry data using the RIPE Database interface. The service will return RIPE RPSL formatted object. With the addition of these sources to our RESTful API, responses can be retrieved in XML and JSON using the same schema as the RIPE data. All features of the RESTful Query Web Services are also available for the two new GRS Query Web Service.

Unlimited queries

We also added a GRS version of the RIPE data to the other GRS sources so that RIPE data can be accessed in the same format. When using the GRS sources, there are no limitations on the amount of data that a client can query for.

REST services URLs and GRS sources

The service URL for the grs-lookup service is:
 http://lab.db.ripe.net/whois/grs-lookup/<source>/<object type>/<primary-key>.xml

The service URL for the grs-search service is:

 http://lab.db.ripe.net/whois/grs-search.xml?flags=<flags>&source=<source>&query-string=<query>

The "source" parameter can be one or more of the following :

Source Parameter
RIPE source=ripe
RADb source=radb
APNIC source=apnic
ARIN source=arin
AfriNIC source=afrinic
LACNIC source=lacnic

Example:

 http://lab.db.ripe.net/whois/grs-lookup/apnic/inetnum/193.0.0.0%20-%20193.255.255.255.xml
 
 http://lab.db.ripe.net/whois/grs-search.xml?flags=&source=ripe&source=apnic&source=afrinic&source=arin&source=lacnic&query-string=as3333
 

Content negotiation

All the content negotiation features documented for the other query services (negotiation by URL extension and negotiation by Accept header mime type) are available also on these two services. For more details, please refer to the updated RIPE Database API documentation .

 

Search client

We also made the GRS functionality available through our search client form.

GRS Search
 
 
Some GRS sources under construction Currently the RIPE source is not available. The AfriNIC source is not currently in true GRS format and the data is quite stale. We're working hard to resolve the issues.
 

Some technical background

After publishing the first GRS article, we got some questions about what we do with the data we receive that turns it into GRS data.
The best way to explain this is by giving some examples:

Referential integrity and dummy objects

From ARIN we receive the following object:
 
 ASHandle:       AS26666
OrgID:          DOEORG-7
ASName:         DOENET
ASNumber:       26666
RegDate:        2009-04-23
Updated:        2009-04-23
NOCHandle:      JDOE42-ARIN
TechHandle:     JDOE42-ARIN
AbuseHandle:    JDOE42-ARIN
Source:         ARIN

We construct an AUT-NUM object from this information and turn any unrecognised attributes into "remark:" lines:

 
 aut-num:        AS26666                                   # Mirror: Changed object type
org:            ORG-MIRR1-RIPE                            # Mirror: Removed private data
as-name:        DOENET
remarks:        ASNumber:       26666                     # Mirror: Unknown attribute
remarks:        RegDate:        2009-04-23                # Mirror: Unknown attribute
changed:        
 bitbucket+whois-mirror@ripe.net
 20090423  # Updated
tech-c:         MIRR-RIPE                                 # Mirror: Removed private data
source:         ARIN
descr:          DUMMY DESCRIPTION                         # Mirror: Mandatory data
admin-c:        MIRR-RIPE                                 # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data

We replace any personal data with dummy data and in order to retain referential integrity we also create links to dummy objects.

 
Dummy data:
 
 person:         MIRR-RIPE                                 # Mirror: Dummy object
nic-hdl:        MIRR-RIPE                                 # Mirror: Dummy object
address:        DUMMYLAND                                 # Mirror: Mandatory data
phone:          +3866938669                               # Mirror: Mandatory data
changed:        
 bitbucket+whois-mirror@ripe.net
 00000000  # Mirror: Mandatory data
source:         ARIN                                      # Mirror: Mandatory data
mntner:         MIRROR-RIPE-MNT                           # Mirror: Dummy object
descr:          DUMMY DESCRIPTION                         # Mirror: Mandatory data
admin-c:        MIRR-RIPE                                 # Mirror: Mandatory data
upd-to:        
 bitbucket+whois-mirror@ripe.net
           # Mirror: Mandatory data
auth:           MD5-PW $1$222222222222222222222222222222/ # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data
referral-by:    MIRROR-RIPE-MNT                           # Mirror: Mandatory data
changed:        
 bitbucket+whois-mirror@ripe.net
 00000000  # Mirror: Mandatory data
source:         ARIN                                      # Mirror: Mandatory data
organisation:   ORG-MIRR1-RIPE                            # Mirror: Dummy object
org-name:       ORGNAME                                   # Mirror: Mandatory data
org-type:       OTHER                                     # Mirror: Mandatory data
address:        DUMMYLAND                                 # Mirror: Mandatory data
e-mail:        
 bitbucket+whois-mirror@ripe.net
           # Mirror: Mandatory data
mnt-ref:        MIRROR-RIPE-MNT                           # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data
changed:        
 bitbucket+whois-mirror@ripe.net
 00000000  # Mirror: Mandatory data
source:         ARIN                                      # Mirror: Mandatory data

Normalisation of ranges

Again an object we received from ARIN:

 
 V6NetHandle:    NET6-2600-1000-1
OrgID:          DOEINC
Parent:         NET6-2600-1
NetName:        DOENET
NetRange:       2600:1000:: - 2600:1017:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
NetType:        allocation
RegDate:        2010-04-06
Updated:        2010-04-06
Source:         ARIN

Because the RIPE Database doesn't support IPv6 ranges but only prefix notation, we split the original object into two prefixes:

 
 inet6num:       2600:1000::/28                            # Mirror: Changed object type
remarks:        V6NetHandle: NET6-2600-1000-1             # Mirror: Unknown attribute
org:            ORG-MIRR1-RIPE                            # Mirror: Removed private data
remarks:        Parent:         NET6-2600-1               # Mirror: Unknown attribute
netname:        DOENET
status:         allocation
remarks:        RegDate:        2010-04-06                # Mirror: Unknown attribute
changed:        
 bitbucket+whois-mirror@ripe.net
 20100406  # Updated
source:         ARIN
descr:          DUMMY DESCRIPTION                         # Mirror: Mandatory data
country:        ZZ                                        # Mirror: Mandatory data
admin-c:        MIRR-RIPE                                 # Mirror: Mandatory data
tech-c:         MIRR-RIPE                                 # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data
inet6num:       2600:1010::/29                            # Mirror: Changed object type
remarks:        V6NetHandle: NET6-2600-1000-1             # Mirror: Unknown attribute
org:            ORG-MIRR1-RIPE                            # Mirror: Removed private data
remarks:        Parent:         NET6-2600-1               # Mirror: Unknown attribute
netname:        DOENET
status:         allocation
remarks:        RegDate:        2010-04-06                # Mirror: Unknown attribute
changed:        
 bitbucket+whois-mirror@ripe.net
 20100406  # Updated
source:         ARIN
descr:          DUMMY DESCRIPTION                         # Mirror: Mandatory data
country:        ZZ                                        # Mirror: Mandatory data
admin-c:        MIRR-RIPE                                 # Mirror: Mandatory data
tech-c:         MIRR-RIPE                                 # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data

And the dummy references:

 
 person:         MIRR-RIPE                                 # Mirror: Dummy object
nic-hdl:        MIRR-RIPE                                 # Mirror: Dummy object
address:        DUMMYLAND                                 # Mirror: Mandatory data
phone:          +3866938669                               # Mirror: Mandatory data
changed:        
 bitbucket+whois-mirror@ripe.net
 00000000  # Mirror: Mandatory data
source:         ARIN                                      # Mirror: Mandatory data
mntner:         MIRROR-RIPE-MNT                           # Mirror: Dummy object
descr:          DUMMY DESCRIPTION                         # Mirror: Mandatory data
admin-c:        MIRR-RIPE                                 # Mirror: Mandatory data
upd-to:        
 bitbucket+whois-mirror@ripe.net
           # Mirror: Mandatory data
auth:           MD5-PW $1$222222222222222222222222222222/ # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data
referral-by:    MIRROR-RIPE-MNT                           # Mirror: Mandatory data
changed:        
 bitbucket+whois-mirror@ripe.net
 00000000  # Mirror: Mandatory data
source:         ARIN                                      # Mirror: Mandatory data
organisation:   ORG-MIRR1-RIPE                            # Mirror: Dummy object
org-name:       ORGNAME                                   # Mirror: Mandatory data
org-type:       OTHER                                     # Mirror: Mandatory data
address:        DUMMYLAND                                 # Mirror: Mandatory data
e-mail:        
 bitbucket+whois-mirror@ripe.net
           # Mirror: Mandatory data
mnt-ref:        MIRROR-RIPE-MNT                           # Mirror: Mandatory data
mnt-by:         MIRROR-RIPE-MNT                           # Mirror: Mandatory data
changed:        
 bitbucket+whois-mirror@ripe.net
 00000000  # Mirror: Mandatory data
source:         ARIN                                      # Mirror: Mandatory data

Conclusion

We are in the process of bringing RIPE data into the GRS format and improving the AfriNIC source. Already the GRS service can be used for high load and frequency queries for network resources without the risk of getting blocked or throttled.

As always, we are very interested in your feedback.

 

 

Tags:
5

About the author

Comments 5