I’m reading the LoRaWAN Backend Interfaces specification. Here’s a diagram extracted from the document that shows the roaming architecture:
It’s not clear to me why they make a distinction between the serving and forwarding network server. What does each one do? I would expect just one third party network server relaying messages to the end-device’s home server. Why do we also have a “forwarding” server, in addition to the serving network server that is relaying messages?
Before answering your question, here is a link to our second ebook (free) about advanced LoRaWAN topics. See the last chapter about Roaming : here
First, reading the LoRaWAN Backend Interfaces if you want to set up roaming with The Things Stack (TTS) won’t be helpful as TTS doesn’t support the backend interfaces specifications. TTS has its own interface to connect to their own “roaming Hub” called Packet Broker. Packet Broker has many advantages but unfortunately, it is very specific to the TTN ecosystem. However, Packet Broker supports the backend interface specifications, which means that you can connect other NS (like ChirpStack) to it.
What you expect is exactly what you should keep in mind: 1 home NS (hNS) and 1 Forwarding NS (fNS). Forget the serving NS (sNS). Speaking about the sNS is only important when you want to set up an Handover Roaming. I guess you don’t want to do it as no NS in the world is ready for Handover roaming yet. Only the specification is ready . However, handover Roaming has many advantages.
Now if you still want to know why sNS exits :
sNS is in charge of the MAC Layer.
So in case of Stateless Passive Roaming (the only Roaming mode used at the moment), the device doesn’t know that it is in a roaming situation (hence “passive”). In that case, the MAC Layer is supported by the hNS or you could say that the sNS and hNS are together.
In the case of Handover roaming, the MAC Layer is supported by the NS where the device is. So you can say that fNS and sNS are together.
You can find in the book a few roaming situation examples (not yet all documented) :
TTS to Packet Broker
ChirpStack to ChirpStack
ChipStack to Packet Broker
ChirpStack to a Roaming Hub supporting the Backend Interface