Hi, I am trying to run babeld (1.5.1 of Debian package) on tinc[1] mesh VPN in switch mode and disabled internal forwarding. cat tinc.conf ,---- | Mode = switch | Forwarding = off | Broadcast = direct `----
which mimicks a wireless mesh network. Taking a 3-node (A, B, C) setup for example, A--C--B where A-C and B-C can talk to each other and send link-local multicast packets, but not A-B. They are assigned IPs 10.16.16.50/32 (A), 10.16.16.51/32 (B), 10.16.16.52/32 (C). They share the same babel configuration, "manifold" is the interface name of the tinc vpn. cat /etc/babeld.conf ,---- | debug 3 | interface manifold wired true link-quality true max-rtt-penalty 256 split-horizon true | redistribute local if manifold ip 10.16.16.0/24 ge 28 allow | redistribute ip 10.16.16.0/24 ge 28 metric 64 | redistribute local deny `---- With this setup, from `ip route show` the local address routes are confirmed to be propagated: On A: ,---- | 10.16.16.52 via 10.16.16.52 dev manifold proto babel onlink `---- On B: ,---- | 10.16.16.52 via 10.16.16.52 dev manifold proto 42 onlink `---- On C: ,---- | 10.16.16.50 via 10.16.16.50 dev manifold proto 42 onlink | 10.16.16.51 via 10.16.16.51 dev manifold proto 42 onlink `---- Next I want to let A talk to B via C. If I replace the proto number on C from 42 to static manually: ,---- | ip route replace 10.16.16.50 via 10.16.16.50 dev manifold proto static onlink | ip route replace 10.16.16.51 via 10.16.16.51 dev manifold proto static onlink `---- the routes are propagated to A and B `ip route show` on A: ,---- | 10.16.16.51 via 10.16.16.52 dev manifold proto babel onlink | 10.16.16.52 via 10.16.16.52 dev manifold proto babel onlink `---- `ip route show` on B: ,---- | 10.16.16.50 via 10.16.16.52 dev manifold proto 42 onlink | 10.16.16.52 via 10.16.16.52 dev manifold proto 42 onlink `---- A and B can ping each other. What is the recommended way to achieve it *automatically*? By default, babeld does not resend the kernel routes added by itself (proto 42). I tried to remove this check (in appendix patch), and added to babeld.conf ,---- | allow-duplicates 1024 `---- and it works but not stable. Babeld of C has better forward the route learned from A "10.16.16.50 via 10.16.16.50" to B as "10.16.16.50 via 10.16.16.52". Is it achievable by configuration? Thanks! Benda 1. https://www.tinc-vpn.org --- babeld-1.5.1.orig/kernel_netlink.c +++ babeld-1.5.1/kernel_netlink.c @@ -1171,8 +1171,8 @@ filter_kernel_routes(struct nlmsghdr *nh rtm = (struct rtmsg*)NLMSG_DATA(nh); len -= NLMSG_LENGTH(0); - if(rtm->rtm_protocol == RTPROT_BABEL) - return 0; if(rtm->rtm_src_len != 0) return 0; _______________________________________________ Babel-users mailing list Babel-users@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users