Routing Information Service Live (RIS Live)

RIS Live is a feed that offers BGP messages in real-time. It collects information from the RIS Route Collectors (RRCs) and uses a WebSocket JSON API to monitor and detect routing events around the world. A non-interactive full stream ("firehose") is also available.

RIS Live is one way of accessing RIS, together with RIPEstat and the RIS Raw Data dumps. Any bug reports or queries should be sent to rislive@ripe.net.

RIS Live has been used by some organisations for academic and research purposes. In 2017, INSPIRE group and CAIDA used RIS Live to develop ARTEMIS, a real-time BGP hijack detection tool. It is also a backend for BGPalerter, a real-time BGP monitoring tool, pre-configured for visibility loss and hijacks detection.

Demo

Subscriptions to the stream are sent as a JSON object containing various filter parameters. You can adjust the parameters below and see the messages that are streamed on the right.



            

Code examples

Below are simple examples of using the RIS Live WebSocket interface. For a full guide, see the RIS Live manual.

/*
Subscribe to a RIS Live stream and output every message to the javascript console.

The exact same code will work in Node.js after running 'npm install ws' and including the following line:

const WebSocket = require('ws');
*/
var ws = new WebSocket("?client=js-example-1");
var params = {
    moreSpecific: true,
    host: "rrc21",
    socketOptions: {
        includeRaw: true
    } 
};
ws.onmessage = function(event) {
    var message = JSON.parse(event.data);
    console.log(message.type, message.data);
};
ws.onopen = function() {
    ws.send(JSON.stringify({
        type: "ris_subscribe",
        data: params
    }));
};
"""
Subscribe to a RIS Live stream and output every message to stdout.

IMPORTANT: this example requires 'websocket-client' for Python 2 or 3.

If you use the 'websockets' package instead (Python 3 only) you will need to change the code because it has a somewhat different API.
"""
import json
import websocket

ws = websocket.WebSocket()
ws.connect("?client=py-example-1")
params = {
    "moreSpecific": True,
    "host": "rrc21",
    "socketOptions": {
        "includeRaw": True
    }
}
ws.send(json.dumps({
        "type": "ris_subscribe",
        "data": params
}))
for data in ws:
    parsed = json.loads(data)
    print(parsed["type"], parsed["data"])

Live RIS BGP messages

Connecting
0 matching messages   ~0 kbit/s