updated.
o The <iris:seeAlso> element contains an entity reference specifying
an entity that is indirectly associated with this result object.
This element can be used for comments and remarks.
3.3. Support for <iris:lookupEntity>
The following types of entity classes are recognized by the
<lookupEntity> query of IRIS for this registry:
o ipv4-handle - a registry-unique identifier specifying an IPv4
network. Queries with these names will yield a <ipv4Network>
result.
o ipv6-handle - a registry-unique identifier specifying an IPv6
network. Queries with these names will yield a <ipv6Network>
result.
o as-handle - a registry-unique identifier specifying an autonomous
system. It yields a result of <autonomousSystem>.
o contact-handle - a registry-unique identifier of a contact.
Yields a result of <contact>.
o organization-id - a registry-unique identifier of an organization.
Yields a result of <organization>.
o The entity names of these entity classes are case insensitive.
4. Terminology for Nesting of Networks
The following terms are defined for describing the nesting of IP
networks.
o More specific: Given two networks, A and B, A is more specific
than B if network B includes all space of network A, and if
network B is larger than network A.
o Less specific: Opposite of more specific. The network B is less
specific than network A if network A’s space is completely
included in network B and if network A is smaller than network B.
o Most specific: Given a set of networks, the network or networks
that are more specific than zero or more specific of the other
networks in the set, and that are not less specific of any of the
networks in the set.
o Least specific: Given a set of networks, the network or networks
that are not more specific to any of the other networks in the
set.
Examples:
+-------------------------------------------------------+
| |
| Given the networks A, B, C, and D as follows: |
| |
| A |---------------------------------| |
| B |-----------------| |
| C |---------| |
| D |-------| |
| |
| |
| Network A is less specific than B, C, and D. |
| Network B is more specific than A. |
| Among these four networks, A is the least specific, |
| and C and D are the most specific. |
| |
+-------------------------------------------------------+
Figure 1: Nesting Example 1
+-------------------------------------------------------+
| |
| Given networks E, F, and G: |
| |
| E |----------| |
| F |--------------| |
| G |---| |
| |
| Networks E and F are least specific networks. |
| Networks F and G are most specific networks. |
| |
+-------------------------------------------------------+
Figure 2: Nesting Example 2
The following definitions assume that there are no overlapping
networks in the database. A network overlaps with another one when
they encompass each other’s space partially. Examples:
A |---------------------|
B |----------------------------|
Figure 3: Nesting Example 3
Here, networks A and B are overlapping networks because network A
encompasses network B’s space partially, and network B encompasses
network A’s space partially.
C |------------------|
D |---------|
Figure 4: Nesting Example 4
Here, networks C and D are NOT overlapping networks because even if
network D encompasses a part of network C’s space, network C does not
encompass network D’s space partially (it encompasses network D
completely).
The address directory can contain more than one network with the same
range. They are said to be exact match networks.
The parent/child relationship in the internet address directory is
unidirectional. That is, there might also be parent/child
relationship with exact match networks, but a network cannot be a
parent and a child of its exact match network at the same time.
The following are nested matching searches:
(1) all less specifics search: Given a range, find all the networks
that contain that range (i.e., all less specifics and exact
matches). These networks are the networks that fulfill the
following condition:
(start(network) <= start(search)) AND (end(network) >= end(search))
(2) one-level less specifics search: Given a range, find only the
most specific network that contains that range (could be multiple
networks, but usually single). This is the set of networks from
(1), with the provision that no network in the return set is
contained by any other network in the set. If there are exact
match networks in the set from (1), they both must appear in the
result set. The result set may contain a network that is exact
match to the query range, if the search allows exact matches.
A |-------------------------------|
B |---------------------------|
C |-------|
Query |- - - - - - - - - -|
Figure 5: Nesting Example 5
In the above case, the query must return B.
A |-------------------------------|
B |---------------------------|
C |---------------------------|
D |-------|
Query |- - - - - - - - - -|
Figure 6: Nesting Example 6
Here, the query must return B and C (they are exact matches of
each other).
A |-------------------------------|
B |---------------------------|
C |---------------------------|
D |-------|
Query |- - - -|
Figure 7: Nesting Example 7
Here, the query must return B and C (they are exact matches of
each other). D must not be in the result set, as it is exact
match to the query if the search specifies that exact matches of
query range should not appear in the result set.
In Figure 7, if the search specifies that exact matches to the
query range are allowed in the result set, then only D must be
returned.
(3) all more specifics search: Given a range, find all the networks
that are fully within that range. The search contains a flag
that specifies if an exact match to the query range should appear
in the result set or not. Thus, the result set may or may not
contain the exact match to the query range, as instructed by the
search.
(start(network) >= start(search)) AND (end(network) <= end(search))
(4) one-level more specifics search: Given a range, find only the
least specific networks that are fully within that range. This
is the set of networks from (3), with the provision that no
network in the return set contains any other network in the
return set.
Query |- - - - - - - - - - - - - - - - - - - - - - -|
A |------------------|
B |-------------------------|
C |--------|
D |---------|
Figure 8: Nesting Example 8
(5) exact match search: Given a range, find the networks that begin
and end on the same IP addresses as the range. That is, the
networks that fulfill the following condition:
(start(network) = start(search)) AND (end(network) = end(search))
(6) Given a range, find the exact match network if it exists, and if
it does not, perform the (2) search.
The following are parent-child relationship searches:
(7) Given a network handle, find the network that is the direct (one
level up) parent of the network with the given handle.
(8) Given a network handle, find the network or networks that are
direct (one level down) children of the network with the handle
given.
5. Formal XML Syntax
This IP address registry is specified in the XML Schema notation.
The formal syntax presented here is a complete schema representation
suitable for automated validation of an XML instance when combined
with the formal schema syntax of IRIS.
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:areg="urn:ietf:params:xml:ns:areg1"
xmlns:iris="urn:ietf:params:xml:ns:iris1"
targetNamespace="urn:ietf:params:xml:ns:areg1"
elementFormDefault="qualified" >
<import namespace="urn:ietf:params:xml:ns:iris1" />
<annotation>
<documentation> IP address registry schema derived from IRIS
schema </documentation>
</annotation>
<!-- ========================================= -->
<!-- -->
<!-- Query Types -->
<!-- -->
<!-- ========================================= -->
<!-- -->
<!-- Find Autonomous Systems By Name -->
<!-- Find Networks By Name -->
<!-- -->
<complexType name="findByNameType" >
<complexContent>
<extension base="iris:queryType">
<sequence>
<element name="name"
type="areg:exactOrPartialMatchParameter" />
<element name="language" type="language" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findNetworksByName" type="areg:findByNameType"
substitutionGroup="iris:query" />
<element name="findAutonomousSystemsByName"
type="areg:findByNameType"
substitutionGroup="iris:query" />
<!-- -->
<!-- Address/Address Range type for -->
<!-- Find Network -->
<!-- -->
<complexType name="addressRangeType">
<sequence>
<element name="start" type="token" />
<element name="end" type="token" minOccurs="0" maxOccurs="1" />
</sequence>
</complexType>
<!-- -->
<!-- Find Networks By Address -->
<!-- -->
<complexType name="findNetworksByAddressType" >
<complexContent>
<extension base="iris:queryType">
<sequence>
<choice>
<element name="ipv4Address" type="areg:addressRangeType"
/>
<element name="ipv6Address" type="areg:addressRangeType"
/>
</choice>
<element name="specificity">
<complexType>
<simpleContent>
<extension base="areg:specificityType" >
<attribute name="allowEquivalences" type="boolean"
default="false" />
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findNetworksByAddress"
type="areg:findNetworksByAddressType"
substitutionGroup="iris:query" />
<!-- -->
<!-- Find AS By Number -->
<!-- -->
<complexType name="findASByNumberType" >
<complexContent>
<extension base="iris:queryType">
<sequence>
<element name="asNumberStart" type="token" />
<element name="asNumberEnd" type="token" minOccurs="0"
maxOccurs="1" />
<element name="specificity">
<complexType>
<simpleContent>
<extension base="areg:specificityType" >
<attribute name="allowEquivalences" type="boolean"
default="false" />
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findASByNumber" type="areg:findASByNumberType"
substitutionGroup="iris:query" />
<!-- -->
<!-- Specificity Type -->
<!-- -->
<simpleType name="specificityType">
<restriction base="string">
<enumeration value="exact-match" />
<enumeration value="all-less-specific" />
<enumeration value="one-level-less-specific" />
<enumeration value="all-more-specific" />
<enumeration value="one-level-more-specific" />
</restriction>
</simpleType>
<!-- -->
<!-- Find By Contact -->
<!-- -->
<complexType name="findByContactType">
<complexContent>
<extension base="iris:queryType">
<sequence>
<choice>
<group ref="areg:contactSearchGroup" />
<element name="contactHandle"
type="areg:exactMatchParameter" />
</choice>
<element name="returnedResultType" minOccurs="0"
maxOccurs="1" >
<simpleType>
<restriction base="string" >
<enumeration value="returnASs" />
<enumeration value="returnIPv4Networks" />
<enumeration value="returnIPv6Networks" />
<enumeration value="returnOrganizations" />
</restriction>
</simpleType>
</element>
<element name="role" minOccurs="0" maxOccurs="1" >
<simpleType>
<restriction base="string" >
<enumeration value="adminContact" />
<enumeration value="techContact" />
<enumeration value="nocContact" />
<enumeration value="abuseContact" />
<enumeration value="otherContact" />
</restriction>
</simpleType>
</element>
<element name="language" type="language" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findByContact" type="areg:findByContactType"
substitutionGroup="iris:query" />
<!-- -->
<!-- Find Networks By Handle -->
<!-- -->
<complexType name="findNetworksByHandleType" >
<complexContent>
<extension base="iris:queryType">
<sequence>
<element name="networkHandle" type="token" />
<element name="specificity"
type="areg:specificitySubsetType" />
</sequence>
</extension>
</complexContent>
</complexType>
<element name="findNetworksByHandle"
type="areg:findNetworksByHandleType"
substitutionGroup="iris:query" />
<!-- -->
<!-- Specificity Subtype -->
<!-- -->
<simpleType name="specificitySubsetType">
<restriction base="string">
<enumeration value="all-less-specific" />
<enumeration value="one-level-less-specific" />
<enumeration value="all-more-specific" />
<enumeration value="one-level-more-specific" />
</restriction>
</simpleType>
<!-- -->
<!-- Find Contacts -->
<!-- -->
<complexType name="findContactsType">
<complexContent>
<extension base="iris:queryType">
<sequence>
<choice>