From fcae9dd9e192c12203da18c19d563ff8ba8f4499 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 12 May 2025 18:22:26 +0200 Subject: [PATCH] development/architecture - add operating stages --- source/development/architecture.rst | 101 ++-- source/development/backend.rst | 4 +- source/development/backend/overview.rst | 2 +- .../images/OPNsense_Components.png | Bin 63752 -> 0 bytes .../development/images/OPNsense_backend.png | Bin 36475 -> 0 bytes .../development/images/OPNsense_frontend.png | Bin 45594 -> 0 bytes .../images/OPNsense_operating_events.graphml | 476 ++++++++++++++++++ .../images/OPNsense_operating_events.svg | 286 +++++++++++ 8 files changed, 834 insertions(+), 35 deletions(-) delete mode 100644 source/development/images/OPNsense_Components.png delete mode 100644 source/development/images/OPNsense_backend.png delete mode 100644 source/development/images/OPNsense_frontend.png create mode 100644 source/development/images/OPNsense_operating_events.graphml create mode 100644 source/development/images/OPNsense_operating_events.svg diff --git a/source/development/architecture.rst b/source/development/architecture.rst index c26dc712..1a4c52c6 100644 --- a/source/development/architecture.rst +++ b/source/development/architecture.rst @@ -22,7 +22,7 @@ This article describes how this will be achieved. High-level architecture ----------------------- -|OPNsense Components.png| +|OPNsense Components.svg| As the above model shows there are two main areas in our stack, the frontend implemented with PHP/Phalcon and the backend using a custom @@ -42,37 +42,13 @@ Manipulation of the core configuration file is handled at the frontend model; the backend service is merely a consumer of the information provided. --------------------- -Backend Architecture --------------------- -|OPNsense backend.png| - -Configd, is responsible -for the core system interaction like starting and stopping of daemons -and generating configuration files for used services and applications. - -The daemon listens on a unix domain socket and is capable of executing -actions defined in it’s own configuration directory -(“/usr/local/opnsense/service/conf/actions\_\*.conf”). - -Currently there are four types of services implemented in the daemon: - -- script : execute external (rc) scripts, report back success or failure -- script_output: execute external scripts, report back their contents, usually in json format -- stream_output: open streams to backend components -- inline : perform inline actions which are part of configd, most notable template generation and maintanance. - -| -| Template generation is handled by Jinja2 (http://jinja.pocoo.org/), - more information on how to create application templates can be found - at :doc:`/development/backend/templates`. --------------------- Frontend Architecture --------------------- -|OPNsense frontend.png| +|OPNsense frontend.svg| Routing ------- @@ -123,12 +99,71 @@ control and the repositories are split into 4 parts: | For detailed information about the development workflow see: | :doc:`OPNsense development workflow ` -.. |OPNsense Components.png| image:: images/OPNsense_Components.png + +-------------------- +Backend Architecture +-------------------- + + +Middleware +-------------------------------------- + +|OPNsense backend.svg| + +Configd, is responsible +for the core system interaction like starting and stopping of daemons +and generating configuration files for used services and applications. + +The daemon listens on a unix domain socket and is capable of executing +actions defined in it’s own configuration directory +(“/usr/local/opnsense/service/conf/actions\_\*.conf”). + +Currently there are four types of services implemented in the daemon: + +- script : execute external (rc) scripts, report back success or failure +- script_output: execute external scripts, report back their contents, usually in json format +- stream_output: open streams to backend components +- inline : perform inline actions which are part of configd, most notable template generation and maintanance. + +| +| Template generation is handled by Jinja2 (http://jinja.pocoo.org/), + more information on how to create application templates can be found + at :doc:`/development/backend/templates`. + + + +Operating stages +-------------------------------------- + +|OPNsense_operating_events.svg| + +As all earlier layers describe how user input can be persisted and service information can be exchanged, we still +have a gap in our functionality when looking at the life of a firewall. +Until this point we have means to manually manage services and devices, including ways to collect information on demand, +but still in a rather isolated way (events triggered via the api layer). + +This is where :doc:`syshooks ` and :doc:`plugins ` come into play, +these offer mechanisms to ensure different types of services can cooperate with the shared functionality available. + +Between starting and stopping our firewall, we can identify three stages. +After power-on, we are booting, when this initial stage has been reached we end up with a running firewall with +all configured services available. During time, various events can happen, for example, someone pulling an network cable +and pushing it back in, this is the running stage. +Eventually, if someone decides to power-down or reboot the machine, we are entering shutdown stage, letting services know +we are ending operation. + +Further details of each stage can be found in the :doc:`overview ` document. + +To avoid endless dependency loops, services should prevent hooking on events that are not strictly required for operating. +For example, forcing a restart of a component when a network interface has changed is usually a sign of not +following best practices for designing network services. + + +.. |OPNsense Components.svg| image:: images/OPNsense_Components.svg :width: 600px - :height: 548px -.. |OPNsense backend.png| image:: images/OPNsense_backend.png +.. |OPNsense backend.svg| image:: images/OPNsense_backend.svg + :width: 500px +.. |OPNsense frontend.svg| image:: images/OPNsense_frontend.svg :width: 600px - :height: 575px -.. |OPNsense frontend.png| image:: images/OPNsense_frontend.png - :width: 600px - :height: 461px +.. |OPNsense_operating_events.svg| image:: images/OPNsense_operating_events.svg + :width: 700px diff --git a/source/development/backend.rst b/source/development/backend.rst index 77691e18..86bc375b 100644 --- a/source/development/backend.rst +++ b/source/development/backend.rst @@ -9,7 +9,7 @@ Our core backend service (configd) is implemented using `Python ` document contains a practical write up to explain the various phases of +operation and hooks available in them. .. toctree:: :maxdepth: 2 diff --git a/source/development/backend/overview.rst b/source/development/backend/overview.rst index 913a5efd..41d6b5c0 100644 --- a/source/development/backend/overview.rst +++ b/source/development/backend/overview.rst @@ -32,7 +32,7 @@ in sequence: .................................... -Normal operation +Running stage .................................... Now the system is booted and events may take place, some of the common integration points with their purpose are listed below: diff --git a/source/development/images/OPNsense_Components.png b/source/development/images/OPNsense_Components.png deleted file mode 100644 index adbcf0eda5420f492c7bfcc7b7b1ce738f2f483a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63752 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 aH~iNQ2gjF=E$!U}e^iw<&*v*z-T5ETV=XWM diff --git a/source/development/images/OPNsense_frontend.png b/source/development/images/OPNsense_frontend.png deleted file mode 100644 index ccf661a66a6560d55ccc38b3dfa96b5f7dac5d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45594 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 diff --git a/source/development/images/OPNsense_operating_events.graphml b/source/development/images/OPNsense_operating_events.graphml new file mode 100644 index 00000000..84bde755 --- /dev/null +++ b/source/development/images/OPNsense_operating_events.graphml @@ -0,0 +1,476 @@ + + + + + + + + + + + + + + + + + + + + + + + + bootloader +/ +kernel stage + + + + + + + + + + + + + + + + + + + power on + + + + + + + + + + + + + + + + + + syshooks +[early] + + + + + + + + + + + + + + + + + + + plugins +(registration points) + + + + + + + + + + + + + + + + + + + syshooks [start] +-> rc(8) + + + + + + + + + + + + + + + + + + + running + + + + + + + + + + + + + + + + + + syshook / plugin +events + + + + + + + + + + + + + + + + + + + stop [power off] + + + + + + + + + + + + + + + + + + syshooks +[stop] + + + + + + + + + + + + + + + + + + + Simple scripts, executed early, also used by core +components to handle early-boot requirements + + + + + + + + + + + + + + + + + Structures pluggable core services, devices and +offers configure event handlers + + + + + + + + + + + + + + + + + Regular service startup point + + + + + + + + + + + + + + + + + bootup stage + + + + + + + + + + + running stage + + + + + + + + + + + shutdown stage + + + + + + + + + + + integration points for (device +related) events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/development/images/OPNsense_operating_events.svg b/source/development/images/OPNsense_operating_events.svg new file mode 100644 index 00000000..b4dab716 --- /dev/null +++ b/source/development/images/OPNsense_operating_events.svg @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bootloader + / + kernel stage + + + + + + + + + + power on + + + + + + + + + + syshooks + [early] + + + + + + + + + + plugins + (registration points) + + + + + + + + + + syshooks [start] + -> rc(8) + + + + + + + + + + running + + + + + + + + + + syshook / plugin + events + + + + + + + + + + stop [power off] + + + + + + + + + + syshooks + [stop] + + + + + + + + + + Simple scripts, executed early, also used by core + components to handle early-boot requirements + + + + + + + + + + Structures pluggable core services, devices and + offers configure event handlers + + + + + + + + + + Regular service startup point + + + + + + + bootup stage + + + + + + + running stage + + + + + + + shutdown stage + + + + + + + + + + integration points for (device + related) events + + + + + + + + + + + + + + + + + + + + + + + + + + +