Mailing Lists

There are two mailing lists which this project uses to distribute analysis data.

Joining the Project

While we have a representative selection of Regional and National Research & Education Networks involved with this project, we are always happy to accept new feeds. More feeds increases the diversity and helps with our goal of improving the routing infrastructure for the global R&E network community.

To join the project, potential hosts need to be able to offer a BGP feed, using EBGP multihop, of IPv4 R&E prefixes (over an IPv4 peering) and IPv6 R&E prefixes (over an IPv6 peering).

The NSRC collector has these details:

Please contact philip at nsrc dot org if you would like to join the project and offer a BGP feed.

Technical Discussion

The Collector

The NSRC collector is a Linux appliance running Free Range Routing, better known as FRR. FRR has its origin in Quagga, and is now a highly capable suite of routing protocols including, of course, BGP, IS-IS, and OSPF. We always endeavour to use the latest release version of FRR (currently at 8.2.2) to ensure we have the latest features and capabilities.

Each participant in the project sets up an EBGP Multihop from one of their routers, sending the NSRC collector their view of the global R&E table. The collector is configured so that each feed exists in its own view. This means that to display the routes received from one participant in the project, we simply run the command sh bgp ipv4 view NAME for IPv4, and sh bgp ipv6 view NAME for IPv6.

The FRR collector has no FIB - the entries learned from each neighbour are only stored in the BGP table for that neighbour.

The BGP Analysis

Once the BGP table has been dumped from the collector, the analysis programme is run over the raw dump. This involves converting the Cisco IOS style output (FRR has a wide option) into a consistent format readable by the analysis programme, before running the programme itself. The analysis is stored in several files, which are then published on this site under the the participants own page, as well as being compressed and archived for posterity (and future reference).

IPv6 Table Analysis?

While the focus is on IPv4 at the moment, the IPv6 table is also dumped from the collector - a future activity will see the same analysis being applied to it too.

Right now the IPv6 report summaries the number of entries in the IPv6 table, the total number of ASNs present, and the total number of origin ASNs. The IPv6 report also pulls out the count of the IPv6 subnet sizes.

RPKI Invalids

As part of this project, NSRC has deployed three of the most popular validators: Routinator, FORT, RPKI-client/StayRTR. The now unsupported GoRTR from Cloudflare has also been deployed.

For the purposes of the research here, FRR prioritises the Routinator validator. This validator provides a continuously updated feed of the current VRPS (validated ROA payloads), basically the address space that has had its ROAs signed.

This means that a daily record of the RPKI invalids for IPv4 and IPv6 can be collected from each participant. This is helpful in tracking the global deployment of Route Origin Authorisation (using RPKI) and Route Origin Validation (ROV - the dropping invalid prefixes).

The invalids are gathered from the BGP feed from the collector simply by greping for the lines with the I in them. FRR also has a feature whereby the Invalids can be displayed simply by running show bgp view view addr-family rpki invalid, but that is not used here as the BGP dump has already been collected from the collector.

Participants who have implemented ROV will show no output in the RPKI Invalid dump - the more who implement ROV, the better it is for the Internet as a whole.

Validator Differences

The reason for deploying the 3 main validators (and maintaining Cloudflare's GoRTR too) is to monitor differences in their behaviour. There shouldn't be a difference, because the Internet standards are well defined.

FRR follows RFC8210 in prioritising the validators configured. It only displays the VRPs received from the highest priority active validator. So there isn't a straightforward way to find out what each validator is producing by way of VRPs. So the project also runs a virtual router which is also configured to talk with each validator - and download the VRP table from each of them. These differences are captured once per day.

AS0 TALs

Two of the five Regional Internet Registries have published an AS0 TAL for the unassigned address resources they hold. These TALs are added to the validators hosted by NSRC, and the output published listing the prefixes includes these.

To find out the number of VRPs in the absence of the two AS0 TALs, NSRC has access to a Cisco C1100 router which also is configured to speak to four validators. The simple IOS-XE command sh ip bgp rpki servers | i Prefixes will pick out the number of validated prefixes the router has received from each validator.

Configuration Examples

This section covers configuration examples for popular routing platforms. Right now there are FRR, JunOS, and IOS-XR. Suggestions and contributions for other routing platforms are always most welcome.

FRrouting

The following shows the FRR configuration needed to set up an EBGP multihop session with the NSRC Collector:


router bgp 64511
 bgp router-id 192.0.2.254
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 timers bgp 15 45
 neighbor 128.223.157.40 remote-as 65534
 neighbor 128.223.157.40 description NSRC Collector
 neighbor 128.223.157.40 ebgp-multihop 255
 neighbor 2607:8400:2880:4::80df:9d28 remote-as 65534
 neighbor 2607:8400:2880:4::80df:9d28 description NSRC Collector
 neighbor 2607:8400:2880:4::80df:9d28 ebgp-multihop 255
 !
 address-family ipv4 unicast
  neighbor 128.223.157.40 activate
  neighbor 128.223.157.40 prefix-list DENY-ALL in
  neighbor 128.223.157.40 route-map RNE-out out
 exit-address-family
 !
 address-family ipv6 unicast
  neighbor 2607:8400:2880:4::80df:9d28 activate
  neighbor 2607:8400:2880:4::80df:9d28 DENY-ALLv6 in
  neighbor 2607:8400:2880:4::80df:9d28 RNE-out out
 exit-address-family
!
ip prefix-list DENY-ALL seq 5 deny 0.0.0.0/0 le 32
!
ipv6 prefix-list DENY-ALLv6 seq 5 deny ::/0 le 128
!
route-map RNE-out permit 10
 description Match R&E networks
 match community rne
!
route-map RNE-out deny 20
 description Deny everything else
!

Note that this configuration snippet assumes that the BGP community rne has already been set elsewhere in the operator's network infrastructure.

Operators using routing equipment with a CLI similar to that of FRR (eg Cisco's IOS and IOS-XE) should have no difficulty in adapting the above configuration snippet for their own requirements.

JunOS

The following shows the JunOS configuration needed to set up an EBGP multihop session with the NSRC Collector:


top edit policy-options
set policy-statement DENY-ALL term END then reject

set policy-statement ANNOUNCE-RNE term RNE from family inet
set policy-statement ANNOUNCE-RNE term RNE from protocol bgp
set policy-statement ANNOUNCE-RNE term RNE from community RNE
set policy-statement ANNOUNCE-RNE term RNE from route-type external
set policy-statement ANNOUNCE-RNE term RNE then accept
set policy-statement ANNOUNCE-RNE term END then reject

set policy-statement ANNOUNCE-RNEv6 term RNE from family inet6
set policy-statement ANNOUNCE-RNEv6 term RNE from protocol bgp
set policy-statement ANNOUNCE-RNEv6 term RNE from community RNE
set policy-statement ANNOUNCE-RNEv6 term RNE from route-type external
set policy-statement ANNOUNCE-RNEv6 term RNE then accept
set policy-statement ANNOUNCE-RNEv6 term END then reject

top edit protocols bgp
set group NSRC-View type external
set group NSRC-View local-address LOCAL_ADDRESS
set group NSRC-View import DENY-ALL
set group NSRC-View family inet unicast
set group NSRC-View export ANNOUNCE-RNE
set group NSRC-View neighbor 128.223.157.40 description "NSRC Collector"
set group NSRC-View neighbor 128.223.157.40 multihop ttl 255
set group NSRC-View neighbor 128.223.157.40 peer-as 65534

set group NSRC-Viewv6 type external
set group NSRC-Viewv6 local-address LOCAL_V6_ADDRESS
set group NSRC-Viewv6 import DENY-ALL
set group NSRC-Viewv6 family inet6 unicast
set group NSRC-Viewv6 export ANNOUNCE-RNEv6
set group NSRC-Viewv6 neighbor 2607:8400:2880:4::80df:9d28 description "NSRC Collector"
set group NSRC-Viewv6 neighbor 2607:8400:2880:4::80df:9d28 multihop ttl 255
set group NSRC-Viewv6 neighbor 2607:8400:2880:4::80df:9d28 peer-as 65534

Note that this configuration snippet assumes that the BGP community RNE has already been set elsewhere in the operator's network infrastructure. Also, LOCAL_ADDRESS and LOCAL_V6_ADDRESS are the router's local address, whether this is chosen as a Loopback (normal) or a physical interface.

Operators using Juniper equipment in their network should be able to adapt this for their own needs.

IOS-XR

The following shows the IOS-XR configuration needed to set up an EBGP multihop session with the NSRC Collector, courtesy of Erdemnet in Mongolia:


route-policy deny-all
  drop
end-policy
!
route-policy RNE-out
  if community matches-any rne then
    pass
  else
    drop
  endif
end-policy
!
router bgp 64511
 timers bgp 15 45
 bgp router-id 192.0.2.254
 bgp log neighbor changes detail
 !
 neighbor 128.223.157.40
  remote-as 65534
  ebgp-multihop 255
  description NSRC Collector
  address-family ipv4 unicast
   route-policy deny-all in
   route-policy RNE-out out
  !
 !
 neighbor 2607:8400:2880:4::80df:9d28
  remote-as 65534
  ebgp-multihop 255
  description NSRC Collector
  address-family ipv6 unicast
   route-policy deny-all in
   route-policy RNE-out out
  !
 !

Note that this configuration snippet assumes that the BGP community rne has already been set elsewhere in the operator's network infrastructure.

Operators using Cisco IOS-XR based routers should have no difficulty in adapting the above configuration snippet for their own requirements.

Back to Homepage