Classification: UNCLASSIFIED Caveats: NONE
Hi all, I'm trying to get some information on how batman works to determine what my next steps are for an experiment I'm running. I'm hoping someone on the list can tell me how Batman operates RIGHT NOW, not just how it is intended to operate in the future, so I can make reasonable plans.
1) I'm guessing from the following pages (which only describe roaming and announcement behaviors) that the TTL field of all packets is decremented by 1. Is this true? http://www.open-mesh.org/projects/batman-adv/wiki/Client-roaming http://www.open-mesh.org/projects/batman-adv/wiki/Client-announcement
2) Follow up to question 1; are the TTL fields of Batman packets and IP packets linked in some way? The library I'm using (zeromq, http://www.zeromq.org/) has a reliable multicast transport built on top of OpenPGM (http://code.google.com/p/openpgm/). My plan is to simulate reliable 1-hop broadcast by using reliable multicast and setting the TTL field to 1. However, this will only affect the IP layer. Unless batman also decrements the TTL field of the IP packets traveling over it, I'm kind of stuck.
3) Finally, does batman have the equivalent of multicast or (better yet) broadcast for data packets? That is, if I send something to a multicast IP address which all of its 1-hop neighbors are listening to, will all of them listen to the packet simultaneously, or will it act like a series of unicast messages?
If you're wondering what I'm trying to do, message me directly. It's easy to explain, but off topic for this list.
Thanks, Cem Karan
Classification: UNCLASSIFIED Caveats: NONE
On Tuesday 04 September 2012 12:48:00 Karan, Cem F CIV wrote: [...]
- I'm guessing from the following pages (which only describe roaming and
announcement behaviors) that the TTL field of all packets is decremented by
- Is this true?
http://www.open-mesh.org/projects/batman-adv/wiki/Client-roaming http://www.open-mesh.org/projects/batman-adv/wiki/Client-announcement
TTL fields of the batman-adv specific TTL fields are decremented by one for each hop.
- Follow up to question 1; are the TTL fields of Batman packets and IP
packets linked in some way? The library I'm using (zeromq, http://www.zeromq.org/) has a reliable multicast transport built on top of OpenPGM (http://code.google.com/p/openpgm/). My plan is to simulate reliable 1-hop broadcast by using reliable multicast and setting the TTL field to 1. However, this will only affect the IP layer. Unless batman also decrements the TTL field of the IP packets traveling over it, I'm kind of stuck.
No, batman-adv is a distributed switch on layer 2. So it operates on a different layer and has no knowledge of IP or its TTL field (please ignore the gateway feature for now... this is the only exception were it accesses L3 stuff).
- Finally, does batman have the equivalent of multicast or (better yet)
broadcast for data packets? That is, if I send something to a multicast IP address which all of its 1-hop neighbors are listening to, will all of them listen to the packet simultaneously, or will it act like a series of unicast messages?
It currently has layer 2 broadcast support (it resents broadcast packets 3 times to increase the propability for a successful tx). Multicast is handled as multicast. Linus Luessing has a patchset to implement optimized multicast [1]. I am not sure about the current state. But maybe he can give more detailed information about it. But you should know that the optimized implementation may use unicast in some scenarios.
Kind regards, Sven
[1] http://www.open-mesh.org/projects/batman-adv/wiki/Multicast-ideas
Classification: UNCLASSIFIED Caveats: NONE
OK, based on the answers below, I have a few more questions.
1) Is there any way for a user program to communicate with batman if certain packets need special handling? I don't mind if I have to mark each packet individually, or if I have to do something else interesting, but if I can mark a packet as special, then I can hack code into batman to set the TTL field the way I need it.
2) Does batman rely on multicast in any way for its own operation? That is, for something that keeps the network running well. If not, I can force all multicast packets to have a TTL of 1. This still requires some way of marking my own IP packets as multicast packets in a manner that batman can recognize, but I'm willing to do that, if it will help.
Thanks, Cem Karan
-----Original Message----- From: Sven Eckelmann [mailto:sven@narfation.org] Sent: Tuesday, September 04, 2012 9:05 AM To: b.a.t.m.a.n@lists.open-mesh.org Cc: Karan, Cem F CIV (US); Linus Lüssing Subject: Re: [B.A.T.M.A.N.] Batman, TTL, broadcast, etc. (UNCLASSIFIED)
On Tuesday 04 September 2012 12:48:00 Karan, Cem F CIV wrote: [...]
- I'm guessing from the following pages (which only describe roaming
and announcement behaviors) that the TTL field of all packets is decremented by 1. Is this true? http://www.open-mesh.org/projects/batman-adv/wiki/Client-roaming http://www.open-mesh.org/projects/batman-adv/wiki/Client-announcement
TTL fields of the batman-adv specific TTL fields are decremented by one for each hop.
- Follow up to question 1; are the TTL fields of Batman packets and
IP packets linked in some way? The library I'm using (zeromq, http://www.zeromq.org/) has a reliable multicast transport built on top of OpenPGM (http://code.google.com/p/openpgm/). My plan is to simulate reliable 1-hop broadcast by using reliable multicast and setting the TTL field to 1. However, this will only affect the IP layer. Unless batman also decrements the TTL field of the IP packets traveling over it, I'm kind of stuck.
No, batman-adv is a distributed switch on layer 2. So it operates on a different layer and has no knowledge of IP or its TTL field (please ignore the gateway feature for now... this is the only exception were it accesses L3 stuff).
- Finally, does batman have the equivalent of multicast or (better
yet) broadcast for data packets? That is, if I send something to a multicast IP address which all of its 1-hop neighbors are listening to, will all of them listen to the packet simultaneously, or will it act like a series of unicast messages?
It currently has layer 2 broadcast support (it resents broadcast packets 3 times to increase the propability for a successful tx). Multicast is handled as multicast. Linus Luessing has a patchset to implement optimized multicast [1]. I am not sure about the current state. But maybe he can give more detailed information about it. But you should know that the optimized implementation may use unicast in some scenarios.
Kind regards, Sven
[1] http://www.open-mesh.org/projects/batman-adv/wiki/Multicast-ideas
Classification: UNCLASSIFIED Caveats: NONE
On Wednesday 05 September 2012 13:32:29 you wrote:
Classification: UNCLASSIFIED Caveats: NONE
OK, based on the answers below, I have a few more questions.
- Is there any way for a user program to communicate with batman if certain
packets need special handling? I don't mind if I have to mark each packet individually, or if I have to do something else interesting, but if I can mark a packet as special, then I can hack code into batman to set the TTL field the way I need it.
How would you signal other layers you don't interact with directly? There is no special socket API that allows you do modify the batman-adv stuff. But you can for example do things like the gateway handling which checks different layer 3/4 things and modifies the behaviour slightly.
So it is (depending on the problem) doable, but there is no general solution available.
- Does batman rely on multicast in any way for its own operation? That is,
for something that keeps the network running well. If not, I can force all multicast packets to have a TTL of 1. This still requires some way of marking my own IP packets as multicast packets in a manner that batman can recognize, but I'm willing to do that, if it will help.
Multicast on ethernet... yes. Because it does broadcasts to send OGMs. But on IP level - no, batman-adv doesn't work on top of layer 3.
And marking the packets. This could be done using special multicast addresses.
Kind regards, Sven
On 9/8/12 11:37 AM, "Sven Eckelmann" sven@narfation.org wrote:
On Wednesday 05 September 2012 13:32:29 you wrote:
Classification: UNCLASSIFIED Caveats: NONE
OK, based on the answers below, I have a few more questions.
- Is there any way for a user program to communicate with batman if
certain packets need special handling? I don't mind if I have to mark each packet individually, or if I have to do something else interesting, but if I can mark a packet as special, then I can hack code into batman to set the TTL field the way I need it.
How would you signal other layers you don't interact with directly? There is no special socket API that allows you do modify the batman-adv stuff. But you can for example do things like the gateway handling which checks different layer 3/4 things and modifies the behaviour slightly.
So it is (depending on the problem) doable, but there is no general solution Available.
That was what I was afraid of. I'll have to do something else then.
- Does batman rely on multicast in any way for its own operation?
That is, for something that keeps the network running well. If not, I can force all multicast packets to have a TTL of 1. This still requires some way of marking my own IP packets as multicast packets in a manner that batman can recognize, but I'm willing to do that, if it will help.
Multicast on ethernet... yes. Because it does broadcasts to send OGMs. But on IP level - no, batman-adv doesn't work on top of layer 3.
And marking the packets. This could be done using special multicast addresses.
That might work for me! I have few enough nodes that I can assign numerous special multicast addresses to each node, for each purpose I have in mind. I'll have to work on it. Thank you for the suggestion!
Thanks, Cem Karan
b.a.t.m.a.n@lists.open-mesh.org