C-Mesh
Routing-Simulation in C
( ), 01. Juli 2013Alain Horner @elHornair
Intro
Aufgabenstellung
Offizielle
Kennen wir alle
Aufgabenstellung
Lösungskonzept
Funktionsweise der Knoten
Boss-Worker Modell
Boss: Auf Paket warten
Boss: Paket an Worker weitergeben
Worker: Paket verarb...
Funktionsweise der Knoten
Verteilung der Pakete
Funktionsweise der Knoten
Boss-Worker: Implementierung mit Pthreads
while (1) {
// wait for next package
newsockfd = wait_...
Verbindungen zu Nachbaren
Nachbar: Knoten, dessen IP-Adresse und Port bekannt ist
Nachbaren-Liste
Bidirektionale Verbindun...
Verbindungen zu Nachbaren
Handshake
Routing
Z.B. “In welcher Richtung liegt das Ziel?”
Tabelle mit zwei Einträgen
Pro Eintrag: Nachbar (IP-Adresse und Port)
Routing
Eigenheit von Aufgabenstellung ausgenutzt:
Routingtabelle möglichst früh anpassen
Einträge werden nie überschriebe...
Paket-Forwarding
Knoten: Paket weiterleiten, falls nicht für mich
Routingtabelle verwenden
Fallback: Flooding
Paket-Forwarding
Flooding
Paket-Forwarding
Problem mit ringförmig verbundenen Knoten
Erreichen des Ziels
Nur bei Quell- und Zielknoten möglich
Ausgabe der Nachricht
Umwandlung des Nachrichtenpakets in OK-Pak...
Demo
Demo
Python-Testprogramm
1 Startknoten
1 Zielknoten
10 Verbindungsknoten
3 Pakete
Outro
Lessons learned
Geteilte Ressourcen immer locken
Debugging: Gnu Debugger (GDB)
Weiterführende Links
Sourcecode
Dokumentation
Pthreads
Fragen?
Danke!
Nächste SlideShare
Wird geladen in …5
×

Praesi C-Mesh

520 Aufrufe

Veröffentlicht am

German presentation on a school project on parallel C programs. For details see https://github.com/elHornair/mesh

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
520
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Praesi C-Mesh

  1. 1. C-Mesh Routing-Simulation in C ( ), 01. Juli 2013Alain Horner @elHornair
  2. 2. Intro
  3. 3. Aufgabenstellung Offizielle Kennen wir alle Aufgabenstellung
  4. 4. Lösungskonzept
  5. 5. Funktionsweise der Knoten Boss-Worker Modell Boss: Auf Paket warten Boss: Paket an Worker weitergeben Worker: Paket verarbeiten
  6. 6. Funktionsweise der Knoten Verteilung der Pakete
  7. 7. Funktionsweise der Knoten Boss-Worker: Implementierung mit Pthreads while (1) { // wait for next package newsockfd = wait_for_connection(sockfd); // let worker handle package pthread_create(&workers[thread_counter], NULL, worker_init, (void *)newsockfd); // alternate workers thread_counter += 1; if (thread_counter >= NUM_WORKERS) { thread_counter = 0; } } Details: Siehe Github
  8. 8. Verbindungen zu Nachbaren Nachbar: Knoten, dessen IP-Adresse und Port bekannt ist Nachbaren-Liste Bidirektionale Verbindungen -> Handshake
  9. 9. Verbindungen zu Nachbaren Handshake
  10. 10. Routing Z.B. “In welcher Richtung liegt das Ziel?” Tabelle mit zwei Einträgen Pro Eintrag: Nachbar (IP-Adresse und Port)
  11. 11. Routing Eigenheit von Aufgabenstellung ausgenutzt: Routingtabelle möglichst früh anpassen Einträge werden nie überschrieben “Pakete werden immer von der Quelle zum Ziel oder vom Ziel zur Quelle gesendet”
  12. 12. Paket-Forwarding Knoten: Paket weiterleiten, falls nicht für mich Routingtabelle verwenden Fallback: Flooding
  13. 13. Paket-Forwarding Flooding
  14. 14. Paket-Forwarding Problem mit ringförmig verbundenen Knoten
  15. 15. Erreichen des Ziels Nur bei Quell- und Zielknoten möglich Ausgabe der Nachricht Umwandlung des Nachrichtenpakets in OK-Paket Routing sehr einfach Schwarze Liste wird ignoriert OK-Paket: Zurück bis zu ursprünglichem Sender
  16. 16. Demo
  17. 17. Demo Python-Testprogramm 1 Startknoten 1 Zielknoten 10 Verbindungsknoten 3 Pakete
  18. 18. Outro
  19. 19. Lessons learned Geteilte Ressourcen immer locken Debugging: Gnu Debugger (GDB)
  20. 20. Weiterführende Links Sourcecode Dokumentation Pthreads
  21. 21. Fragen?
  22. 22. Danke!

×