Skip to content

Commit b32e2f6

Browse files
committed
doc: developer's guide: added section about INET fingerprint calculator
1 parent 7254ed6 commit b32e2f6

File tree

1 file changed

+74
-1
lines changed

1 file changed

+74
-1
lines changed

doc/src/developers-guide/ch-testing.rst

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,77 @@ test suite is clearly marked on the pull request with a check mark or a red cros
153153

154154
In general, contributors are expected to take care of not breaking the fingerprint
155155
tests. In the case of a necessary fingerprint change, the CSV files should be updated
156-
in separate patches.
156+
in separate patches.
157+
158+
INET Fingerprint Ingredients
159+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160+
161+
In addition to the standard OMNeT++ fingerprint ingredients (covered in the
162+
`OMNeT++ manual <https://omnetpp.org/doc/omnetpp/manual/#sec:testing:fingerprint-tests>`__),
163+
INET provides 5 additional fingerprint ingredients that offer more granular control
164+
over what aspects of network simulation are considered significant for reproducibility
165+
testing. The default INET fingerprint ingredients string is ``"~UNID"``, meaning
166+
all INET-specific ingredients are enabled by default.
167+
168+
These ingredients are handled by the ``inet::FingerprintCalculator`` class. The
169+
fingerprint test script automatically adds the corresponding ``--fingerprint-calculator-class``
170+
option to the simulation command lines.
171+
172+
**Filter Ingredients (Exclusion Filters)**
173+
174+
These ingredients act as filters that remove certain events from fingerprint calculation
175+
entirely, before other ingredients are processed:
176+
177+
``~`` (NETWORK_COMMUNICATION_FILTER)
178+
Excludes intra-node communication from fingerprint calculation. When enabled,
179+
only includes packet arrival events that cross network node boundaries (where
180+
sender node and arrival node are different); all other events are excluded
181+
from the fingerprint. This focuses fingerprinting on actual network
182+
communication rather than internal node processing. This filter affects all
183+
other fingerprint ingredients, including OMNeT++ ones.
184+
185+
``U`` (PACKET_UPDATE_FILTER)
186+
Excludes packet update arrival events from fingerprint calculation, all other
187+
events are unaffected. When enabled, filters out packets that are marked as
188+
"transmission update" packets. This causes packet transmission updates such
189+
as truncations to be ignored. Packets will only be taken into account with
190+
their originally intended content, regardless of what was actually
191+
transmitted. This flag is formally independent of the '~' flag, but in
192+
practice it only makes sense together with it.
193+
194+
**Path Information Ingredients**
195+
196+
These ingredients add path information to the fingerprint hash for packet arrival events:
197+
198+
``N`` (NETWORK_NODE_PATH)
199+
For packet arrival events, includes the full path of both sender and arrival
200+
network nodes in the fingerprint. Ignores non-packet events and all events
201+
that happen outside network nodes. Makes the fingerprint sensitive to which
202+
specific network nodes are involved in communication. For each packet arrival
203+
event, adds the full path of the containing network node for both the sender
204+
and arrival modules, even inside the same network node.
205+
206+
``I`` (NETWORK_INTERFACE_PATH)
207+
For packet arrival events, includes the full interface path of both sender
208+
and arrival network interfaces in the fingerprint. Ignores non-packet events
209+
and all events that happen outside network interfaces. Makes the fingerprint
210+
sensitive to which specific network interfaces are used for communication.
211+
For each packet arrival event, adds the interface full path of the containing
212+
NIC modules, even inside the same network interface.
213+
214+
**Content Ingredient**
215+
216+
``D`` (PACKET_DATA)
217+
Includes the actual packet payload data in the fingerprint. For packet arrival events
218+
with non-zero length, adds the raw packet content to the hash. For byte-aligned
219+
packets (length divisible by 8), processes content as bytes; otherwise processes
220+
as individual bits. This makes the fingerprint sensitive to actual packet content,
221+
not just packet structure or timing. Note that this ingredient requires packet
222+
serialization, so it will not work for simulations that contain protocol headers,
223+
payload, etc. that have no serializer implemented.
224+
225+
**Usage Notes**
226+
227+
- Filter ingredients (``~`` and ``U``) work as exclusion filters and are processed
228+
before other ingredients
229+
- Path and content ingredients (``N``, ``I``, ``D``) only apply to packet arrival events

0 commit comments

Comments
 (0)