public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Daniel Poelzleithner <poelzi@poelzi.org>
To: b.a.t.m.a.n@open-mesh.net
Subject: Re: [B.A.T.M.A.N.] Small feature request
Date: Sun, 17 Jun 2007 16:12:37 +0200	[thread overview]
Message-ID: <46754155.5050506@poelzi.org> (raw)
In-Reply-To: <200706171400.01329.lindner_marek@yahoo.de>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Marek Lindner wrote:

> interesting idea but I don't get your big picture. Could you further explain 
> what you have in mind while considering the following:
> 
> Even with your algorithm, detecting route changes is quite difficult for 
> batman, simply because batman does not know the concept of routes through the 
> network. Batman just counts packets which arrived via one or the other 
> neighbor and does not care about how the packets arrived at its neighbors. 
> Which "route change" should be considered ? A route change after one / two / 
> three / ... hops ? A one hop routing change could be detected without your 
> algorithm. That is why I think you want to detect more.

every node xors the detect stamp before relaying. this way, if the route
is the same, the stamp is the same all the time. if anywhere on the
route, you can't detect where, changes, the stamp also changes. maybe
there will be routes that change very often, so batman will get a
constant flipping stamp. i don't want to change batman to know the
topology of the network, i love this simple yet genius approach much
better, because this is what network actually is, talking to your direct
neighbors :)
for the case of vegas tuning, this is another story, see below...

> If we make a 2 hop example: We have a batman running and (for the sake of 
> simplicity) one neighbor A. This neighbor has 3 neighbors of its own which 
> equally supply originator packets of our target, lets say 3 and we receive 9 
> packets via our neighbor A. What is our new route ?

i don't understand.
lets assume a topology like that:

   [A]
  /   \
[B]  [C]
   \ /
   [D]
    |
   [E]

lets say all links a equally good (very unlikly but anyway), so D is
receiving originator packets from A through B and C, but always relaying
only the first received. yes, this could break my idea. does batman
switch the route every time it receives a packet or only when it detects
that B sends less then C ?
to fix this problem, we could:
 - save the stamp received from the last originator packet from the
neighbor which is the neighbor we actually choose to route through.
 - every packet received from a different neighbor then the one we
actually use to route to, will get the stamp we saved XOR the own stamp

this would make the stamp not switch when the route is not switching, as
soon as batman decides to switch the route, the stamp will change on all
nodes behind D.

> On the other hand we begin to leave the new approach of a one hop horizon 
> towards OLSR based routing which makes routing assumptions based on outdated 
> data.

to make it clear, this stamp is not for routing decisions, it only
detects if a route has changed, nothing more, it won't change how batman
routes, it is just used to notify transport of changes.

> TCP Vegas algorithm to detect congestion is based on the round trip times of 
> the packets. It simply observes if the RTTs get bigger or smaller and derives 
> its window size from it. No information about a routing change is needed.

thats not right. it uses the so called BaseRTT as one parameter, which
is the smallest RTT received ever. The problem ist, that if the route
changes, the BaseRTT is most likly not valid anymore because the route
changed and the new one might have a higher or lower BaseRTT which
decreases performance.

i don't think vegas will perform very good in meshes, because we have
jitter like hell, and i think thats the reason tcp performes very bad in
generall, because all tcp implementations hate large jitter and a lot of
packet reordering.

> If you really plan to deploy TCP Vegas in your network you should make sure 
> that *all* your clients do the same. Otherwise the users of TCP Vegas will 
> experience a massive throughput loss because the commonly used TCP stack is 
> much less fair. More information on that matter can be found here: 
> http://www.isoc.org/inet2000/cdproceedings/2d/2d_2.htm

no, i don't plan to, because tcp is always senderside. the only thing
there could be done is installing proxys on the edges, but thats not
very good either. I'm currently trying another, very experimental
approach by writing a TCP-proxy (meshferry [1]). Currently it listens on
a tcp port to which you can connect, opens a UDP connection to another
proxy and this one translates this mesh optimized udp stream back to
TCP. If i can optimize the UDP protocol to perform better then TCP, the
next step would be to implement this as a tap device, so this could be
done totally transparent on the border of the mesh.

I'm thinking about something like that:

b.a.t.m.a.n notifies meshferry one specific events:
(b is batman, m is meshferry)
b- new host detected
 m- tests if the new host is speaking meshferry protocol
 m- if yes, notifies batman to route though the tap device
b- route has changed
 m- can optimize parameters again
m- detects to less memory for new connections, meshferry on the
otherside died,...
 b- notifies batman to not use tap device
 b- or sets firewall that new connections should be routed directly

...
this however would be long term and should be thought through very
carefully.

Because i think that detecting that a route has changed could help a lot
making long living or even short living connections to perform better. I
also think that BaseRTT is a useful parameter in general, just that it
shouldn't relay on it to much.



[1] https://dev.leipzig.freifunk.net/svn/meshferry/trunk

its currently broken due massive rewrite from the original source its
based on.


kindly regards
 daniel
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: GnuPT 2.7.2
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGdUFUy/mkIQp7AD0RAhdfAJ9iPbDX3pBvHVgycCrHr96Lufuf1QCdEyln
OEIzc2mMDfc7BipG2KllNeo=
=9i6L
-----END PGP SIGNATURE-----

      reply	other threads:[~2007-06-17 14:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-15 13:26 [B.A.T.M.A.N.] Small feature request poelzi
2007-06-17 12:00 ` Marek Lindner
2007-06-17 14:12   ` Daniel Poelzleithner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46754155.5050506@poelzi.org \
    --to=poelzi@poelzi.org \
    --cc=b.a.t.m.a.n@open-mesh.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox