Startseite BGP Monitoring Protocol & OpenBMP
Eintrag
Abbrechen

BGP Monitoring Protocol & OpenBMP

Durch das BGP Monitoring Protokoll können Netzwerkgeräte (sofern diese BMP unterstützen) ihre aktuellen BGP Daten (Peers, Routingtabellen, …) an einen BMP-Server übertragen. Einer dieser Server ist OpenBMP. Dieser kann entweder per Hand installiert werden, oder man rollt das Ganze als Docker Container aus. Leider ist dies nicht trivial, da es per default Zugriffsprobleme mit dem Datenbankserver gibt.

Es sind Docker, Docker-Compose und git erforderlich.

Installation

Die Installation erfolgt per:

1
2
3
4
5
root@docker2:~# mkdir openbmp
root@docker2:~# cd openbmp/
root@docker2:~/openbmp# wget https://raw.githubusercontent.com/OpenBMP/obmp-docker/main/docker-compose.yml

root@docker2:~/openbmp# git clone https://github.com/OpenBMP/obmp-grafana.git

Konfiguration

Container

Die Compose-Datei sollte angepasst werden, insbesondere die Passwörter vom DB-User und vom Grafana-Admin. Diese werden hier auf “beispiel123” gesetzt. Das DB-User Passwort muss ebenfalls im Abschnitt des obpm-psql Containers gesetzt werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
container_name: obmp-psql
[...]
 - POSTGRES_PASSWORD=beispiel123
[...]

container_name: obmp-psql-app
[...]
- POSTGRES_PASSWORD=beispiel123
[...]

container_name: obmp-grafana
[...]
 - GF_SECURITY_ADMIN_PASSWORD=beispiel123
[...]

Speicherverzeichnis

Der Speicher und das Arbeitsverzeichnis werden nach /opt/openbmp gelegt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mkdir /opt/openbmp
export OBMP_DATA_ROOT=/opt/openbmp
mkdir -p $OBMP_DATA_ROOT

chmod -R 7777 $OBMP_DATA_ROOT

mkdir -p ${OBMP_DATA_ROOT}/config
mkdir -p ${OBMP_DATA_ROOT}/kafka-data
mkdir -p ${OBMP_DATA_ROOT}/zk-data
mkdir -p ${OBMP_DATA_ROOT}/zk-log
mkdir -p ${OBMP_DATA_ROOT}/postgres/data
mkdir -p ${OBMP_DATA_ROOT}/postgres/ts
mkdir -p ${OBMP_DATA_ROOT}/grafana

chmod -R 7777 $OBMP_DATA_ROOT/*

Grafana

Die Grafanadaten müssen umkopiert werden.

1
cp -r obmp-grafana/dashboards obmp-grafana/provisioning ${OBMP_DATA_ROOT}/grafana/

Container starten

Die Container werden per

1
2
docker-compose pull
docker-compose -p obmp up

gestartet.

Nach einem Login auf http://<ip>:3000/login wird im Log des DB-Containers der Hinweis

DETAIL: Password does not match for user "openbmp".`

auftauchen. Im Webinterface “Configuration -> Data Sources -> Postgres” auswählen. Das Passwort vom obmp-User muss hier eingetragen werden.

Netzwerkplan

Auf “Save” klicken. Damit sollte die Anbindung konfiguriert sein. 

DB-Server

Der Zugriff auf den DB-Server muss im Container geprüft werden. Dazu muss die Authentifizierung für local auf MD5 gesetzt werden.

1
2
3
4
5
6
7
8
9
10
docker exec -it 8b05124f3b6c /bin/bash
bash-5.1# su - postgres
8b05124f3b6c:~$ vi /var/lib/postgresql/data/pg_hba.conf
local all all md5
pg_ctl restart -D /var/lib/postgresql/data/
docker exec -it 8b05124f3b6c /bin/bash
bash-5.1# su - postgres
8b05124f3b6c:~$ psql -U openbmp
Password for user openbmp:
openbmp=#

Sollte das Passwort nicht funktionieren, muss der Login-Mechanismus wieder auf “trust” gesetzt werden. Anschließend kann per 

1
2
psql -U openbmp
openbmp=# ALTER USER openbmp PASSWORD 'beispiel123';

das Passwort gesetz werden und der Login-Mechanismus auf MD5 zurückgesetzt werden.

Netzwerkgeräte anpassen

Auf den Netzkomponenten muss jetzt der BMP Server eingerichtet werden. Unter Junos geschieht dies per:

1
2
3
4
set routing-options bmp station monitor1 connection-mode active
set routing-options bmp station monitor1 station-address 172.23.0.250
set routing-options bmp station monitor1 routing-instance mgmt_junos
set routing-options bmp station monitor1 station-port 5000
1
2
3
4
5
6
7
8
9
heiko@spine01# show routing-options
bmp {
  station monitor1 {
    connection-mode active;
    station-address 172.23.0.250;
    routing-instance mgmt_junos;
    station-port 5000;
   }
}

Der OpenBMP Server hat die Adresse 172.23.0.250 und nimmt Daten auf Port 5000/tcp entgegen.