Durchsatzratenbegrenzung
Eine Durchsatzratenbegrenzung, meist kurz als Durchsatzbegrenzung bezeichnet, ist ein Stabilitätsmuster. Es dient in Computernetzwerken dazu den Netzwerkverkehr an bestimmten Schnittstellen zu begrenzen. Dies dient insbesondere dazu ein Netzwerk vor DoS-Angriffen zu schützen.[1]
Hardwareimplementierungen
Hardwareimplementierungen können den Durchsatz in den OSI-Schichten 4 und 5 begrenzen.
Transportschicht
Mittels des ECN-Protokolls kann die Durchsatzrate durch Netzwerk-Scheduler und Router auf der Transportschicht gesteuert werden.
Lösungen die auf der Transportschicht ansetzten sind zwar sehr performant, jedoch nur eingeschränkt nutzbar. Wenn sich z. B. hinter einer einzelnen IP-Adresse eine große Menge an, mittels NAT maskierten, Kunden eines Internetprovider befindet, so kann dies zu einer ungewollten Blockierung der Adresse führen.
Sitzungsschicht
Deep Packet Inspection (DPI) kann dazu eingesetzt werden, um den Durchsatz mittels Hardware auf der Sitzungsschicht zu begrenzen. Durch die DPI wird jedoch die Verschlüsselung mittels TLS und SSL zwischen der Hardwareimplementierung und dem Webserver ausgehebelt.
Webserver
Webserver verwenden typischerweise eine In-Memory-Key-Value-Datenbank, wie Redis oder Aerospike, um die Sitzungen zu speichern. Ein, im Server bzw. der Webanwendung implementierter, Durchsatzbegrenzungs-Algorithmus wird verwendet, um zu prüfen, ob eine Sitzung begrenzt werden muss. Hier erfolgt die Begrenzung also auf der Sitzungsschicht.
Werden zu viele Anfragen innerhalb einer Zeiteinheit gestellt, so antwortet ein HTTP-Webserver mittels des HTTP-Statuscodes 429.
Siehe auch
- Token-Bucket-Algorithmus[2]
- Leaky-Bucket-Algorithmus
- Fixed-Window-Counter-Algorithmus[2]
- Sliding-Window-Log-Algorithmus[2]
- Sliding-Window-Counter-Algorithmus[2]
Quellen
- Richard A. Deal: Cisco Router Firewall Security: DoS Protection. 22. September 2004, abgerufen am 16. April 2017 (englisch).
- Nikrad Mahdi: An Alternative Approach to Rate Limiting. 12. April 2017, abgerufen am 16. April 2017 (englisch).