hi, all

I'm a new user, totally novice to routing and babel.

I've a routing problem that I'm hoping to solve with babel. I'd try to sketch my network layout as follows:


                                     + Wifi Hotspot router A
Internet  ---- Gateway (main router) + Wifi Hotspot router B
                                     + Wifi Hotspot router C

I'd like to run Wifi Hotspot A, B, C in their own IP subnets.

For IPv4, I solved this by running NAT on the gateway (a Linux box). Hence, each of the hotspots A, B, C have their own IP subnets and distribute addresses via DHCP.

For IPv6 a trouble is my ISP only provides a /64 prefix address / network. Commonly, most mobile phones and end clients uses SLAAC (https://www.networkacademy.io/ccna/ipv6/stateless-address-autoconfiguration-slaac, https://datatracker.ietf.org/doc/html/rfc4862) to assign their own IP addresses. However, as the end devices assigns their own addresses in the lowest 64 bits. (https://community.cisco.com/t5/networking-knowledge-base/understanding-ipv6-eui-64-bit-address/ta-p/3116953, https://www.networkacademy.io/ccna/ipv6/stateless-address-autoconfiguration-slaac), it is not possible to further sub-net the lower /64 bit address.

I'm left with the option of working with same /64 ipv6 subnets !

Out going packets is easy, they just go by the default route.

I've evaluated bridging, but I don't like bridging, as that there are less facilities and tools in that layer (e.g. firewalls etc).

I'm thinking in terms that I'm left with routing /128 host addresses between the 'identical' /64 ipv6 subnets. i.e. patch individual (/128) routes on each of the routers main gateway and the hotspot routers. But that if I hack that up with scripts etc, I'm practically writing a routing daemon.

Now the questions:

1) how do I get babel to maintain routing tables for individual host /128 routes to the end devices?

2) promiscuous listening for hosts ip not in babel's routing tables,  ipv6 bridging

A trouble is babel 'don't know' the end host/device ipv6 addresses. Is there a solution? e.g. that babel listens for packets having the defined /64 prefix in the source (note that this may have to be based on 'upstream', e.g. the router's own upstream /64 prefix, and when it isn't found in babel's routing table, to update that /128 route automatically? this is practically 'bridging' at ipv6 levels. can this be done? how to go about doing so?

3) possible solution: hostapd - interaction with babel:

As above, a trouble is babel 'don't know' the end host/device ipv6 addresses, but that *hostapd* which runs the wifi hotspots knows the device ethernet mac address. It can then get the end host/device ip addresses using NDP (https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol). If I customize hostapd to patch a static route say on one of the hotspot router, would babel pick that up and distribute the routing tables/entries accordingly. i.e. individual /128 routes? Otherwise is there a better way or what is the means of getting this end host/device address into babel's routing tables? And would such a scheme work?

4) roaming hosts / devices

The end hosts are mobile i.e. phones ! hence, they can roam between the different wifi hotspots A, B, C. There could literally be situations a mobile phone left hotspot A and logs in to hotspot B. A trouble is the same host / device may not have logged out from hotspot A, i.e. it has 'moved on' to hotspot B. The trouble is packets sent to the original hotspot A will no longer reach the host / device. How to handle these cases of roaming hosts / devices? Can there be updates based on ping checks etc? (e.g. that when a host/device roam to B, there is a 'duplicate' route, the routers then need to update reachability, e.g. for each of the hotspots to 'ping' the host/device and update reachability metrics.



_______________________________________________
Babel-users mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/babel-users

Reply via email to