Infrastructure

What I work on day to day at Skynet. Device identities, addresses and site names are left out on purpose.

10+
MikroTik routers
10+
POPs
4+
OLTs, 3 vendors
1,000+
ONUs on TR-069

Topology (generic)

  1. Upstream

    • Upstream A (metro-Ethernet)
    • Upstream B (metro-Ethernet)
  2. Core

    • Core edge router (carrier DC)
    • Main POP router
  3. POP links

    • Direct metro links
    • VLAN + OSPF
    • Tunnels over local ISPs
  4. Access

    • POP routers (PPPoE)
    • OLTs (ZTE / Huawei / HiOSO)
  5. Customers

    • ONUs (FiberHome, TR-069)
The NOC office reaches every POP over the same links. The server cluster (billing, ACS, WhatsApp gateway, monitoring) talks to routers over API, syslog and metrics, and ONUs inform the ACS over TR-069.

Devices and what I did on them

Edge / core routing

  • Core edge router (MikroTik CCR, carrier data center)

    Terminates the upstream links and the metro links to POPs. I read and document routing and tunnels before every change.

  • Main POP router (MikroTik x86, RouterOS 7)

    PPPoE for 1,000+ sessions, PCC over two upstreams, NAT and DNS redirect. I tuned queues, PCC, NTP and conntrack, with rollback notes for each change.

POP connectivity

  • Direct metro-Ethernet links

    Dedicated circuits from the edge to several POPs; I mapped which POP rides which link.

  • VLAN + OSPF to nearby POPs

    L2 extension from the main POP with OSPF; documented and checked the routes back to the office.

  • Tunnels over local ISPs (OpenVPN / L2TP)

    For remote POPs. Fixed return routes and no-NAT rules so billing, ACS and remote access work over them.

POP router features

  • PPPoE servers, profiles and queues

    Package profiles (100 / 200 Mbps), rate limits, multi-queue and an fq_codel trial.

  • Isolation (address-list + HTTP redirect)

    Sends unpaid customers to the pay page, driven by the billing app.

  • Forced DNS with failover

    Port-53 redirect, exception list, netwatch turns it off if the resolver fails.

  • PPPoE syslog to the server

    Connect / disconnect / auth events feed outage detection.

  • Load balancing and failover

    PCC by source address + recursive routes keep one customer on one upstream.

OLTs

  • ZTE C300

    ONU provisioning and optical reads from the billing app over CLI; OLT clock drift handled in software.

  • Huawei MA5608T

    Automated provisioning, rename / delete with service-port clean-up, a session lock shared with installs.

  • HiOSO (legacy)

    Customers migrated off it; leftover records cleaned up.

ONU / CPE & TR-069

  • FiberHome ONUs (HG6045F3 / HG6145F3 / HG6145D2)

    1,000+ devices managed through GenieACS.

  • GenieACS

    DHCP option 43 for inform, routes and no-NAT for connection requests on tunnel sites, versioned provisions for Wi-Fi and optical data with a check and rollback.

Servers & platform

  • Proxmox host with several VMs

    Billing app, ACS, WhatsApp gateway, monitoring and a demo instance.

  • Docker + Coolify + Traefik

    App, workers, scheduler, syslog listener and reverse proxy; I run deploys and post-deploy checks.

  • MySQL + Redis

    App database and queues; backup before every deploy and every data fix.

  • Prometheus + Grafana

    Router, upstream and PPPoE metrics.

  • WhatsApp gateway (Evolution API)

    Install, migration, report and NOC groups.

  • OCR service (PaddleOCR)

    Reads ID card and ONU label photos, with its own worker and CPU / memory limits.

  • Self-hosted GitHub Actions runners

    CI for the billing platform.

Related case studies