Flow Control: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
==Flow Control Modus== |
|||
Um Überlastungen eines Servents zu vermeiden wurde bei der neueren Version von Gnutella (v0.6) ein Algorithmus zur Flow Control implementiert. <br> |
Um Überlastungen eines Servents zu vermeiden wurde bei der neueren Version von Gnutella (v0.6) ein Algorithmus zur Flow Control implementiert. <br> |
||
Der einfachste Ansatz wäre, die Verbindung zu schliessen, wenn zu viel Bandbreite beansprucht wird; besser ist es jedoch, weiterzuleitende Nachrichten zu verwerfen um der Traffic zu verringern. Somit würden aber auch Query Hits verworfen, wodurch vorangegangene Querys umsonst Traffic im Gnet verursacht hätten. <br> |
Der einfachste Ansatz wäre, die Verbindung zu schliessen, wenn zu viel Bandbreite beansprucht wird; besser ist es jedoch, weiterzuleitende Nachrichten zu verwerfen um der Traffic zu verringern. Somit würden aber auch Query Hits verworfen, wodurch vorangegangene Querys umsonst Traffic im Gnet verursacht hätten. <br> |
||
Line 9: | Line 10: | ||
Im Flow Control Modus werden alle ankommenden Queries verworfen. <br> |
Im Flow Control Modus werden alle ankommenden Queries verworfen. <br> |
||
Weiterzuleitende Nachrichten erhalten eine umso kleinere Priorität, desto mehr Hops(Servents) diese schon durchlaufen haben: |
Weiterzuleitende Nachrichten erhalten eine umso kleinere Priorität, desto mehr Hops(Servents) diese schon durchlaufen haben: |
||
Allerdings wird bei Query Hits genau entgegengesetzt der Strategie für weiterzuleitende Nachrichten vorgegangen, da sonst der |
Allerdings wird bei Query Hits genau entgegengesetzt der Strategie für weiterzuleitende Nachrichten vorgegangen, da sonst der vorangegangene Aufwand umsonst gewesen ist. <br> |
||
<br> |
<br> |
||
Reihenfolge der Nachrichten nach Priorität: |
Reihenfolge der Nachrichten nach Priorität: |
||
Push, Query Hit, Pong, Query, Ping |
Push, Query Hit, Pong, Query, Ping |
||
<br> |
<br> |
||
Individuelle Nachrichten werden im FC Modus bevorzugt. |
Individuelle Nachrichten werden im FC Modus bevorzugt. <br> |
||
<br> |
|||
Solange die Outputqueue nicht zu 100% gefüllt ist, werden alle Nachrichten akzeptiert.<br> |
|||
Erst wenn die Queue voll ist:<br> |
|||
*Nachricht mit geringerer Priorität löschen (letzte in der Queue) |
|||
*ansonsten: Nachrichtentyp Query, Pong oder Ping verwerfen |
|||
*letzte Möglichkeit: Bye senden (Queue Überlauf)<br> |
|||
<br> |
|||
[[Gnutella|zurück zum Index]] |
|||
<br> |
|||
<br> |
|||
==Sachrifc== |
|||
Sachrifc ist ein andere Ansatz um Überlastungen zu vermeiden; jedoch wurde dieser nicht in Gnutella implementiert. |
|||
Die Ziele dieses Ansatzes sind:<br> |
|||
*Verzögerung von Nachrichten zu minimieren |
|||
*Priorität der Nachrichten: Push, Query Hit, Query, Pong, Ping |
|||
*Verhindern, dass ein Nachrichtentyp den Verkehr dominiert |
|||
*Favorisierung von weniger populären Query Hits <br> |
Revision as of 16:09, 4 February 2006
Flow Control Modus
Um Überlastungen eines Servents zu vermeiden wurde bei der neueren Version von Gnutella (v0.6) ein Algorithmus zur Flow Control implementiert.
Der einfachste Ansatz wäre, die Verbindung zu schliessen, wenn zu viel Bandbreite beansprucht wird; besser ist es jedoch, weiterzuleitende Nachrichten zu verwerfen um der Traffic zu verringern. Somit würden aber auch Query Hits verworfen, wodurch vorangegangene Querys umsonst Traffic im Gnet verursacht hätten.
Daher wurde eine Outputqueue in Gnutella implementiert:
- solange Queue < 25% ihrer max. Größe in Bytes, nichts weiter tun
- ab 50%, Flow-Control-Modus benutzen
- ->solange bis wieder unter 25%
- Größe der Queue sollte mindestens 150% der max. zulässigen Nachrichtengröße sein
Im Flow Control Modus werden alle ankommenden Queries verworfen.
Weiterzuleitende Nachrichten erhalten eine umso kleinere Priorität, desto mehr Hops(Servents) diese schon durchlaufen haben:
Allerdings wird bei Query Hits genau entgegengesetzt der Strategie für weiterzuleitende Nachrichten vorgegangen, da sonst der vorangegangene Aufwand umsonst gewesen ist.
Reihenfolge der Nachrichten nach Priorität:
Push, Query Hit, Pong, Query, Ping
Individuelle Nachrichten werden im FC Modus bevorzugt.
Solange die Outputqueue nicht zu 100% gefüllt ist, werden alle Nachrichten akzeptiert.
Erst wenn die Queue voll ist:
- Nachricht mit geringerer Priorität löschen (letzte in der Queue)
- ansonsten: Nachrichtentyp Query, Pong oder Ping verwerfen
- letzte Möglichkeit: Bye senden (Queue Überlauf)
Sachrifc
Sachrifc ist ein andere Ansatz um Überlastungen zu vermeiden; jedoch wurde dieser nicht in Gnutella implementiert.
Die Ziele dieses Ansatzes sind:
- Verzögerung von Nachrichten zu minimieren
- Priorität der Nachrichten: Push, Query Hit, Query, Pong, Ping
- Verhindern, dass ein Nachrichtentyp den Verkehr dominiert
- Favorisierung von weniger populären Query Hits