openFTTH
FeaturesHow it worksDocsChangelogGitHub

Docs/Design

The design model

The network hierarchy, the elements on the map, fibre numbering and the power budget.

2 min read

Network hierarchy

text
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_units units; 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 / ODFodfindoor
FDHotboutdoor
FATtboutdoor / indoor (MDU)
Home (ONT side)toindoor
Feeder / distribution / dropcable.underground—
Chambermanhole—
Building, areabuilding, 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

text
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_db

The 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.