46 lines
1.7 KiB
Markdown
Raw Normal View History

# gobgp-evpn — modular EVPN test-route injector
A **profile-gated, non-production** GoBGP instance for exercising the EVPN
ingestion pipeline (roadmap E5). The CML IOS-XR lab cannot originate EVPN
routes, so this container synthesises them.
## What it does
`gobgp-evpn` runs GoBGP with no BGP peers, BMP-exporting its local RIB
(`route-monitoring-policy = local-rib`) to the OpenBMP collector. Routes
injected with `inject-evpn.sh` are parsed by the collector and published to
the `openbmp.parsed.evpn` Kafka topic, where the EVPN consumer picks them up
and writes the `evpn_rib` table.
## Usage
```sh
# start the injector (not started by a normal `docker compose up`)
docker compose --profile evpn-test up -d gobgp-evpn
# push synthetic type-2 / type-3 / type-5 EVPN routes
bash gobgp-evpn/inject-evpn.sh
# inspect what GoBGP holds
docker exec obmp-gobgp-evpn gobgp global rib -a evpn
# stop it when done testing
docker compose --profile evpn-test stop gobgp-evpn
```
## Notes
- Local AS 65010, router-id 10.40.40.251 — distinct from the production
`gobgp` global-table feed (AS 65001).
- It is *not* part of the default stack: the `evpn-test` Compose profile
keeps it out of production and lets it be started/stopped on demand.
## Collector type-5 limitation
The OpenBMP collector 2.2.3 parses EVPN **type-2 (MAC/IP)** and **type-3
(inclusive multicast)** cleanly, but **mis-decodes type-5 (IP-prefix)**: the
IP prefix bleeds into the RD field on the `openbmp.parsed.evpn` topic
(observed garbage RDs such as `6154:3523870730`). `inject-evpn.sh` therefore
injects only type-2 and type-3. Full type-5 support needs a newer collector
or the GoBMP path — see `docs/ROADMAP.md` Track E (E5).