How to multicast a message to a destination group in zigbee network? - zigbee

How can I configure a ZigBee network to multicast some message from the coordinator?
I am using API mode in XBee s2 modules.
I want send a message that has multiple nodes as the destination. Some kind of broadcast message but not for all devices.
Is there any functionality to multicast in ZigBee s2..? Is this can be done through XCTU?

Here's the answer I wrote back in 2015, and I don't believe there's any new support for multicasting. I know that for broadcast, nodes will retransmit a message 3 times to ensure that all nodes receive a copy of it, so there's high overhead for large networks.
I think that you are better of sending multiple unicast messages to limit network traffic.

Related

UDP Multicast architecture considerations

I want to know if there's a downside of architecting a multicast pub-sub like system in the way described below:
Problem
There are about 30 applications that need to listen to certain events
There is 1 server that is receiving events from across the network [let's call it PRODUCER]
The 30 applications may be interested in one or more of the 30 events
Solution
we can assign each topic to a multicast group (defined by an IP in the multicast ip range)
For each event received by the PRODUCER it multicasts on the relevant channel/group
The subscribers subscribe to each multicast group/channel that they are interested in
My questions are
Is there any overhead in this design as opposed to having each subscriber listening to ALL events and having the PRODUCER send to a single channel - in other words, does sending on multiple channels have a downside?
For UDP Multicast, my understanding is that a group is defined by an IP address (and not the port). Then what is the relevance of a port in specifying a group/endpoint?

Ethernet data transfer between FPGA-PC

I am developing a logic core to perform data transfer between a FPGA and a PC over ethernet, using a LAN8710 PHY on my FPGA board.
I've achieved to transfer some UDP data packets from the FPGA to the PC. It's a simple core that complies with the PHY transfer requirements. It builds the UDP package and transfer it to the PC.
To check the reception on the PC, I am using Wireshark and as said above, I receive the packets correctly. I've checked the reception with a simple UDP receiver written by myself.
But, I've noticed that I only receive these packets when Wireshark is running on the PC. I mean, if Wireshark is ON, my application receives the packets too, and the counter of received packets of the following picture increases. (This picture is not mine, just one from the internet)
http://i.stack.imgur.com/wsChT.gif
If I close Wireshark, the PC stops receiving packets and the counter of received packets stops. My application stops receiving too.
Although novice on networking topics, I suspect that this issue is related to PC-side. Seems like Wireshark is "opening/closing" the ethernet communication channel, or something like that. Does anyone knows about this issue?
To build a functional core to transfer data between a PC and the FPGA, I've developed a core to transfer and receive UDP packets. Next step will be ARP implementation (to let the PC identify my FPGA board, as I understand). What protocols are necessary to perform full-duplex data transfer between this 2 devices?
Thank you very much in advance,
migue.
Check whether you are able to get appropriate receive interrupt at ethernet driver level on PC-side for a single transmitted packet by FPGA. If you do not get the receive interrupt, check on the transmit side(FPGA) for appropriate transmit interrupts for packet that is being transmitted. This should mostly help you in cornering the issue.
As far as i know, wireshark is just a packet analyzer/sniffer. However, if wireshark is suspected, one option could be to try with alternate packet sniffer to rule out if any such scenario is happening.
A handy tool for determining problems in network and also for determining the network statistics shall be netstat. netstat -sp udp shall list down the statistics only for UDP. There are many other parameters that can be used with netstat for diagnosis.
After many months I solved it, I post to help someone stucked in the same point.
Finally I figured out that Wireshark uses a tool to access the network link layer of the computer. This tool allows Wireshark to sniff all incoming and outgoing packets at a specified network device. To do this, the first step is to OPEN the network device, and that's why my program only worked if Wireshark was open.
Regards.

Data link layer + Network layer connections

I'm reading up on networking and there is something about the layer 2+3 OSI model interaction i don't get. I want first to understand the basics so feel free to keep it simple.
Lets say we have a LAN - 5 computers all connected to a router which is connected to an ISP router.
1.
one of the PC on the LAN wishes to send a message to another PC on the same LAN(they are both connected to the local router but not to each other directly) -
is there layer 3 encapsulation in use here?
if not - and we only use the layer 2 information, what is the path the message will go through? is it PC1->PC2 , or PC1->Router->PC2.
if it is going through the router - what information is added in each message transaction?
and if not - do PC's on the same LAN (connected to the same router in some layer 2 protocol) aware of each other? can they message each other although they are not connected directly
2.
one of the PC on the LAN wishes to send a message to a PC outside the LAN (way way outside).
i understand it goes PC1->Router->ISP Router -> ......... -> recipient local router -> recipient
which entity adds the layer 3 data? is it the router? PC1? ISP router?
when will this information be needed? since all single transaction is connected by devices who can talk between them self's in layer 2 protocols? (PC1 talks to it's router in level 2 protocol, so does Router to ISP router... etc?)
any further information worth adding will be appreciated.
Thanks!
Is there layer 3 encapsulation in use here? Yes it is! The two computers are connected in a network created by your router, which is a Network Layer Device. When the sender sends a packet it doesn't know where is the receiver (in LAN or in Internet), so it prepares to send the packet as usually. Then the router checks his table and knows that the receiver is connected with it, but until this happened everything was going on normally. So, the thing you have to understand is this: while it is a communication between two machines, all the protocols of each layer must be accomplished. If the computers would be connected with a switch, a Data Link Layer device, the authentication would be made with their MAC addresses instead of their IPs, so there is not a Network Layer here(obviously no layer 3 encapsulation ) but this is not your case.
That's a long story to tell how the packets travel from sender to receiver. But in general, there are two important information that each packet should have: the address of the destination machine(Network Layer), and an identifier of the process that should receive the packet in the destination machine (Transport Layer). If it is the first time that the machines communicate with each other, the router connected with the sender broadcasts that packet in all its outbound lines, and so on with the routers which receive this packet, until the destination is reached. After the first packet has been sent the routers keep records on their tables how to locate each machine in the best way possible. This will make broadcast unnecessary next times. So, the packet reached the destination. The receiver probably has a lot of processes opened in that time (open your Task Manager -> Processes to see what I'm talking about). This is where T.L protocols appear. They use the identifier in the head of the packet to address the packet in the right process. And than the communications goes on with Application Layer Protocols.
I hope that this is a useful information for you. If you really want to study this things I would suggest you Computer Networks of Andrew Tanenbaum.
If I understand OSI right - it's just an abstraction. http://en.wikipedia.org/wiki/OSI_model#Description_of_OSI_layers Your messages send in packets which is Transport layer. Those messages are built by means of Network layer. If there wasn't this layer packages data(information you send) wouldn't know how to encapsulate into a package.
if it is going through the router - what information is added in each message transaction
Each package consist service fields http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
Each time it passes throw a router, router adds information to a header (IP ...) to let the package receiver know where it came from ( it's network layer, because you don't add this information by yourself, it does network for you)

Wireless Oneway Broadcast Feasibility

I am planning on a small project and need help regarding its feasibility.
I have a few wireless mobile devices (could be phones and laptops) which periodically broadcast packets and also each device listens for other broadcasts. Any device in range should receive the broadcasted data (no need to reply or ackwnoledge).
To perform this can I just send UDP packets with address 255.255.255.255, I heard this was deprecated. If so how do I achieve this? There is no underlying network topology so I cannot rely on multicast or is there a way?
If there are 100 such devices, all in wireless range, each 1 performing a periodic broadcast and receive, will it work? will there be too many collisions ? and become infeasible. Each device receiving 70% of the packets is a good performance according to me.
Thank You
Unfortunately, it doesn't work this way.
You won't be able to send IP-layer broadcast packets until you have associated with an access point. Once association has been made, only devices associated with the same AP (and other devices bridged to the IP over its wired interface) will see your broadcasts. The same goes for layer 2 broadcasts as well.
What you need is to get at a lower layer. Unfortunately, each WiFi adapter has different methods for doing this, and for many, it isn't even possible. I'm afraid what you are attempting will not work.

Multicasting on multiple networks

Say, for example, that I'm part of a multicast group on 239.255.10.10. I'm also connected to two separate networks, one that has a 192.168.0.* and the other 192.168.1.* addressing. Both networks have a clients that is listening for incoming connections and are part of the above mentioned multicast group (because my client has it hardcoded).
When My computer sends out some data to that multicast group, will it be sent out on both networks or will there be some sort of error?
As long as those clients have registered interest in the group via IGMP, they should both receive the data. However, if there is a router between those networks that the multicast data must traverse, it needs to be configured to pass the data. If your computer is the one connected to both networks, it should just work.

Resources