Good day!
I have virtual CheckPoint - Open Server, SMS + SG R81.20 take 634 with Jumbo take 98 installed, with interfaces/topology:

Then I have 2 access rules (ignore first 2):
1. Drop, UDP service: dst port - 1-65535, src port - 5566
2. Accept, any


Example case:
Traffic is sent by host 1.0.0.2, consists of 10 UDP packets, src IP - 1.0.0.1X, dst IP - 2.0.0.2, src MACs are randomized, dst MAC is MAC of eth0; ports used for packets:
src port dst port
3745 8823
5566 8823
2346 8899
1026 7478
5566 8899
9328 8899
5566 5478
5566 8899
1239 2348
8345 8899
We expect that 4 packets should be dropped (with src port = 5566) and 6 packets should be accepted
In reality, sometimes first access rule (according to logs) drops other packets too. Amount of falsely dropped packets varies - from 0 (i.e., works as expected) to 4 (worst case yet)

Notes:
* Looks like it doesn't depend on Topology choosen for eth0 and eth1 (tried other variants)
* It works just fine if there are no repeating dst ports (like 8899 and 8823 in the example above)
* Doesn't look like sending those packets with time gap changes anything (tried from 1 ms to 1 s)
Question is - is this expected?
And if so, where can i learn why this happens?
Thank you.