@@ -153,4 +153,77 @@ test suite is clearly marked on the pull request with a check mark or a red cros
153
153
154
154
In general, contributors are expected to take care of not breaking the fingerprint
155
155
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