RPKI deployment in the BGP neighborhood (Work during LACNIC Hackathon Sep 2017)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Module1
Module2
Module3
.gitattributes
.gitignore
BE_FE_interface.py
Hackathon_Presentation.pptx
README.md

README.md

RPKINeighborhood

RPKI deployment in the BGP neighborhood (Work during LACNIC Hackathon Sep 2017)

This project includes the sample inputs, sample outputs and the scripts generated during the LACNIC Hackathon held in Montevideo on September 23rd and 24th.

The goal is to understand the level of RPKI deployment of the BGP neighborhood of a given ASN.

In order for the participants that joined the team to be able to make progress in parallel, the project was divided into three modules (two backend modules and one front-end modules):

  1. Backend module that analyzes a BGP routing table

For each ASN included in a given set, this module obtains the list of prefixes announced by it and the list of its BGP neighbors (from the AS paths)

This module uses as input a BGPRIB file containing a BGP routing table and receives as parameter the set of ASNs of interest.

This module generates as output a JSON file similar to the example below:

[{
"Origin-AS": "4608",
"Neighbours": ["1221", "18368"],
"Prefixes": ["113.29.248.0/23", "2001:dd8::/48"]
},
{
"Origin-AS": "4777",
"Neighbours": ["2497", "2516"],
"Prefixes": ["1.0.4.0/22", "2001:dd8:6::/48"]
}]
  1. Backend module that computes level of RPKI deployment

For each ASN included in a given set, this module computes the level of RPKI deployment as the percentage of IP prefixes covered by ROAs over the IP prefixes announced by the ASN.

This module uses as input a CSV file with data from ROAs and the JSON file generated by the other backend module.

This module generates as output a JSON file similar to the example below:

[{
"id": "1221",
"rpki": "50"
},
{
"id": "18368",
"rpki": "90"
}]
  1. Front-End module

This module uses D3JS (https://d3js.org) to visualize the BGP neighborhood of an ASN as a graph, providing as information of each node the ASN and the level of RPKI deployment as a percentage.

This module requires as an input a JSON file similar to the example below:

{
  "nodes": [
    {"id": "9999", "rpki": 0},
    {"id": "1221", "rpki": 80},
    {"id": "18368","rpki": 78},
    {"id": "2497", "rpki": 16},
    {"id": "2516", "rpki": 1}
  ],
  "links": [
    {"source": "18368", "target": "1221", "value": 1},
    {"source": "2497", "target": "2516", "value": 1},
    {“source": "9999", "target": "2516", "value": 1},
    {"source": "9999", "target": "1221", "value": 1}
    ]
}

Note: An interface between the backend modules and the front-end module is needed to convert the JSON files generated by the backend modules into the single JSON file needed by the front-end module. The script BE_FE_interface.py implements this interface.