Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
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
        )