[Wien] Mikrotik RouterOS v7.1rc3 adds Docker (TM) compatible container support -> OLSRd container!

Christoph Loesch (spam-protected)
Do Okt 14 00:27:04 CEST 2021


Hi,

da ich schon dabei bin, habe ich auch gleich Container für OLSRd V2 (auf Basis des OpenWRT Pakets "oonf-olsrd2 - v0.15.1 - Build Olsrd V2 Routing Agent") gebaut.

Hier die Container-Images: (die env Variable für die IP ist hierbei OLSRD2_IP )
dockerolsrd2mipsbe.tar - https://forum.funkfeuer.at/uploads/short-url/iIE1w5zDqrmd3k6m87VuBUqZsCW.tar
dockerolsrd2arm.tar - https://forum.funkfeuer.at/uploads/short-url/rB2fQxcqKPZ9CSB0nmNLfacXOI3.tar

LG Christoph

Am 13.10.2021 um 01:27 schrieb Christoph Loesch:
> Hi,
>
> nachdem ich einen OLSRd Container für den RB960PGS auf MIPSBE gebaut habe, konnte ich es nicht lassen und habe auch einen Container für die lhg_60g auf ARM gebaut.
> Möglich wäre natürlich auch ein Container auf ARM64 (z.B. wireless_wire_nray) aber dazu fehlt mir momentan ein Gerät zum Testen.
> Mit den MIPSBE und ARM Architekturen sollten bereits die meisten Mikrotik Geräte abgedeckt sein, laut Mikrotik Download Seite [1].
>
> MIPSBE:
> CRS1xx, CRS2xx, CRS312-4C+8XG, CRS326-24S+2Q+, CRS354, Cube Lite60, DISC, FiberBox, hAP, hAP ac, hAP ac lite, LDF, LHG, LHG Lite60, ltAP mini, mANTBox, mANTBox 2, mAP, mAP lite, NetBox, NetMetal, PowerBox, PWR-Line, QRT, RB9xx, SXTsq, cAP, hEX Lite, RB4xx, wAP, BaseBox, DynaDish, RB2011, SXT, OmniTik, Groove, Metal, Sextant, RB7xx, hEX PoE
>
> ARM64:
> nRAY, CCR2004, LHGGR
>
> ARM:
> arm64, cAP ac, CRS305-1G-4S+, CRS309-1G-8S+, CRS317-1G-16S+, CRS318, CRS326-24G-2S+, CRS328-24P-4S+, CRS328-4C-20S-4S+, Cube 60G ac, DISC AC, hAP ac², hAP ac³, LDF ac, LHG ac, mANTBox 52, NetMetal ac², RB4011, SXTsq (ac series), wAP 60G series, Chateau, RB3011, RB1100AHx4, Audience, RB450Gx4, wAP ac
>
> Für Interessierte hier die beiden Container-Images zum ausprobieren: (Achtung: die tar-Dateinamen dürfen keine Sonderzeichen haben, wenn sie auf das Mikrotik Gerät geladen werden)
> dockerolsrdmipsbe.tar - https://forum.funkfeuer.at/uploads/short-url/xxWb0xbC9mmM82lZqXRDgN2cd1X.tar
> dockerolsrdarm.tar - https://forum.funkfeuer.at/uploads/short-url/nHomyKl5hyUeicB5a3UenkNeqqx.tar
>
> LG Christoph
>
> [1] https://mikrotik.com/download
>
> Am 11.10.2021 um 00:28 schrieb Christoph Loesch:
>> Hi,
>>
>> mittlerweile habe ich es (mit Unterstützung[1] aus dem Mikrotik Forum) geschafft einen Docker Container mit OLSRd für den RB960PGS (mipsbe) zu bauen.
>>
>> Vorerst muss, wie in der Dokumentation beschrieben[2], auf dem Mikrotik Gerät mindestens RouterOS Version 7.1rc3 laufen und das "container" package installiert sein.
>> Dann braucht es eine bridge und ein virtuelles ethernet interface:
>> /interface/bridge/add name=docker
>> /ip/address/add address=172.17.0.1/16 interface=docker
>> /interface/bridge/port add bridge=docker interface=veth1
>>
>> Grundsätzlich habe ich dafür ein OpenWRT rootfs für mipsbe [3] genommen, OLSRd darauf installiert/konfiguriert und die olsrd-binary samt config davon für einen eigenen Container kopiert.
>> (In der /etc/olsrd/olsrd.conf muss auf jeden fall das Interface eth0 definiert werden.)
>>
>> Das Dockerfile sieht wie folgt aus:
>> FROM scratch
>> ADD ./ /
>> EXPOSE 698
>> USER root
>> CMD ["/bin/sh","/init.sh"]
>>
>> Das init.sh Script zum Starten sieht so aus:
>> #!/bin/sh
>> # Docker automatically assignes an IP address on eth0 but OLSRd requires the
>> # user-wanted IP address to be used as first primary main IP address.
>> # So remove the Docker assigned IP and set the user-wanted IP/mask.
>> # But because Docker will not start the container without its IP, we have to
>> # add it back again later on after setting the user-wanted IP/mask.
>> DOCKER_ASSIGNED_IP=$(/bin/busybox ip -4 addr show eth0 | /bin/busybox awk '/inet/{print $2}')
>> /bin/busybox ip addr del $DOCKER_ASSIGNED_IP dev eth0
>> /bin/busybox ip addr add $OLSRD_IP dev eth0
>> /bin/busybox ip addr add $DOCKER_ASSIGNED_IP dev eth0
>> /usr/sbin/olsrd
>>
>> Bauen kann man so den Container aus dem OpenWRT rootfs, auf jedem beliebigen System wo Docker installiert ist (der Architektur-Tag wird von RouterOS offensichtlich ignoriert):
>> docker build -t olsrd . && docker save olsrd > olsrd.tar
>>
>> Das tar-file kann man dann auf den Mikrotik Router kopieren und mit folgenden Befehlen starten:
>> /container/envs/add list=olsrd name=OLSRD_IP value=193.238.158.13/32
>> /container/add file=olsrd.tar interface=veth1 logging=yes envlist=olsrd
>> /container/start number=0
>>
>> /container/print
>>  0 file=olsrd.tar name="6147d0b5-5c9e-43b1-be42-76b735ec2939" tag="olsrd:latest" os="linux" arch="amd64" interface=veth1 envlist="olsrd" mounts="" dns="" logging=yes status=running
>>
>> Auf Basis dieser Informationen lassen sich somit OLSRd-Container für jedes beliebige Mikrotik Gerät bauen...
>>
>> LG Christoph
>>
>> [1] https://forum.mikrotik.com/viewtopic.php?p=884326#p883341
>> [2] https://help.mikrotik.com/docs/display/ROS/Container
>> [3] https://hub.docker.com/r/openwrtorg/rootfs/tags?name=mips_24kc-21.02.0
>>
>> Am 01.10.2021 um 01:28 schrieb Christoph Loesch:
>>> Hi,
>>>
>>> Mikrotik hat kürzlich Docker support in ihre aktuellste RouterOS (development-)version hinzugefügt! [1]
>>> Da liegt es doch Nahe, einen container mit OLSR dafür zu bauen.. ;)
>>>
>>> Soweit mir bekannt ist, sind die RB960PGS(-PB) [2] die einzigen beiden Mikrotik *Router*, die Gigabit fähig sind und PoE Out auf mehreren Ports bieten. [3]
>>> Nachdem der RB960PGS (bzw. RB960PGS-PB) dem Ubiquiti EdgeRouter-X-SFP (bzw. EdgePoint-R6) ähnlich ist, versuche ich daher einen docker container mit OLSR dafür zu bauen.
>>> Dieser Router arbeitet auf MIPS (big endian) Architektur und braucht somit einen passenden container für mipsbe.
>>>
>>> OLSRd für mipsbe crosscompilen ist offensichtlich (relativ einfach) machbar und rennt bereits auf so manchen MIPSBE-EdgeRoutern in unserem Netz.
>>> Aber einen MIPSBE Host mit Docker zu realisieren scheint derzeit nicht so einfach zu sein, bzw. sind Informationen dazu spärlich um container für MIPSBE zu bauen.
>>> Ich konnte zwar auf einem ER-X-SFP (MIPS little endian) mit OpenWRT 21.02 Docker installieren und habe darauf einen container mit OLSRd gebaut aber das rennt eben nur auf MIPSEL/MIPSLE.
>>> Habe daher versucht den gleichen container, nur eben mit MIPSBE binaries/libs, zu bauen aber dieser container startet leider nicht im RouterOS.
>>> Leider gibt es weder Fehlermeldung noch irgendeine Log-Ausgabe, ich habe meine Erfahrungen auch im Mikrotik Forum [4] beschrieben.
>>>
>>> Vielleicht interessiert das Thema hier noch jemanden bzw. hat jemand Erfahrung mit dem Bau von docker containern für MIPS(be) und hat Ideen wie man das debuggen oder sogar zum Laufen bringen könnte.
>>> Würde mich sehr freuen wenn wir es schaffen OLSR in einem docker container auf RouterOS zum Laufen zu bringen!
>>>
>>> LG Christoph
>>>
>>> [1] https://forum.mikrotik.com/viewtopic.php?t=178341 bzw. https://forum.mikrotik.com/viewtopic.php?f=1&t=178342
>>> [2] https://mikrotik.com/product/RB960PGS bzw. https://mikrotik.com/product/RB960PGS-PB
>>> [3] https://mikrotik.com/products?filter&s=c&r={%22poe_out_ports%22:{%22s%22:%224%22,%22e%22:%2248%22}}#!
>>> [4] https://forum.mikrotik.com/viewtopic.php?f=1&t=178342&p=882645#p882645
>>>
>>>
>>
>




Mehr Informationen über die Mailingliste Wien