1. 12 1月, 2014 1 次提交
  2. 09 1月, 2014 3 次提交
  3. 23 10月, 2013 1 次提交
    • M
      batman-adv: limit local translation table max size · a19d3d85
      Marek Lindner 提交于
      The local translation table size is limited by what can be
      transferred from one node to another via a full table request.
      
      The number of entries fitting into a full table request depend
      on whether the fragmentation is enabled or not. Therefore this
      patch introduces a max table size check and refuses to add
      more local clients when that size is reached. Moreover, if the
      max full table packet size changes (MTU change or fragmentation
      is disabled) the local table is downsized instantaneously.
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Acked-by: NAntonio Quartulli <ordex@autistici.org>
      a19d3d85
  4. 20 10月, 2013 1 次提交
    • A
      batman-adv: make the TT global purge routine VLAN specific · 95fb130d
      Antonio Quartulli 提交于
      Instead of unconditionally removing all the TT entries
      served by a given originator, make tt_global_orig_del()
      remove only entries matching a given VLAN identifier
      provided as argument.
      
      If such argument is negative all the global entries
      served by the originator are removed.
      
      This change is used into the BLA code to purge entries
      served by a newly discovered Backbone node, but limiting
      the operation only to those connected to the VLAN where the
      backbone has been discovered.
      
      Cc: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
      Signed-off-by: NAntonio Quartulli <antonio@open-mesh.com>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      95fb130d
  5. 19 10月, 2013 2 次提交
  6. 12 10月, 2013 2 次提交
  7. 10 10月, 2013 2 次提交
  8. 29 5月, 2013 1 次提交
  9. 19 1月, 2013 1 次提交
  10. 15 11月, 2012 1 次提交
    • A
      batman-adv: substitute tt_poss_change with a per-tt_entry flag · 7c1fd91d
      Antonio Quartulli 提交于
      tt_poss_change is a node-wide flag which tells whether the node is in a roaming
      state (a client recently moved to/away from it) in order to let it apply special
      re-routing rules. However this flag does not give a clear idea of the current
      state because it is not possible to understand *which client* is actually
      involved in the roaming. For this reason a better approach has been chosen:
      instead of using a node-wide variable, the roaming state is now given by a
      per-tt_entry ROAM flag which, in case of packet coming through the node, tells
      the node whether the real destination is in roaming state or not.
      
      With this flag change, batadv_check_unicast_ttvn() has also been rearranged in
      order to better fit the new re-routing logic and to be much more readable.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      7c1fd91d
  11. 29 10月, 2012 1 次提交
    • A
      batman-adv: pass the WIFI flag from the local to global entry · 7f91d06c
      Antonio Quartulli 提交于
      in case of client roaming a new global entry is added while a corresponding
      local one is still present. In this case the node can safely pass the WIFI flag
      from the local to the global entry.
      
      This change is required to let the AP-isolation correctly working in case of
      roaming: if a generic WIFI client C roams from node A to B, A adds a global
      entry for C without adding any WIFI flag. The latter will be set only later,
      once A has received C's advertisement from B. In this time period the
      AP-Isolation (if enabled) would not correctly work since C is not marked as
      WIFI, so allowing it to communicate with other WIFI clients.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      7f91d06c
  12. 23 8月, 2012 1 次提交
    • A
      batman-adv: detect not yet announced clients · 30cfd02b
      Antonio Quartulli 提交于
      With the current TT mechanism a new client joining the network is not
      immediately able to communicate with other hosts because its MAC address has not
      been announced yet. This situation holds until the first OGM containing its
      joining event will be spread over the mesh network.
      
      This behaviour can be acceptable in networks where the originator interval is a
      small value (e.g. 1sec) but if that value is set to an higher time (e.g. 5secs)
      the client could suffer from several malfunctions like DHCP client timeouts,
      etc.
      
      This patch adds an early detection mechanism that makes nodes in the network
      able to recognise "not yet announced clients" by means of the broadcast packets
      they emitted on connection (e.g. ARP or DHCP request). The added client will
      then be confirmed upon receiving the OGM claiming it or purged if such OGM
      is not received within a fixed amount of time.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      30cfd02b
  13. 02 7月, 2012 2 次提交
  14. 28 6月, 2012 1 次提交
  15. 21 6月, 2012 2 次提交
  16. 19 6月, 2012 1 次提交
  17. 14 5月, 2012 1 次提交
    • A
      batman-adv: improve unicast packet (re)routing · 3275e7cc
      Antonio Quartulli 提交于
      In case of a client X roaming from a generic node A to another node B, it is
      possible that a third node C gets A's OGM but not B's. At this point in time, if
      C wants to send data to X it will send a unicast packet destined to A. The
      packet header will contain A's last ttvn (C got A's OGM and so it knows it).
      
      The packet will travel towards A without being intercepted because the ttvn
      contained in its header is the newest for A.
      
      Once A will receive the packet, A's state will not report to be in a "roaming
      phase" (because, after a roaming, once A sends out its OGM, all the changes are
      committed and the node is considered not to be in the roaming state anymore)
      and it will match the ttvn carried by the packet. Therefore there is no reason
      for A to try to alter the packet's route, thus dropping the packet because the
      destination client is not there anymore.
      
      However, C is well aware that it's routing information towards the client X is
      outdated as it received an OGM from A saying that the client roamed away.
      Thanks to this detail, this patch introduces a small change in behaviour: as
      long as C is in the state of not knowing the new location of client X it will
      forward the traffic to its last known location using ttvn-1 of the destination.
      By using an older ttvn node A will be forced to re-route the packet.
      Intermediate nodes are also allowed to update the packet's destination as long
      as they have the information about the client's new location.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      3275e7cc
  18. 11 5月, 2012 1 次提交
  19. 11 4月, 2012 1 次提交
  20. 17 2月, 2012 1 次提交
  21. 22 8月, 2011 5 次提交
  22. 08 7月, 2011 1 次提交
  23. 05 7月, 2011 1 次提交
    • A
      batman-adv: unify flags for tt_change/tt_local_entry/tt_global_entry · 5fbc1598
      Antonio Quartulli 提交于
      The tt_local_entry structure now has a 'flags' field. This helps to
      unify the flags format to all the client related structures (tt_global_entry
      and tt_change). The 'never_purge' field is now encoded in the 'flags' one.
      To optimise the usage of this field, its length has been increased to 16bit
      in order to use the eight leading bits (from 0 to 7) to store flags that
      have to be sent on the wire, while the eight ending ones are used for local
      computation only.
      
      Moreover 'enum tt_change_flags' is now called 'enum tt_client_flags' and the
      defined values apply to the tt_local_entry, tt_global_entry and the tt_change
      'flags' field.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      5fbc1598
  24. 20 6月, 2011 2 次提交
    • A
      batman-adv: improved roaming mechanism · cc47f66e
      Antonio Quartulli 提交于
      With the current client announcement implementation, in case of roaming,
      an update is triggered on the new AP serving the client. At that point
      the new information is spread around by means of the OGM broadcasting
      mechanism. Until this operations is not executed, no node is able to
      correctly route traffic towards the client. This obviously causes packet
      drops and introduces a delay in the time needed by the client to recover
      its connections.
      
      A new packet type called ROAMING_ADVERTISEMENT is added to account this
      issue.
      
      This message is sent in case of roaming from the new AP serving the
      client to the old one and will contain the client MAC address. In this
      way an out-of-OGM update is immediately committed, so that the old node
      can update its global translation table. Traffic reaching this node will
      then be redirected to the correct destination utilising the fresher
      information. Thus reducing the packet drops and the connection recovery
      delay.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      cc47f66e
    • A
      batman-adv: improved client announcement mechanism · a73105b8
      Antonio Quartulli 提交于
      The client announcement mechanism informs every mesh node in the network
      of any connected non-mesh client, in order to find the path towards that
      client from any given point in the mesh.
      
      The old implementation was based on the simple idea of appending a data
      buffer to each OGM containing all the client MAC addresses the node is
      serving. All other nodes can populate their global translation tables
      (table which links client MAC addresses to node addresses) using this
      MAC address buffer and linking it to the node's address contained in the
      OGM. A node that wants to contact a client has to lookup the node the
      client is connected to and its address in the global translation table.
      
      It is easy to understand that this implementation suffers from several
      issues:
       - big overhead (each and every OGM contains the entire list of
         connected clients)
       - high latencies for client route updates due to long OGM trip time and
         OGM losses
      
      The new implementation addresses these issues by appending client
      changes (new client joined or a client left) to the OGM instead of
      filling it with all the client addresses each time. In this way nodes
      can modify their global tables by means of "updates", thus reducing the
      overhead within the OGMs.
      
      To keep the entire network in sync each node maintains a translation
      table version number (ttvn) and a translation table checksum. These
      values are spread with the OGM to allow all the network participants to
      determine whether or not they need to update their translation table
      information.
      
      When a translation table lookup is performed in order to send a packet
      to a client attached to another node, the destination's ttvn is added to
      the payload packet. Forwarding nodes can compare the packet's ttvn with
      their destination's ttvn (this node could have a fresher information
      than the source) and re-route the packet if necessary. This greatly
      reduces the packet loss of clients roaming from one AP to the next.
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      a73105b8
  25. 30 5月, 2011 1 次提交
  26. 08 5月, 2011 1 次提交
  27. 12 2月, 2011 1 次提交
  28. 31 1月, 2011 1 次提交