/ / So migrieren Sie vorhandene udp-Anwendungen auf Raw-Sockets - Sockets, Netzwerkprogrammierung, udp, Raw-Sockets

Wie migriere ich existierende UDP-Anwendung auf rohe Sockets - Sockets, Netzwerk-Programmierung, UDP, Raw-Sockets

Gibt es ein Tutorial für die Migration von einfachen UDP-Sockets (Linux, C99 / C ++, recv syscall wird verwendet) an die raw sockets?

Gemäß http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch03s04.html raw socket ist viel schneller als udp.

Anwendung ist Client-Server. client ist proprietär und muss genau dasselbe procotol verwenden wie bei udp server. Mit Raw-Sockets kann der Server jedoch etwas schneller sein. Welche Teile von udp muss ich im Server implementieren? Gibt es eine "schnelle Migration" Bibliotheken?

Antworten:

1 für die Antwort № 1

Ein Raw-Socket ermöglicht Ihnen die Kommunikation mit Protokollen auf niedrigerer Ebene, wie Ethernet, IP usw. Ja, ein niedrigerer Wert kann Ihnen einige Vorteile bringen.

In diesem Fall erwähnen Sie, dass der Server istgeschrieben, um das Udp-Protokoll zu verwenden, also muss auf der Leitung die Kommunikation Udp sein. Wenn Sie jetzt einen Raw-Socket verwenden, müssen Sie sicherstellen, dass Ihre Anwendungsdaten in einem Udp-Paket gekapselt gesendet werden. Sie müssen auch Code schreiben, um sicherzustellen, dass Sie das Udp-Protokoll und die Zustandsmaschine einhalten, damit der Client für den Server nur als ein weiterer Udp-Client angezeigt wird. Um all dies zu tun, muss viel Code geschrieben werden, und es gibt einige Nachteile wie erhöhte Wartung, erhöhte Kosten für die ordnungsgemäße Funktionsweise usw.

Ich habe den Artikel, den Sie oben verlinkt haben, nicht vollständig gelesen, aber die Frage, die Sie sich stellen müssen, lautet: Können Sie die in diesem Forschungsbericht angegebenen Gewinne erzielen und sie für Ihr Szenario replizieren?

Meiner Meinung nach sollten Sie zuerst versuchen, es herauszufindenwarum Ihr Kunde so langsam ist. Was sind Ihre Anforderungen? Haben Sie Metriken, was einen guten, schnellen Kunden ausmacht? Wenn ich Sie wäre, würde ich zuerst die aktuelle Implementierung messen und dabei einige Metriken berücksichtigen, die für das Szenario nützlich sind, z. B. übertragene Bytes / Sek. Usw. Dann würde ich dem Client ein Profil zuweisen, um zu sehen, wo er zu viel Zeit verbringt. und versuche zu sehen, ob ich den Overhead reduzieren und es viel schneller machen kann.

Um zusammenzufassen, suchen Sie nach Einsparungen im oberen Bereich derstapeln (d. h. in Ihrer Anwendung), bevor Sie den Stapel herunterfahren. Wenn Ihre App nicht gut geschrieben ist, werden Sie, egal wie niedrig Sie sind, nicht die erwarteten Leistungssteigerungen sehen.