Misbehaving nodes revisited: rogue end device

I recently installed my first own gateway. It’s a Mikrotik wAP LR8 kit together with their 6.5 dB antenna.
looking at the traffic, one device (260B2134) stands out having an “Unconfirmed Data Down” of 56 bytes (raw payload) nearly every minute while there are almost no other downlinks to other devices. These transmissions are at SF7 125kHz and always between 868 and 868.6 MHz (mostly 868.1).

So setting aside the FUP, I now suspect, that my gateway operates beyond the legal duty cycle.
So this is my first question: Is this true?

I am somehow confused as the airtime calculator indicates 128.3 ms for 56 bytes (does this also apply for downlinks?). At an every minute rate, this would be a dute cycle of 0.002 which is less then 1% so still ok.
On the other hand, the gateway stats report a varying downlink_utilization well above 1% (seems to depend on how long the gateway is online since last reboot).

    "min_frequency" : "868000000",
    "downlink_utilization_limit" : 0.01,
    "max_frequency" : "868600000",
    "downlink_utilization" : 0.101504

But this whould mean a downlink is about 6 seconds (3600*.101/60) which is probably nonsense.
After all, I double checked, that the “Enforce duty cycle” box is checked. So I should be on the save side, right?

Of course, I read the discussion here: https://www.thethingsnetwork.org/forum/t/misbehaving-nodes/46066 and I am also aware of the related open issue https://github.com/TheThingsNetwork/lorawan-stack/issues/3864. However, I really don’t want my gateway to operate beyond legal limits so I need to take measures/have measures taken… Unfortunately, a fox hunt in downtown Munich won’t be successful as there are probably half a million people within reach of my gateway.

I would propose to contact your local community in Munich

Maybe you find the one using this node. I succeeded in finding the user of the node causing the problem for my gateway by using our local Slack-Channel.

@johan, those downlink_utilization and downlink_utilization_limit are a bit confusing. The API doesn’t document what they are, but if I look at the source code (here and here) it looks like downlink_utilization isn’t actually the utilization, but the utilization as a fraction of the limit. I think we should either document this better in the API, or perhaps treat it as a bug, and return the actual utilization in that field.

Yes, both are percentages; utilization is a fraction of the limit and limit is a fraction of time.

What would “return the actual utilization” be instead?
It would then be the utilization of the duty cycle window (percentage); not a duration, right?

So what’s the goal here; (1) getting the fraction of depleted duty cycle limit (currently downlink_utilization), (2) getting the fraction of the duty cycle window that has been used (time-on-air), (3) getting the time-on-air in the moving duty cycle window or (4) 1 minus the previous, so the available time-on-air in the moving duty cycle window?

We can do (2) so that downlink_utilization <= downlink_utilization_limit. But it seems like OP would like to see (3) or (4), but the problem is that the duty cycle has an arbitrary length, it’s moving and so when the downlink is actually scheduled it may be different.

The goal here is to either make it obvious or to document in the API what’s what.

I think that’s the confusing part, it would feel more natural to me if we had:

  1. downlink utilization: active time / total time
  2. downlink utilization limit: the maximum allowed value of (1)

But I’m also fine with updating the API documentation to clarify that utilization is a fraction of the limit and limit is a fraction of time.

I really appreciate that you guys take my question seriously – especially as it seems to boil down to the meaning/understanding of the wording.
So, from what you write:

  • As long as the current downlink_utilization is less than 1, the gateway operates in the legal regime. That is the case with the traffic I am observing, so I’m fine.
  • What remains is the FUP and the question whether to enforce it at some point, but that’s not what my question was about in the first place and is discussed elsewhere.

So, thanks again. For me, that’s all I needed.

Indeed, your gateway is fine. And the discussion about fair use is indeed a separate one (the Handling Non-Compliant End Devices · Issue #3864 · TheThingsNetwork/lorawan-stack · GitHub that you already posted before).

And by the way: unless you disabled “Enforce duty cycle” in the gateway settings, the network server will not schedule more downlinks than allowed by the duty cycle limitations.

@homer24 on second glance, the meaning of downlink_utilization isn’t clear indeed. There’s a fix for this landing in 3.16.1 (Report utilization rate of duty-cycle window in sub-band's `downlink_utilization` by johanstokking · Pull Request #4876 · TheThingsNetwork/lorawan-stack · GitHub).