JensMuellerRestricted: Difference between revisions
No edit summary |
|||
(20 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Java on Access Points= |
|||
ExOR |
|||
Pros |
|||
* (relativ) platform independent |
|||
* easy software distribution |
|||
* easier/faster software development |
|||
* CPU performance equal to C/C++ (JIT compiled) |
|||
Cons |
|||
* entgegengesetzt zu Network Coding, denn ich weiß nicht, wer das Paket bekommen wird (aber aus der Menge meiner Nachbarn) |
|||
* memory consumption? |
|||
* verwende nur Broadcasts und der Knoten am nächsten zum Ziel leitet das Paket weiter (Problem, wenn das Netz voll ist; Broadcasts "zerstören" sich gegenseitig oder erweitertes RTS/CTS?) |
|||
* userspace/kernelspace penalties |
|||
* dichte Netze als Vorraussetzung |
|||
* performance may be an issue (possibly solved by new hardware) |
|||
* Verwendung mehrerer Kanäle um "Self-Interference" zu vermeiden (oder erweitertes RTS/CTS?) |
|||
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 |
|||
<pre>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</pre> |
|||
which is strange. |
|||
Then, we suppose while retrieving a SDP package, click seg faulted. |
|||
=Routing in Wireless Multi Hop Networks= |
|||
Routing in wireless Networks |
Routing in wireless Networks |
||
Things to consider |
Things to consider |
||
Line 19: | Line 49: | ||
** Broadcast nature |
** Broadcast nature |
||
Optimizing problems: |
|||
Ideas: |
|||
* Minimizing transmissions (Network Coding |
* Minimizing transmissions (via Network Coding and ExOR) |
||
* Minimizing collisions (difficult) |
* 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 |
Routingprotokolle aus Nachrichtensicht |
||
Layer 3 |
Layer 3 |
||
Line 36: | Line 69: | ||
Die Idee ist, dass alle Routingprotokolle Nachrichten versenden müssen. In diese Nachrichten-Elemente steckt man dann nur noch den Payload. |
Die Idee ist, dass alle Routingprotokolle Nachrichten versenden müssen. In diese Nachrichten-Elemente steckt man dann nur noch den Payload. |
||
=Cruise Control= |
|||
Kann man das Routing auch adressunabhängig implementieren (mittels Polymorphie) |
|||
I set up CruiseControl for continous integration. Go to [http://brn-suse093-3:8080/cruisecontrol/ CruiseControl on brn-suse093-3] to get an impression. |
|||
=My paper base= |
|||
=> Besseres Engineering |
|||
* The paper "Click vs. Linux: Two Efficient Open-Source IP Network Stacks for Software Routers" [http://www.tlc-networks.polito.it/~bianco/Papers_pdf/2005/hpsr05_click.pdf] 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" [http://www.diit.unict.it/euro/index_en.htm], which "focuses on building a flexible and high-performance packet switch around a Personal Computer (PC) architecture with a free hardware/software implementation". |
|||
config.xml CruiseControl |
|||
ns2 |
|||
click (i386, mips) |
|||
testsuite |
|||
IvyCruise |
|||
=Gateway= |
|||
This is about the implementation of self-configuring internet access for BRN using Click mainly. |
|||
Gateway - Wann neue Gatewaymetrik propagieren |
|||
(Need to explain design and implementation here (from the official gateway wiki site).) |
|||
Wann wechselt der GatewaySelector das Gateway (nicht nötig bei Google-Ansatz)? |
|||
Wie merke ich, dass das Gateway wegbricht (ICMP Nachricht)? |
|||
NAT Probleme |
|||
Planned versions: |
|||
==WRAP and LEDs== |
|||
* 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= |
|||
* [http://wiki.bsdforen.de/index.php/OpenBSD_-_WRAP gpioclt in OpenBSD on WRAP] |
* [http://wiki.bsdforen.de/index.php/OpenBSD_-_WRAP gpioclt in OpenBSD on WRAP] |
||
* Using the LEDs of wgt634u |
* Using the LEDs of wgt634u |
||
=Sentry5 - the netgear SoC (system on a chip)= |
|||
=== Nsclick === |
|||
* [http://linuxdevices.com/news/NS6049226781.html Sentry5] |
|||
* [http://www.linux-mips.org/wiki/Broadcom_SOCs Sentry5 at linux-mips.org] |
|||
* [http://www.netbsd.org/Ports/sbmips/ NETBSD/sbmips] |
|||
* [https://svn.openwrt.org/openwrt/branches/whiterussian/openwrt/package/robocfg/ Robocfg] |
|||
* [http://www.analogzone.com/netp0616c.htm Sentry5] |
|||
=Crpyto Acceleration in Linux= |
|||
* [http://www.logix.cz/michal/devel/cryptodev/index.xp?show_selected=1&msgid=48#feedback_form /dev/crypto] |
|||
* [http://ocf-linux.sourceforge.net/ OCF] |
|||
* [http://www.logix.cz/michal/devel/padlock/ VIA PadLock support for Linux] |
|||
=Embed Click into JiST= |
|||
Planned to be done via JNI. |
|||
= Nsclick = |
|||
+-----------+ |
+-----------+ |
||
Line 81: | Line 163: | ||
+-------------+ |
+-------------+ |
||
= Scratch = |
|||
* http://mail-index.netbsd.org/port-mips/2005/09/22/0000.html |
|||
* Ethtool auf dem Knoten [http://sourceforge.net/projects/gkernel/] |
|||
= |
= Links = |
||
* [[MyNetgear]] |
|||
= Problems with ifplugd running on a wgt (b44 eth driver) = |
|||
Tried to implement an element by polymorphy (a diamon), which is possible in C++. But it did not worked in Click. Maybe someone has a working example. I tried virtual and so on, but it did not compile. I use the delegation pattern instead, which is also ugly, since I need to pass the set ports. |
|||
* https://tango.0pointer.de/pipermail/ifplugd-discuss/2005-July/000068.html |
|||
The new kernel may help, since there are lot of changes in b44.c. Using some ioctl may help, too. |
|||
* An alternative to ifplugd [http://www.red-bean.com/~bos/] |
|||
==Crpyto Acceleration in Linux== |
|||
* [http://www.logix.cz/michal/devel/cryptodev/index.xp?show_selected=1&msgid=48#feedback_form /dev/crypto] |
|||
* [http://ocf-linux.sourceforge.net/ OCF] |
Latest revision as of 12:10, 3 May 2007
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
- gpioclt in OpenBSD on WRAP
- Using the LEDs of wgt634u
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]