PDA

View Full Version : [c/c++] implementazione 'router'


Rigo007
20-01-2006, 10:57
Ciao.
Dovrei realizzare una applicazione che ritrasmette pacchetti in una piccola LAN e pensavo di sfruttare un campo nel pacchetto che invio per gestire l'instradamento nei 'nodi' intermedi. Una sorta di 'router', anche se nn è propriamente corretto definirlo tale.
Pensavo di creare un piccolo buffer interno in grado di raccogliere + pacchetti diretti alla stessa destinazione.
Qlc di voi ha qlc esperienza in materia?

s.o. linux

Ciao...thanks in advance!

Zeus84
21-01-2006, 08:22
Ti dirò...quello che vuoi fare è molto interessante ma al tempo stesso anche enormemente complesso secondo me..
Ok tu ti gestisci un buffer sul quale devi accodare i pacchetti destinati ad una sola macchina; ma quanto grande deve essere? Dato che su una rete Lan i pacchetti arrivano ad una velocità tale da saturarti un qualunque buffer in pochi secondi e anche meno dovresti gestirti anche quest'ulteriore problema...e se si riempe cosa fai? scarti i pacchetti che arrivano o effettui una spedizione immediata?
Per il campo del pacchetto da utilizzare, bisognerebbe visionare un attimo lo standard...poi tra parentesi dovresti riuscire ad inserire l'applicazione molto in basso (quasi a livello kernel) perchè sicuramente finisce che se usi pacchetti con questo campo speciale vengono scartati dallo stack tcp/ip di linux senza neanche arrivare in user space...
Ecco questi sono solo alcuni interroggativi...magari spiegami meglio cosa dovrebbe fare l'applicazione e poi ne discutiamo..
Se devi scrivere il tutto su Linux posso darti una mano anche se ultimamente sono impegnato con l'uni....

Rigo007
21-01-2006, 09:41
La grandezza del buffer la imposto in base alla lunghezza dei pacchetti che invio, ad esempio, potrei realizzarne uno in grado di ospitare 10 pacchetti e poi con un thread gestire l'invio di questi prima che si riempia.
Userò il protocollo UDP (specifiche del progetto); pensavo di sfruttare una cosa molto simile ad un TFTP per problemi di realizzabilità.
Ke dici? Realizzabile?

Zeus84
21-01-2006, 11:04
mmm...si ma non ha molto senso creare un buffer per 10 pacchetti per il semplice motivo che i pacchetti udp hanno dimensione variabile..a meno che tu non hai come ipotesi il fatto che ti arrivino pacchetti di dimensione fisse magari perchè il protocollo applicativo è stato realizato per mandarli sempre di una tale dimensione...

Rigo007
21-01-2006, 12:59
libero di farlo...lo scopo è solo quello di fare viaggiare i pacchetti nella rete attraverso nodi intermedi.