JensMuellerRestricted

From
Jump to navigation Jump to search

Java on Access Points

Pros

  • (relativ) platform independent
  • easy software distribution
  • easier/faster software development
  • CPU performance equal to C/C++ (JIT compiled)

Cons

  • memory consumption?
  • userspace/kernelspace penalties
  • performance may be an issue (possibly solved by new hardware)


Possible Implementations

  • Run click in kernelspace and JVM in userspace

The difficult part is to describe how the interface to kernelspace click looks like and to make perform.

  • Run JVM in kernelspace as part of the Linux kernel

You have to port a JVM into the Linux kernel. You can drop Click.

  • Eliminate context switches => Singularity

Completely new concept needs to be implemented.


Java is acceptable on mobile phones, because it used for simple applications. Performance isn't an issue, because applications are GUI-driven.



Problems with smn-1

  • eth0 IP: 192.168.3.12
  • wlan0 MAC: 00:0E:8E:01:A6:8B

We added a PrintWifi before ToDevice(wlan0) and got

To: 150 | NODS mgt assoc_req 00:00:00:00:00:00 3f:00:02:00:00:00 0b:00:00:00:00:00 [] 1 Mbps +0/0

which is strange. Then, we suppose while retrieving a SDP package, click seg faulted.

Routing in Wireless Multi Hop Networks

Routing in wireless Networks Things to consider

  • Negative effects
    • self interference
  • Postive effects
    • Broadcast nature

Optimizing problems:

  • Minimizing transmissions (via Network Coding and ExOR)
  • Minimizing collisions (difficult: extended RTS/CTS? and using 802.11 non overlapping channels)

We optimize the traffic only. We could also optimize the route discovery and route maintainance, but we assume this is less important (seen the entire traffic).

Engineering

Routingprotokolle aus Nachrichtensicht Layer 3 - Flooding - Multicast - Unicast

Layer 2 - Broadcast (lokal) - Multicast - Unicast

Die Idee ist, dass alle Routingprotokolle Nachrichten versenden müssen. In diese Nachrichten-Elemente steckt man dann nur noch den Payload.

Cruise Control

I set up CruiseControl for continous integration. Go to CruiseControl on brn-suse093-3 to get an impression.

My paper base

  • The paper "Click vs. Linux: Two Efficient Open-Source IP Network Stacks for Software Routers" [1] compares the Linux IP stack with Click (runnung an IP stack). They assume a router running on cheap PC hardware performs better than a router with specialized hardware. Different measurements are done and in summary Click performs better. (But this is not surprising.)

The paper was published under a project called "University Experiment of an Open Router" [2], which "focuses on building a flexible and high-performance packet switch around a Personal Computer (PC) architecture with a free hardware/software implementation".


Gateway

This is about the implementation of self-configuring internet access for BRN using Click mainly. (Need to explain design and implementation here (from the official gateway wiki site).)

Planned versions:

  • GatewayTester:
    • ICMP ping based
    • User traffic based
    • DNS query based
    • Challenge response based (with other mesh nodes)
  • Handling of TCP:
    • A GatewaySelector, which respects open TCP connections
    • A centralized "master" gateway (mesh gateways tunnel packets to)
    • Maybe handing TCP connections over to other mesh node?

ToDO

  • Recognize and handle NATed gateways
  • Is the GatewaySelector able to determine, if a mesh node is a gateway?
  • User feedback via LEDs

Further and dependent issues:

  • Connecting mesh nodes via ip tunnels
  • Connection mesh nodes via ethernet
  • Difficult to recognize, if an attached node is a client or a mesh node?

Known problems

  • Tried to implement an element by inheritance (a diamond), which is possible in C++. But it did not worked in Click. Maybe somebody has a working example. I tried virtual and so on, but it did not compile. In Click's configure method, you can only get an element. I wanted to convert an element of type A to type B without knowing the precise type of the given element.
    E
   / \
  /   \
 /     \
A       B
 \     /
  \   /
   \ /
    ?

This is not possible (my experience), since I don't know what ? is. I would need to cast the given element of type E to ? and then cast ? to A. You can use the delegation pattern to bypass the diamond.

WRAP and LEDs

Sentry5 - the netgear SoC (system on a chip)

Crpyto Acceleration in Linux

Embed Click into JiST

Planned to be done via JNI.

Nsclick

+-----------+ | | | MAC | | | +-----------+

       |
       | wie FromHost ()
       +------------------> +-----------+
                            |           |
                            |   Click   |
               ToDevice     |           |
              +------------ +-----------+
              |                     ^
              |                     |
              |                     |
              V                     |
       +-------------+              |
       |             |              |
       |     PHY     +--------------+
       |             |   FromDevice
       +-------------+

Scratch

  • Ethtool auf dem Knoten [3]

Links

Problems with ifplugd running on a wgt (b44 eth driver)

The new kernel may help, since there are lot of changes in b44.c. Using some ioctl may help, too.

  • An alternative to ifplugd [4]