Hello bird users, I have two hosts running linux containers, beeing wired to the corresponding host via veth interfaces. I don't use bridging and so want to make the networking work with routing. For a single linux container (e.g. on host A - 10.77.0.24) to be accessible from the opposite host (host B - 10.77.0.25) I could set up routes like root@hosta:~# route add -host <container_ip> vethXYZ where vethXYZ is the veth peer accessible from the host machine, and root@hostb:~# route add <container_ip> gw 10.77.0.24 To automate this I tried to make BIRD creating the second rule automatically. Because I don't really need a big and sophisticated protocol for this I tried RIP which (according to the user manual) seemed rather simple. But, I could not make it work and as stated [1] the RIP support in BIRD is broken. Second I tried BGP and BGP in general works, but these device routes obove weren't synced. The kernel protocol receives these routes as in
KRT: Received route 10.66.0.23/32 with unknown ifindex 4
(birdc debug output on host A; 10.66.0.23/32 is the container IP address) but they are not propagated to the second host via BGP. My bird.conf looks like this: protocol kernel { scan time 10; device routes; export all; learn; } protocol direct { interface "*"; } protocol bgp BiGP1 { local as 65001; neighbor 10.77.0.25 as 65001; export all; } Now I'm wondering how to make BIRD sync these routes or if I'm just using the wrong protocol. What would be the preferred way to solve this? [1] http://www.mail-archive.com/bird-users@atrey.karlin.mff.cuni.cz/msg01213.htm... Thanks in advance -- Patrick Westphal Inqbus GmbH & Co. KG Karl-Heine-Straße 99 04229 Leipzig 0341 - 600 130 31 http://inqbus.de
Hi Patrick RIP has been "repaired" lately in the git repository. It works fine with IPv4. IPv6 basically works, but RIPng needs a rewrite in order to become RFC compliant. Mailing list discussions: 1. IPv4 patch http://marc.info/?l=bird-users&m=131960872119599&w=2 2. IPv6 patch http://marc.info/?l=bird-users&m=132019454829485&w=2 Repository commits: 1. IPv4 patch https://git.nic.cz/redmine/projects/bird/repository/revisions/14a8f396e1d8fc... Cheers, Roman On 30/11/11 02:07, Patrick Westphal wrote:
Hello bird users,
I have two hosts running linux containers, beeing wired to the corresponding host via veth interfaces. I don't use bridging and so want to make the networking work with routing. For a single linux container (e.g. on host A - 10.77.0.24) to be accessible from the opposite host (host B - 10.77.0.25) I could set up routes like
root@hosta:~# route add -host <container_ip> vethXYZ
where vethXYZ is the veth peer accessible from the host machine, and
root@hostb:~# route add <container_ip> gw 10.77.0.24
To automate this I tried to make BIRD creating the second rule automatically. Because I don't really need a big and sophisticated protocol for this I tried RIP which (according to the user manual) seemed rather simple. But, I could not make it work and as stated [1] the RIP support in BIRD is broken.
Second I tried BGP and BGP in general works, but these device routes obove weren't synced. The kernel protocol receives these routes as in
KRT: Received route 10.66.0.23/32 with unknown ifindex 4
(birdc debug output on host A; 10.66.0.23/32 is the container IP address) but they are not propagated to the second host via BGP.
My bird.conf looks like this:
protocol kernel { scan time 10; device routes; export all; learn; }
protocol direct { interface "*"; }
protocol bgp BiGP1 { local as 65001; neighbor 10.77.0.25 as 65001; export all; }
Now I'm wondering how to make BIRD sync these routes or if I'm just using the wrong protocol. What would be the preferred way to solve this?
[1] http://www.mail-archive.com/bird-users@atrey.karlin.mff.cuni.cz/msg01213.htm...
Thanks in advance
On Tue, Nov 29, 2011 at 04:07:31PM +0100, Patrick Westphal wrote:
Hello bird users,
I have two hosts running linux containers, beeing wired to the corresponding host via veth interfaces. I don't use bridging and so want to make the networking work with routing. For a single linux container (e.g. on host A - 10.77.0.24) to be accessible from the opposite host (host B - 10.77.0.25) I could set up routes like
root@hosta:~# route add -host <container_ip> vethXYZ
where vethXYZ is the veth peer accessible from the host machine, and
root@hostb:~# route add <container_ip> gw 10.77.0.24
Note that BIRD does not really work on interfaces that do not have any configured IP addresses. (just adding that using 'route add -host' does not work). Not sure if i understand correctly what you want, if you want to automatically configure addresses of ptp links according to what is connected to the other side, that it is not possible with BIRD. The issue is unrelated to routing protocols. If your vethXYZ has some configured IP addresses, then propagating some /32 loop address should not be a problem. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
--On 4 December 2011 12:17:44 +0100 Ondrej Zajicek <santiago@crfreenet.org> wrote:
Note that BIRD does not really work on interfaces that do not have any configured IP addresses. (just adding that using 'route add -host' does not work).
It does not propagate them, but learning them works just fine. -- Alex Bligh
Am 04.12.2011 12:19, schrieb Alex Bligh:
--On 4 December 2011 12:17:44 +0100 Ondrej Zajicek <santiago@crfreenet.org> wrote:
Note that BIRD does not really work on interfaces that do not have any configured IP addresses. (just adding that using 'route add -host' does not work).
It does not propagate them, but learning them works just fine.
OK, thanks a lot. That's what I wanted to know. -- inqbus it consulting Herloßsohnstraße 12 04155 Leipzig +49 (341) 5643800 http://inqbus.de
On Sun, Dec 04, 2011 at 11:19:04AM +0000, Alex Bligh wrote:
--On 4 December 2011 12:17:44 +0100 Ondrej Zajicek <santiago@crfreenet.org> wrote:
Note that BIRD does not really work on interfaces that do not have any configured IP addresses. (just adding that using 'route add -host' does not work).
It does not propagate them, but learning them works just fine.
I think there have to be at least one address on that iface (at least for OSPF and BGP, not sure for RIP) to even the protocol consider that iface to be reeady. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
--On 4 December 2011 18:39:14 +0100 Ondrej Zajicek <santiago@crfreenet.org> wrote:
Note that BIRD does not really work on interfaces that do not have any configured IP addresses. (just adding that using 'route add -host' does not work).
It does not propagate them, but learning them works just fine.
I think there have to be at least one address on that iface (at least for OSPF and BGP, not sure for RIP) to even the protocol consider that iface to be reeady.
We use something like the following, which successfully picks up routes to interfaces with no IP addresses on Linux. # Import kernel routes. These come in with RTS_INHERIT protocol kernel evrkernel { persist; # Don't remove routes on bird shutdown scan time 10; # Scan kernel routing table every 20 seconds import all; export all; learn; # Learn all alien routes from the kernel } # Import all directly connected routes. These come in with RTS_DEVICE protocol direct evrdirect { interface "-evrr-000000", "evrr-*"; export all; } -- Alex Bligh
participants (4)
-
Alex Bligh -
Ondrej Zajicek -
Patrick Westphal -
Roman Hoog Antink