1. 14 3月, 2013 2 次提交
    • M
      batman-adv: network coding - detect coding nodes and remove these after timeout · d56b1705
      Martin Hundebøll 提交于
      To use network coding efficiently, a relay must know when neighbor nodes
      are likely to have enough information to be able to decode a network
      coded packet. This is detected by using OGMs from batman-adv to discover
      when one neighbor is in range of another neighbor. The relay check the
      TLL to detect when an OGM is forwarded from one neighbor by another
      neighbor, and thereby knows that the two neighbors are in range and thus
      overhear packets sent by each other.
      
      This information is saved in the orig_node struct to be used when
      searching for coding opportunities. Two lists are added to the
      orig_node struct: One for neighbors that can hear the orig_node
      (outgoing nc_nodes) and one for neighbors that the orig_node can hear
      (incoming nc_nodes).
      
      Information about nc_nodes is kept for 10 seconds and is available
      through debugfs in batman_adv/nc_nodes to use when debugging network
      coding.
      Signed-off-by: NMartin Hundebøll <martin@hundeboll.net>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      d56b1705
    • M
      batman-adv: network coding - add the initial infrastructure code · d353d8d4
      Martin Hundebøll 提交于
      Network coding exploits the 802.11 shared medium to allow multiple
      packets to be sent in a single transmission. In brief, a relay can XOR
      two packets, and send the coded packet to two destinations. The
      receivers can decode one of the original packets by XOR'ing the coded
      packet with the other original packet. This will lead to increased
      throughput in topologies where two packets cross one relay.
      
      In a simple topology with three nodes, it takes four transmissions
      without network coding to get one packet from Node A to Node B and one
      from Node B to Node A:
      
       1.  Node A  ---- p1 --->  Node R                Node B
       2.  Node A                Node R  <--- p2 ----  Node B
       3.  Node A  <--- p2 ----  Node R                Node B
       4.  Node A                Node R  ---- p1 --->  Node B
      
      With network coding, the relay only needs one transmission, which saves
      us one slot of valuable airtime:
      
       1.  Node A  ---- p1 --->  Node R                Node B
       2.  Node A                Node R  <--- p2 ----  Node B
       3.  Node A  <- p1 x p2 -  Node R  - p1 x p2 ->  Node B
      
      The same principle holds for a topology including five nodes. Here the
      packets from Node A and Node B are overheard by Node C and Node D,
      respectively. This allows Node R to send a network coded packet to save
      one transmission:
      
         Node A                  Node B
      
          |     \              /    |
          |      p1          p2     |
          |       \          /      |
          p1       > Node R <       p2
          |                         |
          |         /      \        |
          |    p1 x p2    p1 x p2   |
          v       /          \      v
                 /            \
         Node C <              > Node D
      
      More information is available on the open-mesh.org wiki[1].
      
      This patch adds the initial code to support network coding in
      batman-adv. It sets up a worker thread to do house keeping and adds a
      sysfs file to enable/disable network coding. The feature is disabled by
      default, as it requires a wifi-driver with working promiscuous mode, and
      also because it adds a small delay at each hop.
      
      [1] http://www.open-mesh.org/projects/batman-adv/wiki/CatwomanSigned-off-by: NMartin Hundebøll <martin@hundeboll.net>
      Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
      Signed-off-by: NAntonio Quartulli <ordex@autistici.org>
      d353d8d4
  2. 19 1月, 2013 10 次提交
  3. 12 1月, 2013 3 次提交
  4. 21 11月, 2012 1 次提交
  5. 15 11月, 2012 3 次提交
  6. 08 11月, 2012 5 次提交
  7. 29 10月, 2012 1 次提交
  8. 19 10月, 2012 1 次提交
  9. 23 8月, 2012 4 次提交
  10. 11 7月, 2012 1 次提交
  11. 02 7月, 2012 4 次提交
  12. 28 6月, 2012 2 次提交
  13. 21 6月, 2012 1 次提交
  14. 19 6月, 2012 2 次提交