Network Design¶
FadianRoam's network is split into two independent planes: FadianRoam (authentication) and FadianNet (data transport). They serve different purposes but work together to deliver seamless roaming Wi-Fi.
FadianRoam vs FadianNet¶
graph LR
subgraph "FadianRoam (Authentication)"
AP[Wi-Fi AP] -->|802.1X| R[Site RADIUS]
R -->|MGMT VPN| RELAY[Federation Relay]
RELAY -->|MGMT VPN| RH[Home RADIUS]
RH --> IDP[Home IDP]
end
subgraph "FadianNet (Data Transport)"
AP2[Wi-Fi AP] -->|VLAN 10| PPP[PPPoE /32]
PPP --> FNET[FadianNet Backbone]
FNET --> INET[Internet]
end
| FadianRoam | FadianNet | |
|---|---|---|
| Purpose | 802.1X authentication & roaming | User data transport & internet access |
| Transport | MGMT VPN (WireGuard star) | BGP backbone (VPN mesh + eBGP) |
| Traffic | RADIUS (UDP 1812/1813) | User internet traffic |
| Participants | All Sites | FadianNet Sites (provider) + Access Members (user) |
| Nature | FadianRoam project infrastructure | Public-good backbone maintained by BGP Sites |
Architecture Overview¶
graph TB
subgraph "FadianRoam — MGMT VPN"
R_A[Site A RADIUS] ---|WireGuard| RELAY[Federation Relay]
R_B[Site B RADIUS] ---|WireGuard| RELAY
R_C[Access Member RADIUS] ---|WireGuard| RELAY
end
subgraph "FadianNet — Data Backbone"
F_A[FadianNet Site A<br/>AS204921] ---|eBGP| RR1[Regional RR<br/>Asia]
F_B[FadianNet Site B<br/>AS65001] ---|eBGP| RR1
F_C[FadianNet Site C<br/>AS65002] ---|eBGP| RR2[Regional RR<br/>Europe]
RR1 ---|eBGP| RR2
end
subgraph "Access Members"
ACC1[Access Member 1] ---|FadianLink + PPPoE| F_A
ACC2[Access Member 2] ---|FadianLink + PPPoE| F_C
end
FadianRoam Layer: MGMT VPN¶
Purpose: RADIUS authentication proxy traffic only.
| Property | Value |
|---|---|
| Transport | WireGuard (star, no mesh) |
| Subnet | 172.172.10.0/24 |
| Relay IP | 172.172.10.1 |
| Member IPs | Assigned on join (e.g., 172.172.10.10) |
| Traffic | RADIUS (UDP 1812/1813) only |
| Required | Yes, for all FadianRoam Sites |
Each member establishes a WireGuard tunnel to the Federation Relay. This tunnel is used exclusively for RADIUS proxy traffic. No mesh — all members connect to the central Relay only.
All FadianRoam Sites connect to the MGMT VPN, regardless of whether they also participate in FadianNet.
FadianNet Layer: Data Backbone¶
Purpose: Carry user internet traffic after 802.1X authentication.
FadianNet is the data plane — the actual network that carries user traffic to the internet. It is maintained collectively by FadianNet Sites as a public good.
FadianNet Roles¶
Sites participating in FadianNet fall into two roles:
| Role | Description | Requirements |
|---|---|---|
| FadianNet Site (Provider + User) | Operates BGP, provides network service to others AND uses FadianNet | Own ASN, BGP daemon, public IP, FadianNet VPN |
| Access Member (User only) | Connects to FadianNet through a FadianNet Site, uses network but does not provide transit | MGMT VPN + FadianLink to a FadianNet Site |
FadianNet Site (Provider + User)
├── Has own ASN, peers with Regional RR
├── Announces shared prefix to upstream (RPKI)
├── Provides transit to Access Members via FadianLink
└── Runs PPPoE server for Access Members
Access Member (User only)
├── Connects MGMT VPN (for RADIUS federation)
├── Connects to a FadianNet Site via FadianLink
├── Dials PPPoE to get /32, NATs AP users behind it
└── All traffic routes through upstream FadianNet Site
A FadianRoam Site that also provides BGP transit is simultaneously a FadianRoam Site (authentication) and a FadianNet Site (data). A Site without BGP only joins FadianRoam for authentication and connects to FadianNet as an Access Member for data.
Analogy: Similar to RIPE LIR / Enduser
This structure is analogous to the RIPE NCC's LIR / Enduser model — a FadianNet Site acts like an LIR (operates infrastructure, sponsors downstream members), while a non-BGP Site seeking FadianRoam access acts like an Enduser (joins through a local LIR). The analogy describes the relationship, not the actual naming.
Non-BGP Site Admission¶
A Site without BGP cannot join FadianNet directly. To participate in FadianRoam, it must:
- Find the nearest FadianNet + FadianRoam Site in its region (the "sponsor")
- The sponsor agrees to provide FadianLink connectivity
- The sponsor submits the application PR on behalf of the non-BGP Site to the federation
- Federation votes (>50%, 3 days) — the sponsor vouches for the applicant
- On approval, the non-BGP Site connects via FadianLink to the sponsor and deploys FadianRoam APs
The sponsor's BGP site becomes the non-BGP site's internet exit point — all roaming traffic from the non-BGP site routes back to the sponsor.
Topology¶
FadianNet Sites peer with Regional Route Reflectors using their own ASN (eBGP):
RR Asia ←── eBGP ──→ RR Europe
▲ ▲ ▲ ▲
/ \ / \
Site A Site B Site C Site D
AS204921 AS65001 AS65002 AS65003
│ │
└── Access Member 1 └── Access Member 2
(via FadianLink) (via FadianLink)
- RRs are not iBGP route reflectors — each Site uses its own ASN
- RRs aggregate and redistribute routes across regions
- RRs peer with each other for cross-region reachability
FadianLink¶
FadianLink bridges FadianNet Sites and Access Members, allowing Sites without BGP to use the FadianNet data plane.
Access Member (no ASN)
│
└── VPN ──→ FadianNet Site (AS204921)
│
├── PPPoE server assigns /32 to Access Member
├── Announces Access Member's /32 into FadianNet
└── Provides default route to Access Member
For FadianNet Sites¶
- Run a PPPoE server for connected Access Members
- Announce Access Members' /32 routes into FadianNet on their behalf
- Provide default route (internet gateway) to Access Members
- Choose which Access Members to serve
For Access Members¶
- Connect VPN to a FadianNet Site offering FadianLink
- Dial PPPoE to get /32, NAT AP users behind it
- All traffic routes through the upstream FadianNet Site
- No ASN, no BGP configuration needed
Comparison¶
| FadianNet Site | Access Member (via FadianLink) | |
|---|---|---|
| ASN | Own ASN | None |
| BGP peering | Direct with regional RR | None — FadianNet Site peers on behalf |
| /32 announcement | Self | FadianNet Site announces on behalf |
| /24 upstream | Announces to own upstreams | Not applicable |
| Internet path | Own uplinks | Through FadianNet Site's uplinks |
| RPKI | Signs ROAs | Not applicable |
VLAN Architecture¶
Each FadianRoam Site must isolate FadianRoam traffic from local network traffic using VLANs:
AP
├── SSID: FadianRoam ──→ VLAN 10 ──→ FadianNet (PPPoE /32)
└── SSID: Local ──→ VLAN 20 ──→ Local internet uplink
| VLAN | SSID | Traffic Path | Purpose |
|---|---|---|---|
| 10 | FadianRoam |
AP → FadianNet backbone → Internet | Federation roaming traffic, 802.1X authenticated |
| 20 | Site-specific | AP → Local gateway → Internet | Site's own local network, not part of FadianRoam |
Why VLAN Isolation?¶
- Accounting: FadianRoam traffic is measurable and attributable per Site
- Fair use enforcement: Bandwidth limits apply only to VLAN 10
- Security: FadianRoam users cannot access the Site's local network
- Commercial clarity: If a Site monetizes FadianRoam, only VLAN 10 traffic counts toward billing
AP Requirements¶
- AP must support multiple SSIDs with VLAN tagging
- The
FadianRoamSSID must be tagged to a dedicated VLAN - The FadianRoam VLAN must route exclusively through the FadianNet data plane (PPPoE tunnel)
- Local VLANs must not carry FadianRoam traffic
Data Plane Design — Active Discussion¶
Design Decision in Progress
The FadianNet data plane routing model is currently under evaluation. Two proposals are being considered. Community input is welcome — discuss in the Telegram group or open a ticket at YunZheng HelpCentre.
Proposal A: Shared Public Prefix (Anycast Model)¶
A sponsored /24 prefix is announced by all FadianNet Sites, with internal /32 routing for per-site addressing.
External (public internet):
All FadianNet Sites announce X.X.X.0/24 via own ASN
RPKI ROAs authorize multiple ASes for the same /24
→ External traffic enters via nearest FadianNet Site (anycast)
Internal (FadianNet eBGP):
Site A (AS204921): X.X.X.1/32 + X.X.X.5/32 (Access Member)
Site B (AS65001): X.X.X.2/32 + X.X.X.8/32 (Access Member)
→ /32 routes propagate freely between all FadianNet Sites
How it works:
- Each FadianNet Site announces the aggregate /24 to its own upstream providers (RPKI-valid)
- Each Site/Access Member is assigned a /32 from the shared prefix (via PPPoE)
- Internally, /32 fine-grained routes propagate via Regional RR eBGP
- External traffic enters via the nearest announcing FadianNet Site (anycast), then routes internally to the correct /32
- Users access the internet through the FadianNet backbone — traffic exits at the nearest FadianNet Site
| Property | Value |
|---|---|
| Public prefix | Sponsored /24 (TBD) |
| RPKI | Multi-AS ROA — each FadianNet Site's ASN authorized |
| External routing | Anycast /24, nearest-entry |
| Internal routing | /32 per Site, eBGP via Regional RRs |
| IP assignment | /32 from shared prefix, assigned via PPPoE |
| User traffic path | AP → VLAN 10 → PPPoE /32 → FadianNet → nearest exit → Internet |
Pros:
- Unified public address space — all FadianRoam users share one routable /24
- Anycast entry — external traffic enters at the geographically closest FadianNet Site
- Clean separation — FadianRoam traffic is identifiable by prefix
- Access Members don't need their own IP resources
- Scalable — supports many Sites with /32 allocation
Cons:
- Requires a sponsored /24 prefix
- RPKI multi-AS ROA management adds operational complexity
- Dependency on the prefix sponsor
Proposal B: Internal Loopback + Home Routing (BGP Backbone)¶
FadianNet uses an internal /24 for loopback addressing (similar to OSPF/IGP). All FadianNet Sites must have BGP — this is mandatory for the backbone to function. Roaming users' traffic is tunneled back to their home Site for internet access.
FadianNet Backbone (eBGP mesh via Regional RRs)
│
├── FadianNet Site A (AS204921) ← loopback 172.172.11.1, own internet exit
│ ├── FadianRoam AP (own users → exit at Site A)
│ └── Non-BGP Site X (FadianRoam AP → roams back to Site A for exit)
│
├── FadianNet Site B (AS65001) ← loopback 172.172.11.2, own internet exit
│ ├── FadianRoam AP (own users → exit at Site B)
│ └── Non-BGP Site Y (FadianRoam AP → roams back to Site B for exit)
│
└── FadianNet Site C (AS65002) ← loopback 172.172.11.3, own internet exit
└── FadianRoam AP (own users → exit at Site C)
How it works:
- All FadianNet Sites peer via eBGP (each with own ASN), forming a virtual BGP backbone
- Each Site has a loopback IP from the internal prefix; /32 loopback routes propagate via eBGP through Regional RRs
- When a user roams to a visited Site, their traffic is routed back through the backbone to their home Site (the FadianNet Site that provides their FadianRoam access)
- The home Site provides internet access via its own uplinks
- Non-BGP Sites connect through a sponsoring FadianNet Site via FadianLink; their users' traffic routes back to the sponsor's exit
Roaming scenarios:
Scenario 1: BGP Site user roaming
User registered at Site A → connects at Site C AP
→ Auth via MGMT VPN (FadianRoam)
→ Data: Site C → FadianNet backbone → Site A (home) → Internet
Scenario 2: Non-BGP Site user roaming
User registered at Non-BGP Site X (sponsor: Site A) → connects at Site B AP
→ Auth via MGMT VPN (FadianRoam)
→ Data: Site B → FadianNet backbone → Site A (sponsor) → Internet
Real-World Example¶
Consider a scenario where all sites use overseas transit (e.g., in regions where domestic IP Transit is unavailable):
Site A (Beijing, own AS)
└── VPN → Japan Transit → Internet
└── FadianRoam AP at home in Beijing
Site B (Shanghai, own AS)
└── VPN → Korea Transit → Internet
└── FadianRoam AP at home in Shanghai
Site C (Beijing, no BGP)
└── Sponsored by Site A
└── VPN → Site A Beijing PoP → A's FadianNet → Internet
└── FadianRoam AP at home in Beijing
graph TB
subgraph "FadianNet Backbone (eBGP)"
A["Site A (Beijing)<br/>AS204921"] ---|eBGP| RR[Regional RR]
B["Site B (Shanghai)<br/>AS65001"] ---|eBGP| RR
end
subgraph "Transit (overseas)"
A -->|VPN| JP[Japan Transit]
B -->|VPN| KR[Korea Transit]
JP --> INET[Internet]
KR --> INET
end
subgraph "Non-BGP"
C["Site C (Beijing)<br/>no ASN"] -->|FadianLink VPN| A
end
Normal operation (no roaming):
- Site A users connect at A's AP → traffic exits via A's Japan transit
- Site B users connect at B's AP → traffic exits via B's Korea transit
- Site C users connect at C's AP → traffic routes through A's FadianNet → exits via A's Japan transit
- Within FadianNet, A and B may exchange routes via eBGP — A can choose to route some traffic through B's Korea transit (or vice versa) based on BGP path selection
User from A roams to B's house (Shanghai):
- A's user connects to B's FadianRoam AP
- Auth: B's RADIUS → MGMT VPN → Federation Relay → A's RADIUS → A's IDP → Access-Accept
- Data: B's AP → FadianNet backbone → roams back to A's Beijing site → A's Japan transit → Internet
- Some routes may still be selected through B's Korea exit based on BGP path selection — this detour is acceptable and can be fine-tuned with route policy if needed
User from C roams to B's house (Shanghai):
- C's user connects to B's FadianRoam AP
- Auth: B's RADIUS → MGMT VPN → Federation Relay → C's RADIUS → C's IDP → Access-Accept (C has its own MGMT VPN to Federation Relay)
- Data: B's AP → FadianNet backbone → roams back to A's Beijing site (C's sponsor) → A's Japan transit → Internet
Authentication vs Data Path
Authentication always routes to the user's own FadianRoam Site (each Site has its own MGMT VPN to the Federation Relay). Data always routes to the user's home FadianNet Site (the BGP site providing their internet exit). For non-BGP Sites, these are different: auth goes to C, data goes to A (C's sponsor).
Routing Detours
In default FadianNet routing, some paths may be suboptimal — e.g., traffic from B roaming back to A might still be selected to exit through B's Korea transit based on BGP best path. This is normal BGP behavior and acceptable for a community network. Sites can coordinate to adjust route policy for specific cases, but some detour is inherent to the home-routing model.
| Property | Value |
|---|---|
| Public prefix | None (each Site uses own) |
| Internal routing | Loopback /24, eBGP between FadianNet Sites |
| BGP requirement | Mandatory for all FadianNet Sites |
| User traffic path | AP → FadianNet backbone → home Site → home uplink → Internet |
| Non-BGP Site path | AP → FadianNet backbone → sponsor Site → sponsor uplink → Internet |
Pros:
- No dependency on a sponsored prefix — each Site uses its own IP resources
- Simpler RPKI — no multi-AS ROA coordination
- Mandatory BGP ensures backbone quality — every participant contributes routing
- Clear sponsorship model for non-BGP Sites
- Traffic accounting is straightforward — each Site's exit traffic is measurable
Cons:
- Higher roaming latency: Traffic always exits at the home Site, not the nearest exit. A user in Asia connected at a Europe Site would have traffic routed back to Asia.
- Cross-region bandwidth cost: Long-distance roaming consumes backbone bandwidth between regions.
- Sponsor dependency: Non-BGP Sites are fully dependent on their sponsor for internet exit.
Comparison¶
| Aspect | Proposal A (Shared Prefix) | Proposal B (Home Routing) |
|---|---|---|
| Public IP resources | Sponsored /24 shared | Each Site's own |
| External traffic entry | Nearest FadianNet Site (anycast) | Home Site only |
| Roaming latency | Low (nearest exit) | High (tunnel to home) |
| RPKI complexity | Multi-AS ROA | Per-site ROA |
| Access Member dependency | PPPoE /32 from backbone | Tunnel back to sponsor |
| Prefix sponsor required | Yes | No |
| Scalability | High | Limited by home-routing overhead |
Current Leaning
Proposal B (Internal Loopback + Home Routing) is the current preferred direction. It enforces mandatory BGP for all backbone participants, provides a clear sponsorship model for non-BGP Sites, and avoids dependency on a sponsored prefix. The tradeoff is higher roaming latency, which is acceptable for a community network.
Both proposals remain under consideration — join the discussion in the Telegram group.
Community Discussion
Jack (AS153376) raised the question: if an ORG has a large number of users across multiple locations connecting to FadianRoam nodes (e.g., JianyuelabLTD), should the Site be classified as commercial use rather than hobby use?
Response: For commercial scenarios, the Governance Committee should establish a usage standard on FadianRoam using a quota system. When usage exceeds the hobby-use quota, the additional network costs are shared equally among all BGP Sites at a fixed per-quota rate. Each ORG bears the cost of its own usage beyond the hobby-use baseline — specifically, the incremental cost that BGP Sites incur on its behalf.
Internal Addressing¶
| Network | Subnet | Purpose |
|---|---|---|
| MGMT | 172.172.10.0/24 |
RADIUS relay tunnels (FadianRoam) |
| FadianNet Loopbacks | 172.172.11.0/24 |
Router IDs for FadianNet Sites |
| FadianNet P2P | 172.172.12.0/24 |
VPN point-to-point links |
| FadianRoam Prefix | TBD /24 |
PPPoE-assigned member IPs (Proposal A) |
| FadianRoam v6 | TBD |
IPv6 allocation |
IPv6-Only Sites: 464XLAT¶
Sites without public IPv4 can participate in FadianNet using 464XLAT (RFC 6877). This allows an IPv6-only site to provide full IPv4 connectivity to user devices:
User device (IPv4 app)
→ CLAT (client-side translation, on AP/gateway)
→ IPv6-only FadianNet transport
→ PLAT (provider-side translation, at FadianNet Site)
→ IPv4 internet
This lowers the barrier for Access Members that only have IPv6 connectivity — no public IPv4 allocation required.
Traffic Flow¶
End-to-end flow for a roaming user at an Access Member site:
1. User connects to FadianRoam SSID → 802.1X authentication
2. AP → Site RADIUS → MGMT VPN → Federation Relay → Home RADIUS → IDP
3. Access-Accept → User gets Wi-Fi on VLAN 10
4. User traffic → VLAN 10 → PPPoE /32 → FadianLink VPN → FadianNet Site → Internet
Member Types & Requirements¶
| Requirement | FadianNet Site (Provider + User) | Access Member (User only) |
|---|---|---|
| MGMT VPN to Relay | Required | Required |
| FadianNet VPN | Direct to regional RR | Via FadianLink to FadianNet Site |
| PPPoE dial-up | Required | Required |
| Own ASN | Required | Not required |
| eBGP session | Required | Not required |
| RPKI (ROA) | Required | Not required |
| /24 upstream announcement | Required | Not required |
| Wi-Fi AP with 802.1X | Required | Required |
| Public IP | Recommended | Not required |