ExaBGP是开源工具源码1、ExaBGP是什么?
ExaBGP 将 BGP 消息转换为 JSON 格式,便于上层应用更好的使用。
ExaBGP是开源工具,地址:https://github.com/Exa-Networks/exabgp。
2、ExaBGP版本
主分支现在是 ExaBGP 5.0.x。 程序命令行参数已更改,不再完全向后兼容版本 3 和 4。
主分支架构上存在较大的修改,比如Python升级为3.7以上,并且新增了功能,因此建议在生产中使用 4.2 版本,除非需要获得最新和最强大的功能时,才使用主分支。
3、需要的环境
测试环境操作系统使用的是Centos7.6,之前用ubuntu,总有问题,原因未知。
Python需使用3.7以上的版本,测试时使用的是Python 3.10.4
[root@localhost run]# python -V
Python 3.10.4.
├── exabgp-4.2
│ ├── CHANGELOG.rst
│ ├── CONTRIBUTING.md
│ ├── Dockerfile
│ ├── HISTORY.rst
│ ├── ISSUE_TEMPLATE.md
│ ├── LICENCE.txt
│ ├── PEP8
│ ├── README.md
│ ├── README.rst
│ ├── bin
│ │ ├── exabgpcli
│ │ └── healthcheck
│ ├── debian
│ │ └── README.md
│ ├── dev
│ │ ├── bin
│ │ │ ├── convert-hexdump-raw
│ │ │ ├── format-raw-bmp-hexdump
│ │ │ ├── ibgp
│ │ │ ├── ibgp-open-only
│ │ │ ├── python-profile
│ │ │ ├── pythonstats
│ │ │ ├── recorder-connect
│ │ │ ├── recorder-listener
│ │ │ ├── replay-connect
│ │ │ └── unittest
│ │ ├── cisco
│ │ │ └── ibgp4-helper.txt
│ │ ├── configuration
│ │ │ ├── first.exa
│ │ │ └── first.json
│ │ ├── profile
│ │ │ ├── analyse
│ │ │ └── pyprof2calltree.py
│ │ ├── quagga
│ │ │ ├── ebgpd.conf.v4
│ │ │ ├── ebgpd.conf.v46
│ │ │ ├── ebgpd.conf.v6
│ │ │ ├── ibgpd.conf.v4.md5
│ │ │ ├── ibgpd.conf.v4.parse
│ │ │ ├── ibgpd.conf.v4.parse.large
│ │ │ └── ibgpd.conf.v46
│ │ ├── release
│ │ │ ├── debian
│ │ │ └── google
│ │ └── static
│ │ ├── checker
│ │ ├── flakes
│ │ └── lint
│ ├── doc
│ │ └── man
│ │ ├── exabgp.1
│ │ └── exabgp.conf.5
│ ├── etc
│ │ ├── exabgp
│ │ │ ├── api-add-remove.conf
│ │ │ ├── api-announce.conf
│ │ │ ├── api-announcement.conf
│ │ │ ├── api-api.conf
│ │ │ ├── api-attributes-vpn.conf
│ │ │ ├── api-attributes.conf
│ │ │ ├── api-broken-flow.conf
│ │ │ ├── api-check.conf
│ │ │ ├── api-eor.conf
│ │ │ ├── api-fast.conf
│ │ │ ├── api-flow.conf
│ │ │ ├── api-manual-eor.conf
│ │ │ ├── api-multi-neighbor.conf
│ │ │ ├── api-multisession.conf
│ │ │ ├── api-nexthop-self.conf
│ │ │ ├── api-nexthop.conf
│ │ │ ├── api-no-respawn.conf
│ │ │ ├── api-notification.conf
│ │ │ ├── api-open.conf
│ │ │ ├── api-reload.1.conf
│ │ │ ├── api-reload.2.conf
│ │ │ ├── api-teardown.conf
│ │ │ ├── api-vpls.conf
│ │ │ ├── api-vpnv4.conf
│ │ │ ├── api-watchdog.conf
│ │ │ ├── conf-addpath.conf
│ │ │ ├── conf-aggregator.conf
│ │ │ ├── conf-attributes.conf
│ │ │ ├── conf-flow-redirect.conf
│ │ │ ├── conf-flow.conf
│ │ │ ├── conf-generic-attribute.conf
│ │ │ ├── conf-group-limit.conf
│ │ │ ├── conf-group.conf
│ │ │ ├── conf-ipself4.conf
│ │ │ ├── conf-ipself6.conf
│ │ │ ├── conf-ipv46routes4family.conf
│ │ │ ├── conf-ipv46routes6family.conf
│ │ │ ├── conf-ipv6grouping.conf
│ │ │ ├── conf-l2vpn.conf
│ │ │ ├── conf-largecommunity.conf
│ │ │ ├── conf-name.conf
│ │ │ ├── conf-new-v4.conf
│ │ │ ├── conf-new-v6.conf
│ │ │ ├── conf-no-asn4.conf
│ │ │ ├── conf-parity.conf
│ │ │ ├── conf-path-information.conf
│ │ │ ├── conf-prefix-sid-srv6.conf
│ │ │ ├── conf-prefix-sid.conf
│ │ │ ├── conf-split.conf
│ │ │ ├── conf-template.conf
│ │ │ ├── conf-unknowncap.conf
│ │ │ ├── conf-vpn.conf
│ │ │ ├── example-api-program.run
│ │ │ ├── example-healthcheck.conf
│ │ │ ├── example-tcp-control.conf
│ │ │ ├── example-tcp-control.run
│ │ │ ├── extended-nexthop.conf
│ │ │ ├── parse-community.conf
│ │ │ ├── parse-dual-neighbor.conf
│ │ │ ├── parse-md5.conf
│ │ │ ├── parse-multiple-process.conf
│ │ │ ├── parse-multisession.conf
│ │ │ ├── parse-process.conf
│ │ │ ├── parse-simple-v4.conf
│ │ │ ├── parse-simple-v6.conf
│ │ │ ├── parse-ttl.conf
│ │ │ └── run
│ │ │ ├── api-add-remove.run
│ │ │ ├── api-announce.run
│ │ │ ├── api-announcement.run
│ │ │ ├── api-api.nothing.run
│ │ │ ├── api-api.receive.run
│ │ │ ├── api-attributes-vpn.run
│ │ │ ├── api-attributes.run
│ │ │ ├── api-broken-flow.run
│ │ │ ├── api-check.run
│ │ │ ├── api-eor.run
│ │ │ ├── api-fast.run
│ │ │ ├── api-flow.run
│ │ │ ├── api-manual-eor.run
│ │ │ ├── api-multi-neighbor.run
│ │ │ ├── api-multisession.run
│ │ │ ├── api-nexthop-self.run
│ │ │ ├── api-nexthop.run
│ │ │ ├── api-no-respawn-1.run
│ │ │ ├── api-no-respawn-2.run
│ │ │ ├── api-notification.run
│ │ │ ├── api-open.run
│ │ │ ├── api-reload.run
│ │ │ ├── api-teardown.run
│ │ │ ├── api-vpls.run
│ │ │ ├── api-vpnv4.run
│ │ │ ├── dynamic-1.pl
│ │ │ ├── dynamic-1.sh
│ │ │ ├── stderr-1.py
│ │ │ ├── syslog-1.py
│ │ │ ├── watchdog-1.pl
│ │ │ ├── watchdog-1.sh
│ │ │ └── watchdog.run
│ │ ├── systemd
│ │ │ ├── exabgp.service
│ │ │ └── exabgp@.service
│ │ └── sysusers.d
│ │ └── exabgp.conf
│ ├── lib
│ │ └── exabgp
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── application
│ │ │ ├── __init__.py
│ │ │ ├── bgp.py
│ │ │ ├── cli.py
│ │ │ ├── control.py
│ │ │ ├── flow.py
│ │ │ ├── healthcheck.py
│ │ │ ├── main.py
│ │ │ ├── netlink.py
│ │ │ └── tojson.py
│ │ ├── bgp
│ │ │ ├── __init__.py
│ │ │ ├── fsm.py
│ │ │ ├── message
│ │ │ │ ├── __init__.py
│ │ │ │ ├── direction.py
│ │ │ │ ├── keepalive.py
│ │ │ │ ├── message.py
│ │ │ │ ├── nop.py
│ │ │ │ ├── notification.py
│ │ │ │ ├── open
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── asn.py
│ │ │ │ │ ├── capability
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── addpath.py
│ │ │ │ │ │ ├── asn4.py
│ │ │ │ │ │ ├── capabilities.py
│ │ │ │ │ │ ├── capability.py
│ │ │ │ │ │ ├── extended.py
│ │ │ │ │ │ ├── graceful.py
│ │ │ │ │ │ ├── hostname.py
│ │ │ │ │ │ ├── mp.py
│ │ │ │ │ │ ├── ms.py
│ │ │ │ │ │ ├── negotiated.py
│ │ │ │ │ │ ├── nexthop.py
│ │ │ │ │ │ ├── operational.py
│ │ │ │ │ │ ├── refresh.py
│ │ │ │ │ │ └── unknown.py
│ │ │ │ │ ├── holdtime.py
│ │ │ │ │ ├── routerid.py
│ │ │ │ │ └── version.py
│ │ │ │ ├── operational.py
│ │ │ │ ├── refresh.py
│ │ │ │ ├── unknown.py
│ │ │ │ └── update
│ │ │ │ ├── __init__.py
│ │ │ │ ├── attribute
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── aggregator.py
│ │ │ │ │ ├── aigp.py
│ │ │ │ │ ├── aspath.py
│ │ │ │ │ ├── atomicaggregate.py
│ │ │ │ │ ├── attribute.py
│ │ │ │ │ ├── attributes.py
│ │ │ │ │ ├── bgpls
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── link
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── admingroup.py
│ │ │ │ │ │ │ ├── igpmetric.py
│ │ │ │ │ │ │ ├── linkname.py
│ │ │ │ │ │ │ ├── maxbw.py
│ │ │ │ │ │ │ ├── mplsmask.py
│ │ │ │ │ │ │ ├── opaque.py
│ │ │ │ │ │ │ ├── protection.py
│ │ │ │ │ │ │ ├── rsvpbw.py
│ │ │ │ │ │ │ ├── rterid.py
│ │ │ │ │ │ │ ├── sradj.py
│ │ │ │ │ │ │ ├── sradjlan.py
│ │ │ │ │ │ │ ├── srlg.py
│ │ │ │ │ │ │ ├── temetric.py
│ │ │ │ │ │ │ └── unrsvpbw.py
│ │ │ │ │ │ ├── linkstate.py
│ │ │ │ │ │ ├── node
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── isisarea.py
│ │ │ │ │ │ │ ├── lterid.py
│ │ │ │ │ │ │ ├── nodeflags.py
│ │ │ │ │ │ │ ├── nodename.py
│ │ │ │ │ │ │ ├── opaque.py
│ │ │ │ │ │ │ ├── sralgo.py
│ │ │ │ │ │ │ └── srcap.py
│ │ │ │ │ │ └── prefix
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── igpextags.py
│ │ │ │ │ │ ├── igpflags.py
│ │ │ │ │ │ ├── igptags.py
│ │ │ │ │ │ ├── opaque.py
│ │ │ │ │ │ ├── ospfaddr.py
│ │ │ │ │ │ ├── prefixmetric.py
│ │ │ │ │ │ ├── srigpprefixattr.py
│ │ │ │ │ │ ├── srprefix.py
│ │ │ │ │ │ └── srrid.py
│ │ │ │ │ ├── clusterlist.py
│ │ │ │ │ ├── community
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── extended
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── bandwidth.py
│ │ │ │ │ │ │ ├── chso.py
│ │ │ │ │ │ │ ├── communities.py
│ │ │ │ │ │ │ ├── community.py
│ │ │ │ │ │ │ ├── encapsulation.py
│ │ │ │ │ │ │ ├── flowspec_scope.py
│ │ │ │ │ │ │ ├── l2info.py
│ │ │ │ │ │ │ ├── mac_mobility.py
│ │ │ │ │ │ │ ├── origin.py
│ │ │ │ │ │ │ ├── rt.py
│ │ │ │ │ │ │ ├── rt_record.py
│ │ │ │ │ │ │ └── traffic.py
│ │ │ │ │ │ ├── initial
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── communities.py
│ │ │ │ │ │ │ └── community.py
│ │ │ │ │ │ └── large
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── communities.py
│ │ │ │ │ │ └── community.py
│ │ │ │ │ ├── generic.py
│ │ │ │ │ ├── localpref.py
│ │ │ │ │ ├── med.py
│ │ │ │ │ ├── mprnlri.py
│ │ │ │ │ ├── mpurnlri.py
│ │ │ │ │ ├── nexthop.py
│ │ │ │ │ ├── origin.py
│ │ │ │ │ ├── originatorid.py
│ │ │ │ │ ├── pmsi.py
│ │ │ │ │ └── sr
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── ipv6sid.py
│ │ │ │ │ ├── labelindex.py
│ │ │ │ │ ├── prefixsid.py
│ │ │ │ │ ├── srgb.py
│ │ │ │ │ ├── srv6l3vpnsid.py
│ │ │ │ │ └── srv6vpnsid.py
│ │ │ │ ├── eor.py
│ │ │ │ └── nlri
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bgpls
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── link.py
│ │ │ │ │ ├── nlri.py
│ │ │ │ │ ├── node.py
│ │ │ │ │ ├── prefixv4.py
│ │ │ │ │ ├── prefixv6.py
│ │ │ │ │ └── tlvs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── ifaceaddr.py
│ │ │ │ │ ├── ipreach.py
│ │ │ │ │ ├── linkid.py
│ │ │ │ │ ├── neighaddr.py
│ │ │ │ │ ├── node.py
│ │ │ │ │ ├── ospfroute.py
│ │ │ │ │ └── prefix.py
│ │ │ │ ├── cidr.py
│ │ │ │ ├── evpn
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── ethernetad.py
│ │ │ │ │ ├── mac.py
│ │ │ │ │ ├── multicast.py
│ │ │ │ │ ├── nlri.py
│ │ │ │ │ ├── prefix.py
│ │ │ │ │ └── segment.py
│ │ │ │ ├── flow.py
│ │ │ │ ├── inet.py
│ │ │ │ ├── ipvpn.py
│ │ │ │ ├── label.py
│ │ │ │ ├── nlri.py
│ │ │ │ ├── qualifier
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── esi.py
│ │ │ │ │ ├── etag.py
│ │ │ │ │ ├── labels.py
│ │ │ │ │ ├── mac.py
│ │ │ │ │ ├── path.py
│ │ │ │ │ └── rd.py
│ │ │ │ ├── rtc.py
│ │ │ │ └── vpls.py
│ │ │ ├── neighbor.py
│ │ │ └── timer.py
│ │ ├── configuration
│ │ │ ├── __init__.py
│ │ │ ├── announce
│ │ │ │ ├── __init__.py
│ │ │ │ ├── flow.py
│ │ │ │ ├── ip.py
│ │ │ │ ├── label.py
│ │ │ │ ├── path.py
│ │ │ │ ├── vpls.py
│ │ │ │ └── vpn.py
│ │ │ ├── capability.py
│ │ │ ├── check.py
│ │ │ ├── configuration.py
│ │ │ ├── core
│ │ │ │ ├── __init__.py
│ │ │ │ ├── error.py
│ │ │ │ ├── format.py
│ │ │ │ ├── location.py
│ │ │ │ ├── scope.py
│ │ │ │ ├── section.py
│ │ │ │ └── tokeniser.py
│ │ │ ├── environment.py
│ │ │ ├── flow
│ │ │ │ ├── __init__.py
│ │ │ │ ├── match.py
│ │ │ │ ├── parser.py
│ │ │ │ ├── route.py
│ │ │ │ ├── scope.py
│ │ │ │ └── then.py
│ │ │ ├── l2vpn
│ │ │ │ ├── __init__.py
│ │ │ │ ├── parser.py
│ │ │ │ └── vpls.py
│ │ │ ├── neighbor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── api.py
│ │ │ │ ├── family.py
│ │ │ │ ├── nexthop.py
│ │ │ │ └── parser.py
│ │ │ ├── operational
│ │ │ │ ├── __init__.py
│ │ │ │ └── parser.py
│ │ │ ├── parser.py
│ │ │ ├── process
│ │ │ │ ├── __init__.py
│ │ │ │ └── parser.py
│ │ │ ├── setup.py
│ │ │ ├── static
│ │ │ │ ├── __init__.py
│ │ │ │ ├── mpls.py
│ │ │ │ ├── parser.py
│ │ │ │ └── route.py
│ │ │ ├── template
│ │ │ │ ├── __init__.py
│ │ │ │ └── neighbor.py
│ │ │ └── usage.py
│ │ ├── data
│ │ │ ├── __init__.py
│ │ │ └── check.py
│ │ ├── debug.py
│ │ ├── logger.py
│ │ ├── netlink
│ │ │ ├── __init__.py
│ │ │ ├── attributes.py
│ │ │ ├── firewall.py
│ │ │ ├── message.py
│ │ │ ├── netlink.py
│ │ │ ├── old.py
│ │ │ ├── route
│ │ │ │ ├── __init__.py
│ │ │ │ ├── address.py
│ │ │ │ ├── link.py
│ │ │ │ ├── neighbor.py
│ │ │ │ └── network.py
│ │ │ ├── sequence.py
│ │ │ └── tc.py
│ │ ├── protocol
│ │ │ ├── __init__.py
│ │ │ ├── family.py
│ │ │ ├── ip
│ │ │ │ ├── __init__.py
│ │ │ │ ├── fragment.py
│ │ │ │ ├── icmp.py
│ │ │ │ ├── netmask.py
│ │ │ │ ├── port.py
│ │ │ │ └── tcp
│ │ │ │ ├── __init__.py
│ │ │ │ └── flag.py
│ │ │ ├── iso
│ │ │ │ └── __init__.py
│ │ │ └── resource.py
│ │ ├── reactor
│ │ │ ├── __init__.py
│ │ │ ├── api
│ │ │ │ ├── __init__.py
│ │ │ │ ├── command
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── announce.py
│ │ │ │ │ ├── command.py
│ │ │ │ │ ├── limit.py
│ │ │ │ │ ├── neighbor.py
│ │ │ │ │ ├── reactor.py
│ │ │ │ │ ├── rib.py
│ │ │ │ │ └── watchdog.py
│ │ │ │ ├── processes.py
│ │ │ │ ├── response
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── answer.py
│ │ │ │ │ ├── json.py
│ │ │ │ │ └── text.py
│ │ │ │ └── transcoder.py
│ │ │ ├── asynchronous.py
│ │ │ ├── daemon.py
│ │ │ ├── delay.py
│ │ │ ├── interrupt.py
│ │ │ ├── keepalive.py
│ │ │ ├── listener.py
│ │ │ ├── loop.py
│ │ │ ├── network
│ │ │ │ ├── __init__.py
│ │ │ │ ├── connection.py
│ │ │ │ ├── error.py
│ │ │ │ ├── incoming.py
│ │ │ │ ├── outgoing.py
│ │ │ │ └── tcp.py
│ │ │ ├── peer.py
│ │ │ └── protocol.py
│ │ ├── rib
│ │ │ ├── __init__.py
│ │ │ ├── cache.py
│ │ │ ├── change.py
│ │ │ ├── incoming.py
│ │ │ └── outgoing.py
│ │ ├── util
│ │ │ ├── __init__.py
│ │ │ ├── cache.py
│ │ │ ├── coroutine.py
│ │ │ ├── dictionary.py
│ │ │ ├── dns.py
│ │ │ ├── enumeration.py
│ │ │ ├── errstr.py
│ │ │ ├── hashtable.py
│ │ │ ├── ip.py
│ │ │ ├── od.py
│ │ │ ├── panic.py
│ │ │ ├── test.py
│ │ │ ├── trace.py
│ │ │ └── usage.py
│ │ ├── vendoring
│ │ │ ├── __init__.py
│ │ │ ├── bitstring.py
│ │ │ ├── cmd2.py
│ │ │ ├── counter.py
│ │ │ ├── docopt.py
│ │ │ ├── gcdump.py
│ │ │ ├── ipaddress.py
│ │ │ ├── lsprofcalltree.py
│ │ │ ├── objgraph.py
│ │ │ ├── ordereddict.py
│ │ │ ├── profiler.py
│ │ │ ├── pyparsing.py
│ │ │ └── six.py
│ │ └── version.py
│ ├── logo
│ │ ├── ExaBGP.png
│ │ ├── Twitter.indd
│ │ └── Twitter.jpg
│ ├── qa
│ │ ├── add-path-receive.conf
│ │ ├── add-path-sendreceive.conf
│ │ ├── bin
│ │ │ ├── conversation.serial
│ │ │ ├── cover
│ │ │ ├── decode
│ │ │ ├── functional
│ │ │ ├── parsing
│ │ │ └── rmpyc
│ │ ├── ci
│ │ │ ├── api-add-remove.ci
│ │ │ ├── api-add-remove.msg
│ │ │ ├── api-announce.ci
│ │ │ ├── api-announce.msg
│ │ │ ├── api-announcement.ci
│ │ │ ├── api-announcement.msg
│ │ │ ├── api-api.ci
│ │ │ ├── api-api.msg
│ │ │ ├── api-attributes-vpn.ci
│ │ │ ├── api-attributes-vpn.msg
│ │ │ ├── api-attributes.ci
│ │ │ ├── api-attributes.msg
│ │ │ ├── api-broken-flow.ci
│ │ │ ├── api-broken-flow.msg
│ │ │ ├── api-check.ci
│ │ │ ├── api-check.msg
│ │ │ ├── api-eor.ci
│ │ │ ├── api-eor.msg
│ │ │ ├── api-fast.ci
│ │ │ ├── api-fast.msg
│ │ │ ├── api-flow.ci
│ │ │ ├── api-flow.msg
│ │ │ ├── api-manual-eor.ci
│ │ │ ├── api-manual-eor.msg
│ │ │ ├── api-multi-neighbor.ci
│ │ │ ├── api-multi-neighbor.msg
│ │ │ ├── api-multisession.ci
│ │ │ ├── api-multisession.msg
│ │ │ ├── api-nexthop-self.ci
│ │ │ ├── api-nexthop-self.msg
│ │ │ ├── api-nexthop.ci
│ │ │ ├── api-nexthop.msg
│ │ │ ├── api-no-respawn.ci
│ │ │ ├── api-no-respawn.msg
│ │ │ ├── api-notification.ci
│ │ │ ├── api-notification.msg
│ │ │ ├── api-open.ci
│ │ │ ├── api-open.msg
│ │ │ ├── api-reload.ci
│ │ │ ├── api-reload.msg
│ │ │ ├── api-teardown.ci
│ │ │ ├── api-teardown.msg
│ │ │ ├── api-vpls.ci
│ │ │ ├── api-vpls.msg
│ │ │ ├── api-vpnv4.ci
│ │ │ ├── api-vpnv4.msg
│ │ │ ├── conf-addpath.ci
│ │ │ ├── conf-addpath.msg
│ │ │ ├── conf-aggregator.ci
│ │ │ ├── conf-aggregator.msg
│ │ │ ├── conf-attributes.ci
│ │ │ ├── conf-attributes.msg
│ │ │ ├── conf-flow-redirect.ci
│ │ │ ├── conf-flow-redirect.msg
│ │ │ ├── conf-flow.ci
│ │ │ ├── conf-flow.msg
│ │ │ ├── conf-generic-attribute.ci
│ │ │ ├── conf-generic-attribute.msg
│ │ │ ├── conf-group-limit.ci
│ │ │ ├── conf-group-limit.msg
│ │ │ ├── conf-group.ci
│ │ │ ├── conf-group.msg
│ │ │ ├── conf-ipself4.ci
│ │ │ ├── conf-ipself4.msg
│ │ │ ├── conf-ipself6.ci
│ │ │ ├── conf-ipself6.msg
│ │ │ ├── conf-ipv46routes4family.ci
│ │ │ ├── conf-ipv46routes4family.msg
│ │ │ ├── conf-ipv46routes6family.ci
│ │ │ ├── conf-ipv46routes6family.msg
│ │ │ ├── conf-ipv6grouping.ci
│ │ │ ├── conf-ipv6grouping.msg
│ │ │ ├── conf-l2vpn.ci
│ │ │ ├── conf-l2vpn.msg
│ │ │ ├── conf-largecommunity.ci
│ │ │ ├── conf-largecommunity.msg
│ │ │ ├── conf-name.ci
│ │ │ ├── conf-name.msg
│ │ │ ├── conf-new-v4.ci
│ │ │ ├── conf-new-v4.msg
│ │ │ ├── conf-new-v6.ci
│ │ │ ├── conf-new-v6.msg
│ │ │ ├── conf-no-asn4.ci
│ │ │ ├── conf-no-asn4.msg
│ │ │ ├── conf-parity.ci
│ │ │ ├── conf-parity.msg
│ │ │ ├── conf-path-information.ci
│ │ │ ├── conf-path-information.msg
│ │ │ ├── conf-prefix-sid.ci
│ │ │ ├── conf-prefix-sid.msg
│ │ │ ├── conf-split.ci
│ │ │ ├── conf-split.msg
│ │ │ ├── conf-template.ci
│ │ │ ├── conf-template.msg
│ │ │ ├── conf-unknowncap.ci
│ │ │ ├── conf-unknowncap.msg
│ │ │ ├── conf-vpn.ci
│ │ │ ├── conf-vpn.msg
│ │ │ ├── conf-watchdog.ci
│ │ │ ├── conf-watchdog.msg
│ │ │ ├── extended-nexthop.ci
│ │ │ ├── extended-nexthop.msg
│ │ │ ├── skip-large-mp.conf
│ │ │ └── skip-large.conf
│ │ ├── new
│ │ │ └── simple.conf
│ │ ├── requirements.txt
│ │ ├── sbin
│ │ │ └── bgp
│ │ ├── self
│ │ │ ├── api
│ │ │ │ ├── receive
│ │ │ │ ├── receive.py
│ │ │ │ ├── receive.template
│ │ │ │ ├── send
│ │ │ │ └── send.template
│ │ │ ├── attribute
│ │ │ │ ├── api-internet.py
│ │ │ │ ├── receive
│ │ │ │ ├── send
│ │ │ │ └── send.template
│ │ │ ├── big
│ │ │ │ ├── api-internet.py
│ │ │ │ ├── dump-all.py
│ │ │ │ ├── dump-number.py
│ │ │ │ ├── dump-to-screen.py
│ │ │ │ ├── receive
│ │ │ │ ├── receive.template
│ │ │ │ ├── send
│ │ │ │ └── send.template
│ │ │ ├── flow
│ │ │ │ ├── first
│ │ │ │ ├── first.template
│ │ │ │ ├── flow-change.py
│ │ │ │ ├── log-syslog.py
│ │ │ │ ├── second
│ │ │ │ └── second.template
│ │ │ ├── json
│ │ │ │ ├── receive
│ │ │ │ ├── receive.py
│ │ │ │ ├── receive.template
│ │ │ │ ├── send
│ │ │ │ └── send.template
│ │ │ ├── ka
│ │ │ │ ├── ka-receive
│ │ │ │ ├── ka-receive.conf
│ │ │ │ ├── ka-send
│ │ │ │ └── ka-send.conf
│ │ │ ├── load
│ │ │ │ ├── api-internet.py
│ │ │ │ ├── dump-all.py
│ │ │ │ ├── dump-number.py
│ │ │ │ ├── dump-to-screen.py
│ │ │ │ ├── receive
│ │ │ │ ├── receive.template
│ │ │ │ ├── send
│ │ │ │ └── send.template
│ │ │ ├── operational
│ │ │ │ ├── operational-print.py
│ │ │ │ ├── operational-receive
│ │ │ │ ├── operational-receive.conf
│ │ │ │ ├── operational-send
│ │ │ │ ├── operational-send.conf
│ │ │ │ └── operational-send.py
│ │ │ ├── refresh
│ │ │ │ ├── first
│ │ │ │ ├── first.template
│ │ │ │ ├── re-ask.py
│ │ │ │ ├── second
│ │ │ │ └── second.template
│ │ │ ├── simple
│ │ │ │ ├── first
│ │ │ │ ├── first.template
│ │ │ │ ├── log-syslog.py
│ │ │ │ ├── second
│ │ │ │ └── second.template
│ │ │ └── update
│ │ │ ├── update-receive
│ │ │ ├── update-receive.conf
│ │ │ ├── update-receive.py
│ │ │ ├── update-send
│ │ │ ├── update-send.conf
│ │ │ └── update-send.py
│ │ └── tests
│ │ ├── bgpls_test.py
│ │ ├── cache_test.py
│ │ ├── connection.py
│ │ ├── control_test.py
│ │ ├── datatype.py
│ │ ├── decode_test.py
│ │ ├── flow_test.py
│ │ ├── l2vpn_test.py
│ │ ├── nlri_tests.py
│ │ ├── open_test.py
│ │ ├── parsing_test.py
│ │ └── protocol.py
│ ├── redhat
│ │ ├── python-exabgp.spec
│ │ └── python-exabgp.spec.git
│ ├── release
│ ├── requirements.txt
│ ├── run
│ ├── sbin
│ │ └── exabgp
│ ├── service
│ │ └── bgp-service-ip
│ │ ├── log
│ │ │ └── run
│ │ └── run
│ ├── setup.cfg
│ ├── setup.py
│ └── tox.ini
└── 找例子网_ExaBGP-4.2.zip
91 directories, 645 files
评论