Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.
support multiple BBMD Routers/networks over 1 NIC
-
How should the BACnet local devices (and or data sources or any other settings) be configured to allow communication between 1 Mango server/NIC and multiple BBMD routers/networks? (example. Mango is at 172.10.10.2, BBMD routers are at 172.11.10.2, 172.12.10.2, 172.13.10.2)
-
Hi gmulcahy, welcome to the fourm!
I believe - and I could be wrong - that Mango shouldn't require any specific settings assuming the BBMDs are all on the same network (172.0.0.0/8 by the looks of it). Rather, it's the devices that the BBMDs will be serving to route messages to that need to register with the BBMD they are foreign devices through. I don't believe a BACnet node should have more than 1 BBMD that it registers as a foreign device with, or the path to that node might be ambiguous. Mango will figure it out by the BBMD devices informing it with "IAmRouterToNetwork" messages, as well as the BBMDs forwarding Mango's broadcasts and the nodes' responses.
On another note, I can say with certainly a BACnet4J LocalDevice does not support being registered as a foreign device with a BBMD in more than one network.
But, alas I have not gotten to play with a BACnet network of that complexity much (and definitely not from the beginning of the process). Someone else may have more to contribute.
Have you attempted discovery? What are you actually finding?
-
Thanks for the response Phil, I should note that the IP addresses that I provided were generalized, are not the actual ones on this network, and don't accurately reflect the network topology. If you think that it is relevant I can try to provide more accurate information.
Here are the steps of what I have been finding:
When BBMD address is blank, the who-is request seems to be broadcast to the local network, showing BACnet devices on the LAN. This would be any device on the 172.10.10.x network.When a BBMD address is specified (i.e. 172.11.10.2) and then my data source will do a device discovery and see BACnet devices on the 172.11.10.x network.
Both of those work as expected. However, I'm not sure how to set up distinct data sources to communicate with each of the networks.
Please let me know if you'd like any additional information.
As an aside, I'm not sure if this should be in BACnet4J or the Mango Automation general Discussion. This is specific to the BACnet protocol, but I'm not actually doing any work outside of the Mango interfaces. Please feel free to move the conversation if you see fit.
-
What's your bind address on the local device? You could try setting up multiple local devices on the sink addresses of the different network segments served by the BBMDs, and then you can have each local device register with the BBMD on that segment. So, for the 172.16.1.x/24 network bind 172.16.1.0, 172.16.2.0 for 172.16.2.x/24 etc
I believe you could also try having multiple 0.0.0.0 local devices operating on different ports, but I believe that may cause issues with discovery with some devices.
Then you can use the different local devices in different data sources.
When BBMD address is blank, the who-is request seems to be broadcast to the local network, showing BACnet devices on the LAN. This would be any device on the 172.10.10.x network.
Again I've somewhat limited knowledge of the complexities of BACnet and may be quite wrong, but that sounds like the devices the BBMD ought be routing requests to are the segment the BBMD considers to be its local network. Registering with that BBMD as a foreign device of that network would be the Mango local device joining that network, while having the devices register with the BBMD thinking it's apart of the network segment Mango is on will cause the BBMD to forward broadcasts on its network to the devices registered with it as foreign devices in that network. It sounds like the BBMD is inverted, to my limited knowledge.
-
Regarding the bind address on the local device, I've been able to set it to 0.0.0.0 or 172.10.10.2. If I set it to an IP address that is not on the machine (i.e. 172.10.11.3), then I get a "Cannot assign requested address (Bind failed)" error when trying to send a "WhoIs".
If a suggestion is to set up multiple sink addresses, then I may need some additional information, but the Mango server is limited to a single WAN IP address due to limited network address availability.
I'm under the impression that each BBMD is used as the interface to connect with the local network of BACnet devices. In this case, we'd like the Mango server to be able to request data from each of the local BACnet networks via the BBMD on that network. I'm not able to adjust the ports, because the local devices are configured to use the default port.
-
I would expect 172.10.10.0 to allow you to bind it. If 172.10.10.2 is discovering devices then you could bind on that IP, that would be fine. And then have another local device bind 172.10.11.2
If a suggestion is to set up multiple sink addresses, then I may need some additional information, but the Mango server is limited to a single WAN IP address due to limited network address availability.
For some reason I was assuming the BBMDs were on different subnets. (Edit: But I guess from the thread title there's only one Network interface card) and so the Mango computer had addresses on each subnet. If there's only one subnet, it still seems to me the foreign device registration should be done by the devices they are routing to, not Mango. Registering as a foreign device is what configuring the BBMD on the local device does.
I'm under the impression that each BBMD is used as the interface to connect with the local network of BACnet devices. In this case, we'd like the Mango server to be able to request data from each of the local BACnet networks via the BBMD on that network. I'm not able to adjust the ports, because the local devices are configured to use the default port.
I understand that I think, but I'm saying - and for the nth time I may be wrong, so, this'll be the last time I go back to it - the devices on the peripheral networks are foreign devices to the network Mango is doing discovery on, which means it's their job to register with the BBMD as a foreign device that should receive broadcasts from the network Mango is running on.
It is also my understanding that BBMDs should be aware of one another that are on the same BACnet network number. Thus you should not have to register as a foreign device with all of them to get the broadcast passed around, since they already pass broadcasts between BBMD devices and it's all the same BACnet network Mango would be a foreign device to. Have you ensured all the devices have the same BACnet network number configured?
-
When I attempt to set up a data source using the Local device of 172.10.11.0 I get the following error when trying to 'Send WhoIS': "Cannot assign requested address (Bind failed)"
When I attempt to set up a data source using the equivalent Local device of 172.10.10.0 I get the following error when trying to 'Send WhoIS':"java.io.IOException: Invalid argument (sendto failed)"
I'm hoping to avoid too much confusion regarding networking, but I'll try to add some context and details below in case there is relevant information:
The intention is to use a single Mango server across multiple sites which are on a private WAN network, each site has a LAN with BACnet devices. There isn't any interest in trying to create a larger unified BACnet network, the preference is to keep each network isolated. The "BBMD Routers" are devices that have other primary purposes, they happen to support BBMD though which is what Mango would need to communicate with the network, since Mango is on the WAN side.
If it is beneficial I can add the IP addresses of the local test environment that we have configured and supply screencaps.
Thanks again for the responses and please let me know if there are questions that I didn't answer fully.
-
Hello Phil,
I just wanted to follow up on this item.
Just to clarify, we don't want to create a single large BACnet network across all sites, because this could create BACnet Address conflicts (adding a new device to site A it could cause a conflict with an existing device on site X). There are also traffic issues that could be caused by having every broadcast request being sent to all devices across all sites. The other option of having segregated BACnet network addresses (BAC0, BAC1...) isn't reasonable, because this would cause logistical configuration headaches at each site for device configuration without any tangible benefits that can't be already achieved by isolating the site as a LAN.
As you had mentioned on your initial response, there could be an issue in having multiple BBMD addresses in a single communication path, because you'd run into a similar situation of having ambiguous device addresses, etc.
Normally BBMD seems to be configured when setting up the route that you would use to talk to a device/site/LAN. However, when trying to do this with local BACnet I'm running into issues with available IP addresses for the local bind address. I've been able to use 0.0.0.0 and 172.10.10.2. Other IP addresses create bind errors though (since Mango isn't able to bind to an unknown IP). Are there any other suggestions/paths or approaches that I should take to try to configure these sites in Mango?
Thanks again for your assistance.
-
Would that I were formally versed in BACnet! From my piecing it doesn't sound like a configuration that's going to conform to the BACnet specification - to have one device operating in multiple networks from one port at one address with no BACnet router. I have to imagine that's the very reason the specification has sixteen ports reserved. You could use a MangoES at each site, and then collect data back to this central Mango you seem to be after. Then you can simply configure the Persistent publisher and data source at any given site. That's probably what we would recommend / do, were we doing it.
It may also be that there's a clever solution using another machine's routing table to appear to have more BACnet devices locally on the 0xBAC0 port, when really they're just NAT'ing to 0xBAC1-F to the Mango device, which is using those devices as proxies in making the BBMD registrations / communication to that BBMDs.
I have told you what I know.
- A BACnet4J LocalDevice cannot be a foreign device in more than 1 network.
- A BACnet4J LocalDevice does not function as a BACnet router.
- I am not well enough versed in BACnet or what you're really trying to do to tell you what you're asking is or isn't advisable / possible in the spec.
-
For posterity: another solution was proposed to add more network addresses to the adapter (which both Windows and Linux support), such that they could bind that address and the standard port.