Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Mesh Network
Seminararbeit von Marc Egli
Montag, 1. Juli 2013
Probleme
• Rapid Prototyping?
• Test Driven Development?
Montag, 1. Juli 2013
Rapid Prototyping
• Ist einfach mit Python
• Twisted als Networking Engine
• Lauffähiger Prototyp am 17. März
Montag, 1. J...
Test Driven Development
• Gegen eine bestehendeVersion Testen
• util.py für Abläufe
Montag, 1. Juli 2013
Open Source Anmerkung
• nur mit Lizenz
Montag, 1. Juli 2013
C
Montag, 1. Juli 2013
Design Ziele
• Das Rad nicht neu erfinden
• Möglichst viele sinnvolle Threads
• Kein Eventloop
• Socket Buffer ausnutzen
Mo...
Linked Lists
• BSD Libc hat Linked List Makros
• Lassen sich für beliebige Structs verwenden
Montag, 1. Juli 2013
/* Singly-linked List head. */
SLIST_HEAD(slisthead, entry) head =
SLIST_HEAD_INITIALIZER(head);
struct slisthead *headp;
...
/* Deletion from the head. */
SLIST_REMOVE_HEAD(&head, entries);
free(n3);
/* Forward traversal. */
SLIST_FOREACH(np, &hea...
Anwendungen
• Linked List mit allen Peers
• Routes List
Montag, 1. Juli 2013
Threads
• ProVerbindung ein Thread
• ein Thread um den eingangs Port zu
überwachen
• ein Thread um Packet History zu leere...
65 5
54 4
54 4
Anzahl Threads
Montag, 1. Juli 2013
Peer Tasks
• Jeder Task macht fread auf seinem Socket
• Falls er genügend Daten für ein Paket erhält
lockt er sich die ben...
Python vs C
• Versenden von 1000 Paketen
• 2 Nodes
Montag, 1. Juli 2013
Python C
~0.4s ~0.8s
Montag, 1. Juli 2013
Prochain SlideShare
Chargement dans…5
×

Meshnode

School project

  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Meshnode

  1. 1. Mesh Network Seminararbeit von Marc Egli Montag, 1. Juli 2013
  2. 2. Probleme • Rapid Prototyping? • Test Driven Development? Montag, 1. Juli 2013
  3. 3. Rapid Prototyping • Ist einfach mit Python • Twisted als Networking Engine • Lauffähiger Prototyp am 17. März Montag, 1. Juli 2013
  4. 4. Test Driven Development • Gegen eine bestehendeVersion Testen • util.py für Abläufe Montag, 1. Juli 2013
  5. 5. Open Source Anmerkung • nur mit Lizenz Montag, 1. Juli 2013
  6. 6. C Montag, 1. Juli 2013
  7. 7. Design Ziele • Das Rad nicht neu erfinden • Möglichst viele sinnvolle Threads • Kein Eventloop • Socket Buffer ausnutzen Montag, 1. Juli 2013
  8. 8. Linked Lists • BSD Libc hat Linked List Makros • Lassen sich für beliebige Structs verwenden Montag, 1. Juli 2013
  9. 9. /* Singly-linked List head. */ SLIST_HEAD(slisthead, entry) head = SLIST_HEAD_INITIALIZER(head); struct slisthead *headp; /* Singly-linked List. */ struct entry { ... SLIST_ENTRY(entry) entries; ... } *n1, *n2, *n3, *np; SLIST_INIT(&head); /* Initialize the list. */ n1 = malloc(sizeof(struct entry)); /* Insert at the head. */ SLIST_INSERT_HEAD(&head, n1, entries); n2 = malloc(sizeof(struct entry)); /* Insert after. */ SLIST_INSERT_AFTER(n1, n2, entries); SLIST_REMOVE(&head, n2, entry, entries);/* Deletion. */ free(n2); n3 = SLIST_FIRST(&head); Montag, 1. Juli 2013
  10. 10. /* Deletion from the head. */ SLIST_REMOVE_HEAD(&head, entries); free(n3); /* Forward traversal. */ SLIST_FOREACH(np, &head, entries) np-> ... /* Safe forward traversal. */ SLIST_FOREACH_SAFE(np, &head, entries, np_temp) { np->do_stuff(); ... SLIST_REMOVE(&head, np, entry, entries); free(np); } /* List Deletion. */ while (!SLIST_EMPTY(&head)) { n1 = SLIST_FIRST(&head); SLIST_REMOVE_HEAD(&head, entries); free(n1); } Montag, 1. Juli 2013
  11. 11. Anwendungen • Linked List mit allen Peers • Routes List Montag, 1. Juli 2013
  12. 12. Threads • ProVerbindung ein Thread • ein Thread um den eingangs Port zu überwachen • ein Thread um Packet History zu leeren Montag, 1. Juli 2013
  13. 13. 65 5 54 4 54 4 Anzahl Threads Montag, 1. Juli 2013
  14. 14. Peer Tasks • Jeder Task macht fread auf seinem Socket • Falls er genügend Daten für ein Paket erhält lockt er sich die benötigten resourcen und verwendet es weiter • Kein anderer Task wird benötigt um ein Paket weiterzusenden Montag, 1. Juli 2013
  15. 15. Python vs C • Versenden von 1000 Paketen • 2 Nodes Montag, 1. Juli 2013
  16. 16. Python C ~0.4s ~0.8s Montag, 1. Juli 2013

×