Docs/Design
The design model
The network hierarchy, the elements on the map, fibre numbering and the power budget.
Network hierarchy
POP / OLT ─ feeder ─► FDH (splitter cabinet, 288/576 ports) ─ distribution ─► FAT (≤ fat.max_homes units) ─ drop ─► home / ONT- POP (OLT site): one per area while it holds at most
pops.max_unitsunits; beyond that, several, each with its own catchment, feeder tree and fibre numbering. - FDH, the splitter cabinet, with 288 or 576 ports, fed by the feeder.
- FAT, the terminal homes connect to by drop. A building with more units than one FAT gets dedicated indoor FATs.
- Chambers along the routes, sized small or large from the rulebook. Branch points with only overhead cables get their closure on the pole or wall instead.
Architectures
- Centralised (default): one 1:N splitter per PON in the FDH; every unit has its own fibre back to the FDH.
- Cascaded (
pon.cascade: [4, 8]): an L1 splitter in the FDH and an L2 splitter in the FAT. The distribution cable is much thinner, and the budget check sums both stages. - Point-to-point: no splitters; every unit has its own fibre from the POP, checked against
p2p_budget_db.
The scenarios tool prices all three on the same area, and does the same for route types: trench-only, facade, aerial and aerial-and-facade.
Elements
| openFTTH element | `element_type` | placement |
|---|---|---|
| POP / ODF | odf | indoor |
| FDH | otb | outdoor |
| FAT | tb | outdoor / indoor (MDU) |
| Home (ONT side) | to | indoor |
| Feeder / distribution / drop | cable.underground | — |
| Chamber | manhole | — |
| Building, area | building, service_area | — |
Every home carries its pon_id, fdh_id and fat_id. Element ids are stable and never change between runs with the same inputs.
Splices and fibre numbering
Fibres are numbered depth-first from each FDH (and from the POP for the feeder), so every section carries a contiguous range and its local numbering starts at 1. Tubes hold 12 fibres and colours follow TIA-598-C. Each home records its fibre range and its splitter port. Two side tables hold the splice points (at chambers, FATs, FDHs and the POP) and every fibre connection, with its type (splice, splitter or patch), loss and tray.
Power budget
ODN loss = km × fiber_per_km[worst_case_nm]
+ connectors_on_path × loss_db.connector
+ splices_on_path × loss_db.splice
+ Σ splitter losses over the cascade
+ loss_db.margin
must be ≤ pon.budget_db, and within one PON max − min ≤ pon.max_differential_dbThe splice count is derived from the path (FAT, FDH ×2, plus one per branch closure passed), not a constant. Connectors on a path are counted at the ODF, FDH in and out, FAT and ONT. In generic-gpon the class B+ budget is 28 dB.
Full reference: docs/DESIGN-MODEL.md.