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