Simulador del algoritmo DBA (Dynamic Bandwidth Allocation) de GPON. Implementa 4 algoritmos de asignación de ancho de banda usados en OLTs reales. Simula tramas GTC, REPORT/GATE, T-CONTs y mide rendimiento.
En GPON, el upstream es TDMA — solo una ONT transmite a la vez. El DBA decide cuánto ancho de banda y cuándo transmite cada ONT en cada trama de 125 µs. Un mal algoritmo causa latencia, jitter y desperdicio de fibra.
| Algoritmo | Tipo | Descripción |
|---|---|---|
| SR-DBA | Status Reporting | Usa reportes explícitos de cola (ITU-T G.984.3) |
| NSR-DBA | Non-Status Reporting | Estima tráfico sin reportes, por patrón de uso |
| GIANT-DBA | Predictivo | Predicción EWMA con margen de ráfaga |
| Round-Robin | Simple | Reparto equitativo (referencia) |
- Tramas GTC: downstream (2.488 Gbps) y upstream (1.244 Gbps), 125 µs
- T-CONT tipos 1-5: fijo, asegurado, no-asegurado, best-effort, super
- BWmap: construcción del mapa de ancho de banda por trama
- REPORT/GATE: intercambio de reportes de cola
- Ranging: cálculo de equalization delay por distancia
- Métricas: utilización, retardo, jitter, fairness (Jain), pérdida
- Comparativa: ejecuta los 4 algoritmos sobre la misma red y compara
- Generadores de tráfico: CBR, VBR, bursty para simular servicios reales
git clone https://github.com/fersegundo22/gpon-dba.git
cd gpon-dbaSin dependencias externas. Solo Python 3.8+.
# Comparativa de los 4 algoritmos
python examples/demo.py --comparativa
# Demo rapida (solo SR-DBA)
python examples/demo.py --rapidofrom simulador_gpon import SimuladorGPON, DBA_SR, DBA_GIANT
from simulador_gpon.tcont import TipoTCONT, TrafficGenerator
sim = SimuladorGPON(DBA_SR(), semilla=42)
# Agregar ONTs con perfiles de servicio
sim.agregar_ont(
distancia_km=3.0, descripcion="Cliente FTTH",
tconts_config=[{
"alloc_id": 1, "tipo": TipoTCONT.BEST_EFFORT,
"ancho_maximo_bps": 200_000_000
}],
generadores=[(1, TrafficGenerator(80_000_000, tipo="bursty"))]
)
# Simular 1 segundo (8000 tramas)
metricas = sim.simular(num_tramas=8000, verbose=True)
print(metricas.resumen()) OLT (DBA)
|
=========== PON =========== (fibra GPON)
| | | |
ONT1 ONT2 ONT3 ONT16
(100M) (200M) (50M) (300M)
T-CONTs por ONT: voz(fijo) + IPTV(asegurado) + internet(best-effort)
METRICAS DBA: SR-DBA
============================================================
Tramas simuladas: 8000
Utilizacion promedio: 78.3%
Retardo promedio: 245.1 us
Jitter promedio: 52.3 us
Indice de Jain: 0.9234
Perdida global: 1.23%
gpon-dba/
├── simulador_gpon/
│ ├── __init__.py
│ ├── trama.py # GTC frames, BWmap, REPORT
│ ├── tcont.py # T-CONT tipos y generadores
│ ├── ont.py # ONT simulada (EQD, T-CONTs)
│ ├── dba.py # Algoritmos DBA (SR, NSR, GIANT, RR)
│ ├── simulador.py # Simulador principal
│ └── metricas.py # Métricas y Jain fairness
├── examples/
│ └── demo.py
├── tests/
│ └── test_gpon.py
└── README.md
MIT