Diffo Example

Module VersionHex DocsLicenseREUSE status

Diffo is a Telecommunications Management Forum (TMF) Service and Resource Manager, built for autonomous networks.

This repo contains two independent example domains, each modelling a different slice of a telco network.

NBN Domain

A declarative model of a fictional NBN Ethernet access hierarchy — NbnEthernet, UNI, AVC, NTD, CVC, NNI Group, and NNI — built entirely with the Diffo Provider Instance DSL. Includes multi-tenancy via Ash Policy: each RSP can only see and manage the resources they own.

Run in Livebook

The livebook walks through provisioning a complete NBN Ethernet access circuit, selecting an RSP to operate as, and demonstrating how the mine actions propagate technology, speeds, CVLAN, and port assignments up the resource hierarchy.

Access Domain

A copper-network equivalent covering DSL access services — Cable, Card, Path, and Shelf. Explore lib/access/ for the domain model.

Installation

If available in Hex, the package can be installed by adding diffo_example to your list of dependencies in mix.exs:

def deps do
  [
    {:diffo_example, "~> 0.0.2"}
  ]
end

You need Neo4j available. We recommend the Neo4j Community 5 latest, available at Neo4j Deploymnent Centre which can be installed locally. You can also configure connection to a cloud based database service such as Neo4j AuraDB.

Contributions

Contributions are welcome, please start with an issue

Acknowledgements

Thanks to my colleagues in the Telco industry.

Thanks to the vibrant Elixir and Ash communities, and in particular the Ash Core for ash 🚀

Thanks to Florin Patrascu for bolt_sips andLuis Sagastume for boltx, both forerunners of bolty the bolt driver for neo4j.

Thanks to the Neo4j Core for neo4j and pioneering work on graph databases.

Links

Diffo TMF Service and Resource ManagerDiffo.devAsh Neo4j DatalayerboltyNeo4j Deployment CentreAsh Outstanding ExtensionOutstanding Elixir ProtocolTMF