def bgpreader_format_update(collector, data): """ Transform an bgpreader update message to the internal representation. """ if data[0] == "W": yield InternalMessage("W", data[1], data[3], int(data[4]), data[5], data[6], None, None) elif data[0] == "A": as_path = data[8] if len(as_path) > 0: origin = frozenset(get_as_origin(as_path)) if len(origin) == 1: origin = iter(origin).next() yield InternalMessage("U", data[1], data[3], int(data[4]), data[5], data[6], origin, as_path)
def mabo_format_update(collector, data): """ Transform an mabo update message to the internal representation. """ for entry in data.get("withdraw", []): yield InternalMessage("W", data["timestamp"], collector, int(data["peer_as"]), data["peer_ip"], entry, None, None) as_path = data.get("as_path", "") if len(as_path) != 0: origin = frozenset(get_as_origin(as_path)) if len(origin) == 1: origin = iter(origin).next() for entry in data.get("announce", []): yield InternalMessage("U", data["timestamp"], collector, int(data["peer_as"]), data["peer_ip"], entry, origin, as_path)
def bgpreader_format_bview(collector, data): """ Transform an bgpreader bview line to the internal representation. """ as_path = data[8] if len(as_path) > 0: origin = frozenset(get_as_origin(as_path)) if len(origin) == 1: origin = iter(origin).next() yield InternalMessage("F", data[1], data[3], int(data[4]), data[5], data[6], origin, as_path)
def mabo_format_td2(collector, data): """ Transform an mabo table dump v2 message to the internal representation. """ for entry in data.get("entries", []): as_path = entry["as_path"] if len(as_path) == 0: # skip announces from IGP continue origin = frozenset(get_as_origin(as_path)) if len(origin) == 1: origin = iter(origin).next() yield InternalMessage("F", data["timestamp"], collector, int(entry["peer_as"]), entry["peer_ip"], data["prefix"], origin, as_path)
def bgpreader_format_bview(collector, data): """ Transform an bgpreader bview line to the internal representation. """ as_path = data[8] if len(as_path) > 0: try: origin = frozenset(get_as_origin(as_path)) except: logger.warning("invalid AS_PATH %s", as_path) else: if len(origin) == 1: origin = iter(origin).next() yield InternalMessage("F", data[1], data[3], int(data[4]), data[5], data[6], origin, as_path)
def bgpstream_format(collector, elem): raw_bgp_messages.labels(collector, str(elem.peer_asn)).inc() latency.labels(collector, str(elem.peer_asn)).set( (datetime.utcnow() - datetime.utcfromtimestamp(elem.time)).seconds) if elem.type == "R" or elem.type == "A": as_path = elem.fields["as-path"] if len(as_path) > 0: origins = frozenset(get_as_origin(as_path)) typ = "F" if elem.type == "R" else "U" yield InternalMessage(typ, float(elem.time), collector, int(elem.peer_asn), elem.peer_address, elem.fields["prefix"], origins, as_path) elif elem.type == "W": yield InternalMessage("W", float(elem.time), collector, int(elem.peer_asn), elem.peer_address, elem.fields["prefix"], None, None)
def kafka_format(collector, message): data = json.loads(message) as_path = data.get("as_path", None) if as_path is not None: origins = frozenset(get_as_origin(as_path)) yield InternalMessage(data.get("type", "U"), data["timestamp"], collector, int(data["peer_as"]), data["peer_ip"], data["prefix"], origins, as_path) else: yield InternalMessage("W", data["timestamp"], collector, int(data["peer_as"]), data["peer_ip"], data["prefix"], None, None)
def bgpstream_format(collector, elem): raw_bgp_messages.labels(collector, str(elem.peer_asn)).inc() latency.labels(collector, str(elem.peer_asn)).set( (datetime.utcnow() - datetime.utcfromtimestamp(elem.time)).seconds ) if elem.type == "R" or elem.type == "A": as_path = elem.fields["as-path"] if len(as_path) > 0: origins = frozenset(get_as_origin(as_path)) typ = "F" if elem.type == "R" else "U" yield InternalMessage( typ, float(elem.time), collector, int(elem.peer_asn), elem.peer_address, elem.fields["prefix"], origins, as_path, ) elif elem.type == "W": yield InternalMessage( "W", float(elem.time), collector, int(elem.peer_asn), elem.peer_address, elem.fields["prefix"], None, None )