RIR Statistics Exchange Format This specification defines the file production cycle, naming and content for the RIR statistics files. The RIR statistics files summarize the current state of allocations and assignments of Internet number resources. They are intended to provide a snapshot of the status of Internet number resources, without any transactional or historical details. This format replaces the previous statistics exchange format, and differs from it in significant ways. The details of this format are to be considered a published RIR standard, on which other parties are expected to rely. RIRs must comply with this standard in every respect. 1. Production Process Each RIR periodically produces a text file of records as described below, representing all of the allocations and assignments which have been made by that RIR to that date. This file is to be produced daily. The last time of any record for the file is 23:59:59 in the local time zone of the producing RIR. (i.e. the last possible time on the specified calendar day in that time zone) An MD5 checksum is to be computed on the file, and published under a matching name, with file extension .md5 appended. A PGP or other cryptographically strong signature can also be computed, and published under a matching name with suitable extension. 2. File naming and exchange 2.1 File name: Each file is called delegated--yyyymmdd The value follows the internal record format and is one of the specified strings from the set: {afrinic,apnic,arin,iana,lacnic,ripencc}; This set may be altered to add, remove or modify registries. The yyyymmdd is the date, local not UCT, on which the file was produced. The file is marked delegated- to discriminate it from any other files produced in another context. These would be expected to be named in a different file-tree, but if accidentally placed in the same directory would cause no data loss. Data compression is optional. If compressed, the normal file suffix is used to denote the compression algorithm. (.gz, .bz2, .zip etc) The most recent file (named as follows) must be available in a non-compressed form. The most recent file will also be available under a name of the form delegated--latest. This can be a symbolic or hard link to the delegated--yyyymmdd file but must be pointed at the most recent file when it is updated. This is to permit automatic fetching of the current data via a persistent URL, in systems jobs, or in browser bookmarks or other stored form. 2.2 File exchange: Each RIR will make its files available in a standard ftp directory, defined as /stats//*. Data will be lodged within 3 business days (locally for each RIR) of the date of the file, in the source RIR location. The RIR may mirror each others data. If an RIR does mirror files from others RIRs, the standard path directory remains the same, i.e., /stats//* where is the RIR being mirrored. 2.3 File availability: Data will be available by FTP, and additionally by any other access method the RIR chooses. This may include alternative URLs, but these will reflect the common naming model. Data will be publicly visible and will not require access control (world- readable). Examples: http://www.apnic.net/stats//delegated--latest rsync www.apnic.net::/stats//delegated--latest ftp://ftp.apnic.net/pub/stats//delegated--latest (The use of a standard prefix in a URL such as /pub/ in FTP servers is not considered obligatory, and does not define the URL for use in HTTP or other access methods. The defined URL base is /stats// across all application-specific access methods.) 3. File format The file consists of comments, file header lines, and records, one record per line. Header and record lines are structured as 'comma separated fields' (CSV), with leading and trailing blank text in fields not meaningful. The vertical line character '|' (ASCII code 0x7c) is used as the CSV field separator. After the header lines, records are not sorted. 3.1 Comments: Comments are denoted by # at the beginning of a line. No line-embedded comments are permitted. Comments may occur at any place in the file. Example: #optional comments. # any number of lines. #another optional comment. Blank lines are permitted, and may occur at any place in the file. 3.2 File header: The file header consists of the version line and the summary lines for each type of record. There must be only one version line, which must be the first line of the header. There must be at exactly one summary line for each type of record which appears in the file. 3.2.1 The Version line: Format: version|registry|serial|records|startdate|enddate|UTCoffset version = format version number of this file, currently 2; registry = as for records and filename (see below); serial = serial number of this file (within the creating RIR series); records = number of records in file, excluding blank lines, summary lines, the version line and comments; startdate = start date of time period, in yyyymmdd format; enddate = end date of period, in yyyymmdd format; UTCoffset = offset from UTC of local RIR producing file, in +/- HHMM format. 3.2.2 The Summary line: The summary lines count the number of record lines of each type in the file. Format: registry|*|type|*|count|summary registry = as for records (see below); * = an ASCII '*' (unused field, retained for spreadsheet purposes); type = as for records (defined below); count = the number of record lines of this type in the file; summary = the ASCII string 'summary' (to distinguish the record line). Note that the count does not equate to the total amount of resources for each class of record. This is to be computed from the records themselves. 3.3 Record format: After the defined file header, and excluding any space or comments, each line in the file represents a single allocation (or assignment) of a specific range of Internet number resources (IPv4, IPv6 or ASN), made by the RIR identified in the record. In the case of IPv4 the records may represent non-CIDR ranges or CIDR blocks, and therefore the record format represents a beginning of range, and a count. This can be converted to prefix/length using simple algorithms. In the case of IPv6 the record format represents the prefix and the count of /128 instances under that prefix. Format: registry|cc|type|start|value|date|status[|extensions...] registry = One value from the set of defined strings: {afrinic,apnic,arin,iana,lacnic,ripencc}; cc = ISO 2-letter country code of the organization to which the allocation or assignment was made, and the enumerated variances of {AP,EU,UK} These values are not defined in ISO 3166 but are widely used. The cc value identifies the country in which the resource holder is legally based. However, it is not specified whether this is the country where the IP addresses are used. This value can therefore not be reliably used to map IP addresses to countries. type = Type of Internet number resource represented in this record, One value from the set of defined strings: {asn,ipv4,ipv6} start = In the case of records of type 'ipv4' or 'ipv6' this is the IPv4 or IPv6 'first address' of the range. In the case of an 16 bit AS number the format is the integer value in the range 0 to 65535, in the case of a 32 bit ASN the value is in the range 0 to 4294967296. No distinction is drawn between 16 and 32 bit ASN values in the range 0 to 65535. value = In the case of IPv4 address the count of hosts for this range. This count does not have to represent a CIDR range. In the case of an IPv6 address the value will be the CIDR prefix length from the 'first address' value of . In the case of records of type 'asn' the number is the count of AS from this start value. date = Date on this allocation/assignment was made by the RIR in the format YYYYMMDD; Where the allocation or assignment has been transferred from another registry, this date represents the date of first assignment or allocation as received in from the original RIR. It is noted that where records do not show a date of first assignment, this can take the 00000000 value. status = Type of allocation from the set: {allocated, assigned} This is the allocation or assignment made by the registry producing the file and not any sub-assignment by other agencies. extensions = Any extra data on a line is undefined, but should conform to use of the field separator used above. 4. Validation/assumptions Validation is assisted by the file headers, using the "records" field. Also by checking the file name against its contents, and by use of the detached MD5 and/or other checksum files. Within any one file. there should be no overlap of assigned records by their base address and count or prefix length. During the transfer of management of a resource from one RIR to another, it is possible that there will be overlapping records when comparing each file. It is assumed that any one file only contains records with registry field set to the value of the file-producing RIR. Early Registration Transfers (ERX) do not have any special tagging in this format. As resource management responsibility moves between the RIR then resource records will move between stats files. ERX records are expected to move from the old to the new registry at the end of any defined transfer window. This minimizes the risk of data overlap and avoids unnecessary changes to data. 5. Non-Registry allocated and assigned data Historical assignments which are not under regional Internet registry management will not be included in the RIR produced files. An instance of the known state of these 'IANA' assignments will be incorporated in the mirroring system if maintained by IANA. 6. Extensions to the format Extensions to this format may be made by mutual agreement among the participating registries. 7. MD5 Hash File format As previously indicated, an MD5 checksum is to be computed on the file and published under a matching name with the file extension .md5 appended. The format of the hash file will be a single line formatted as follows: MD5 () = where is the name of the file to which the hash applies and is the calculated MD5 checksum. E.g., MD5 (delegated-apnic-20031119) = 64175f7e728732743b3acc28c00c2179 8. Cryptographic signing As previously stipulated, a PGP or other cryptographically strong signature may also be computed and published under a matching name with suitable extension. 8.1 Recommended method The recommended method at this time is to sign the file using GPG and to publish the signature under a matching file name with the file extension .asc appended. An example of a file signed in this manner follows: -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iEYEABECAAYFAj+6U64ACgkQyzQvAdFSThS5ZQCfcbE3+7UnaBe2SNysWrq+xpVB rZEAmwRdPkylmvhCNnt5th5jxHBmIngF =kxyA -----END PGP SIGNATURE----- 8.2 Publishing of public key If the RIR chooses to cryptographically sign the statistics file, it is recommended that the public key needed to verify the signature be published or a link to the public key be created in the same directory location of the latest statistics and accompanying files. The name of the public key file (or link thereto) should follow the form delegated--key where conforms to the values identified in section 2.1. This will prevent confusion in the event that an RIR uses distinct keys for signing different sets of published files. 9. Data retention There is no obligation on any registry to retain previous files, once a new file is produced and lodged for public access.