You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MINDFul.jl models IP-optical routing, modulation, and spectrum assignment (RMSA) operations where high-level connectivity intents are recursively compiled into lower-level intents down to router and OXC configurations.
4
+
5
+
## IBN-over-SDN
6
+
7
+
When designing a multi-domain IBN system, MINDFul.jl embraces the **IBN-over-SDN** architecture. This approach decouples intent handling from the underlying SDN paradigm. The intent handling is separated into its own dedicated framework, operating independently and utilizing the underlying SDN controller strictly as a device driver for physical deployment. This separation of concerns fosters modularity and allows each layer to evolve independently.
8
+
9
+
## IP-Optical Layer Model
10
+
11
+
The architecture modeled by MINDFul.jl holds on to the pure IP-optical architecture signified by two layers:
12
+
-**Electrical Layer:** Composed of IP routers and virtual links.
13
+
-**Optical Layer:** Composed of Optical Cross Connects (OXCs) and physical fiber links.
14
+
15
+
Currently, the library focuses on 3 primary devices:
16
+
- The network node as a whole
17
+
- The IP router
18
+
- The optical cross connect (OXC)
19
+
20
+
## Intent DAGs and Delegation
21
+
22
+
MINDFul.jl uses **intent DAGs** (Directed Acyclic Graphs) to represent relationships between different intents. This hierarchical structure connects higher-level intents, which have a logical objective (e.g., establishing a connectivity service), with low-level intents (LLIs), which are responsible for resource allocation and hardware configurations on the specific devices.
23
+
24
+
If an intent spans multiple domains, it is split at border nodes, and the external portion is securely **delegated** to the adjacent domain without exposing internal topological details. This structure enables seamless interoperability between domains.
25
+
26
+
## Intent States and Operations
27
+
28
+
Intents are highly dynamic and transition through several states during their lifecycle. MINDFul.jl commonly identifies four core intent states:
29
+
-`uncompiled`: Unprocessed intents inside the system.
30
+
-`compiled`: Processed intents with a well-defined implementation derived.
31
+
-`installed`: Active intents whose implementation has been realized in the appropriate network devices.
32
+
-`failed`: Active intents that malfunction after some failure during operation.
33
+
34
+
To enable state transitions, several operations and algorithms are modeled:
35
+
-**Intent Compilation:** Deriving an intent implementation and transitioning an intent to the `compiled` state.
36
+
-**Intent Monitoring:** Ensuring that the installed intents satisfy all the requirements and triggering fallbacks in case of failure.
37
+
-**Intent Conflict Resolution:** Handling situations when several intents require the same resources.
38
+
39
+
## References
40
+
41
+
-[F. Christou, "Decentralized Intent-driven Coordination of Multi-Domain IP-Optical Networks," 2022 18th International Conference on Network and Service Management (CNSM), Thessaloniki, Greece, 2022, pp. 359-363, doi: 10.23919/CNSM55787.2022.9964606](https://ieeexplore.ieee.org/document/9964606/)
42
+
-[F. Christou and A. Kirstaedter, "Grooming Connectivity Intents in IP-Optical Networks Using Directed Acyclic Graphs," Photonic Networks; 24th ITG-Symposium, Berlin, 2023, pp. 1-4.](https://ieeexplore.ieee.org/document/10173072)
43
+
-[F. Christou and A. Kirstädter, "Using Intent Directed Acyclic Graphs in Multi-Domain IP-Optical Networks," 2023 33rd International Telecommunication Networks and Applications Conference, Melbourne, Australia, 2023, pp. 176-179, doi: 10.1109/ITNAC59571.2023.10368533](https://ieeexplore.ieee.org/document/10368533)
Copy file name to clipboardExpand all lines: docs/src/dev.md
+60-45Lines changed: 60 additions & 45 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,47 +1,50 @@
1
-
# Notes for developes and contributors
2
-
3
-
## Mental classification of functions per functionality
4
-
(must clarify these notes)
5
-
To expand upon:
6
-
allocate - deallocate
7
-
reserve - unreserve
8
-
function getters
9
-
get... -> get field
10
-
new... -> construct something new
11
-
prioritize -> return a vector of indices
12
-
choose -> return a specific (scalar) index
13
-
comp -> compilation
14
-
15
-
16
-
## How to read variables
17
-
transmission -> trans\
18
-
module -> mdl\
19
-
mode -> mode\
20
-
index -> idx\
21
-
uuid -> id\
22
-
ibn framework -> ibnf\
23
-
24
-
## Create a new availability-aware IP-Optical Algorithm
25
-
Look at `src/IBNLayer/ibn_bestempiricalavailabilitymatch.jl` where the algorithm `BestEmpiricalAvailabilityCompilation` is defined.
26
-
More specifically, assume your new algorithm is a struct `MyNewAlgorithm`.
27
-
We suggest you make it a subtype of `<: IntentCompilationAlgorithmWithMemory` and contain the following fields in your struct:
1
+
# Developer Guide
2
+
3
+
Welcome to the MINDFul.jl developer documentation. This section covers common conventions, how to extend MINDFul.jl algorithms, and how to run tests.
4
+
5
+
## Variable Naming Conventions
6
+
7
+
To keep the codebase consistent and readable, MINDFul.jl uses the following abbreviations for common variables:
8
+
9
+
| Abbreviation | Meaning |
10
+
| :--- | :--- |
11
+
|`trans`| transmission |
12
+
|`mdl`| module |
13
+
|`mode`| mode |
14
+
|`idx`| index |
15
+
|`id`| uuid |
16
+
|`ibnf`| IBN framework |
17
+
18
+
## Creating a new Availability-Aware IP-Optical Algorithm
19
+
20
+
MINDFul.jl is designed to be easily extensible. You can define your own intent compilation algorithms. As an example, look at `src/IBNLayer/ibn_bestempiricalavailabilitymatch.jl` where the algorithm `BestEmpiricalAvailabilityCompilation` is defined.
21
+
22
+
To create a new algorithm `MyNewAlgorithm`, we recommend making it a subtype of `<: IntentCompilationAlgorithmWithMemory` and including the following fields:
@@ -57,25 +60,37 @@ function MyNewAlgorithm(mna::MyNewAlgorithm, cachedresults::CachedResults)
57
60
end
58
61
```
59
62
60
-
3. Define a `compileintent!` for your new type `@recvtime function compileintent!(ibnf::IBNFrameworkMNA, idagnode::IntentDAGNode{<:ConnectivityIntent}; verbose::Bool = false)`
61
-
Inside your function you can use [`MINDFul.intradomaincompilationtemplate`](@ref) and [`MINDFul.compileintenttemplate!](@ref) for easier development.
62
-
Read the docs of the two functions for a better understanding. Now that's all.
63
-
For multi-domain availability research the most important configurations you might want to add are `prioritizepaths` from `intradomaincompilationtemplate` and `prioritizesplitbordernodes` from `compileintenttemplate!`.
64
-
The first one determines the internal domain paths and the second the split border nodes between the domains.
63
+
### 3. Define the Compilation Function
64
+
65
+
Define the `compileintent!` function for your new algorithm type. You can use the provided templates `intradomaincompilationtemplate` and `compileintenttemplate!` to jumpstart your development.
# Your compilation logic here using intradomaincompilationtemplate and compileintenttemplate!
70
+
end
71
+
```
72
+
73
+
For multi-domain availability research, the most important configurations to hook into are:
74
+
-`prioritizepaths` (from `intradomaincompilationtemplate`): Determines the internal domain paths.
75
+
-`prioritizesplitbordernodes` (from `compileintenttemplate!`): Determines the split border nodes between domains.
76
+
77
+
## Event-Based Simulations and Visualizations
65
78
66
-
## Further APIs
79
+
MINDFul.jl provides a hackable interface designed to conduct event-based simulations under diverse scenarios. You can interact with the API to change intent states and monitor network resources over time.
80
+
81
+
Additionally, the companion package `MINDFulMakie.jl` can be used to visualize your simulations, draw intent DAGs, or render a compiled connectivity intent across the network topology.
67
82
68
83
## Testing
69
84
70
-
Usefull testing functions are in the `TestModule` weak dependency.
71
-
To access them you first need to load `Test` and `JET` and then use `Base.get_extention`.
85
+
Useful testing functions are located in the `TestModule` weak dependency. To access them, first load `Test` and `JET`, and then use `Base.get_extension`.
MINDFul.jl is an open-source Julia library designed to facilitate research on multi-domain Intent-Based Networking (IBN), specifically focusing on pure IP-optical networks. It fills a noticeable gap in currently available tools by providing a stateful, modular representation of common IP-optical network equipment as well as common intent operations.
3
4
4
-
MINDFul.jl is an open source tool for studying IP-optical intent-based networking.
5
+
Network coordination across multiple domains is a complex task requiring seamless communication between network entities. While Software-Defined Networking (SDN) allows for efficient centralized control within domains, multi-domain networking often remains decentralized. MINDFul.jl tackles this by utilizing an intent-driven approach, which offers higher flexibility of interactions and support for much wider network capabilities than traditional protocols like BGP.
5
6
6
-
Intents are compiled down to further lower level intets forming an Directed Acyclic Graph (DAG).
7
-
The leafs of the DAG are called "low level intents" and are basically hardware configurations for the devices.
7
+
## Key Features
8
8
9
-
There are currently 3 devices to consider:
10
-
-the node as a whole
11
-
-the router
12
-
- the optical cross connect (OXC)
9
+
-**IBN-over-SDN Architecture:** Separates intent handling into its own dedicated framework, utilizing the underlying SDN controller strictly as a device driver for physical deployment.
10
+
-**Intent DAGs & Delegation:** Uses Directed Acyclic Graphs (DAGs) to represent relationships between different intents, linking logical objectives to low-level resource allocations. If an intent spans multiple domains, it can be securely delegated to adjacent domains.
11
+
-**Event-Based Simulations:** Provides a hackable interface designed to accelerate algorithmic research and conduct (event-based) simulations under diverse scenarios.
12
+
-**Visualizations:** The companion package `MINDFulMakie.jl` offers out-of-the-box visualizations for intent DAGs and network topologies.
13
13
14
-
For each of those devices a LLI is corresponding
15
-
16
-
MINDFul.jl was rewritten. Better docs soon.
14
+
MINDFul.jl provides the foundation to develop experimental intent system architectures and customized algorithms to advance the adaptation of IBN in modern multi-domain networks.
0 commit comments