Bonjour,
J'envisage de programmer, sur Windows, un proxy qui distribue le
trafic entre 2 connexions ADSL simultanées.
Une solution serait de modifier la route (par route add ou change)
avant d'établir la connexion, de manière à la faire passer par l'une
ou l'autre interface.
Tu ne peux pas créer de route avant que la connexion soit établie
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja présent
Bonjour,
J'envisage de programmer, sur Windows, un proxy qui distribue le
trafic entre 2 connexions ADSL simultanées.
Une solution serait de modifier la route (par route add ou change)
avant d'établir la connexion, de manière à la faire passer par l'une
ou l'autre interface.
Tu ne peux pas créer de route avant que la connexion soit établie
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja présent
Bonjour,
J'envisage de programmer, sur Windows, un proxy qui distribue le
trafic entre 2 connexions ADSL simultanées.
Une solution serait de modifier la route (par route add ou change)
avant d'établir la connexion, de manière à la faire passer par l'une
ou l'autre interface.
Tu ne peux pas créer de route avant que la connexion soit établie
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja présent
J'envisage de programmer, sur Windows, un proxy qui distribue le
trafic entre 2 connexions ADSL simultanées.
Une solution serait de modifier la route (par route add ou change)
avant d'établir la connexion, de manière à la faire passer par l'une
ou l'autre interface.
Tu ne peux pas créer de route avant que la connexion soit établie
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja présent
dans le service routage et accès distant de Windows.
Ou un système de
Network Load Balancing
Tu peux également lier ls interfaces (Sous Windows XP et 2003)
La meilleure solution à mon idée reste "d'agréger" les deux connections
(faire en sorte que les deux soient considérées comme une seule pour les
programmes) et ainsi de laisser le système faire le "gros" du travail
J'envisage de programmer, sur Windows, un proxy qui distribue le
trafic entre 2 connexions ADSL simultanées.
Une solution serait de modifier la route (par route add ou change)
avant d'établir la connexion, de manière à la faire passer par l'une
ou l'autre interface.
Tu ne peux pas créer de route avant que la connexion soit établie
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja présent
dans le service routage et accès distant de Windows.
Ou un système de
Network Load Balancing
Tu peux également lier ls interfaces (Sous Windows XP et 2003)
La meilleure solution à mon idée reste "d'agréger" les deux connections
(faire en sorte que les deux soient considérées comme une seule pour les
programmes) et ainsi de laisser le système faire le "gros" du travail
J'envisage de programmer, sur Windows, un proxy qui distribue le
trafic entre 2 connexions ADSL simultanées.
Une solution serait de modifier la route (par route add ou change)
avant d'établir la connexion, de manière à la faire passer par l'une
ou l'autre interface.
Tu ne peux pas créer de route avant que la connexion soit établie
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja présent
dans le service routage et accès distant de Windows.
Ou un système de
Network Load Balancing
Tu peux également lier ls interfaces (Sous Windows XP et 2003)
La meilleure solution à mon idée reste "d'agréger" les deux connections
(faire en sorte que les deux soient considérées comme une seule pour les
programmes) et ainsi de laisser le système faire le "gros" du travail
Tu ne peux pas créer de route avant que la connexion soit établie
Bien sûr que si, pour le trafic entrant HTTP.
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la route
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
Impeccable ! Merci !
A chaque paquet, ou à chaque connexion ?
Dsl je code un prog en udp et je suis résté sur l'udp où la table est lue à
J'ai fait un essai : je démarre un téléchargement HTTP avec le modem
#1, puis je détruis la route. Le chargement continue sur le modem #1
jusqu'à la fin. Par contre une fois la route détruite, si je démarre
un autre téléchargement, il passe par le modem # 2.
La destruction de la route aurait-elle dû me faire basculer
immédiatement les paquets par l'autre interface (et donc tout planter
car le serveur distant aurait vu l'adresse IP d'origine changer) ?
Donc non, voir ci dessus
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja
présent
dans le service routage et accès distant de Windows.
Je vais regarder ça. Merci !Ou un système de
Network Load Balancing
ça j'ai pas, sinon, je me serais posé moins de question :)Tu peux également lier ls interfaces (Sous Windows XP et 2003)
La meilleure solution à mon idée reste "d'agréger" les deux connections
(faire en sorte que les deux soient considérées comme une seule pour les
programmes) et ainsi de laisser le système faire le "gros" du travail
Je ne suis pas sûr que ce soit possible. Les 2 interfaces n'ont pas la
même IP, et ne sont même pas du même FAI :)
ça ne change rien, ton réseau local envoie sur l'interface locale, et après
Tu ne peux pas créer de route avant que la connexion soit établie
Bien sûr que si, pour le trafic entrant HTTP.
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la route
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
Impeccable ! Merci !
A chaque paquet, ou à chaque connexion ?
Dsl je code un prog en udp et je suis résté sur l'udp où la table est lue à
J'ai fait un essai : je démarre un téléchargement HTTP avec le modem
#1, puis je détruis la route. Le chargement continue sur le modem #1
jusqu'à la fin. Par contre une fois la route détruite, si je démarre
un autre téléchargement, il passe par le modem # 2.
La destruction de la route aurait-elle dû me faire basculer
immédiatement les paquets par l'autre interface (et donc tout planter
car le serveur distant aurait vu l'adresse IP d'origine changer) ?
Donc non, voir ci dessus
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja
présent
dans le service routage et accès distant de Windows.
Je vais regarder ça. Merci !
Ou un système de
Network Load Balancing
ça j'ai pas, sinon, je me serais posé moins de question :)
Tu peux également lier ls interfaces (Sous Windows XP et 2003)
La meilleure solution à mon idée reste "d'agréger" les deux connections
(faire en sorte que les deux soient considérées comme une seule pour les
programmes) et ainsi de laisser le système faire le "gros" du travail
Je ne suis pas sûr que ce soit possible. Les 2 interfaces n'ont pas la
même IP, et ne sont même pas du même FAI :)
ça ne change rien, ton réseau local envoie sur l'interface locale, et après
Tu ne peux pas créer de route avant que la connexion soit établie
Bien sûr que si, pour le trafic entrant HTTP.
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la route
Mais voila : la prise en compte du changement de la table de routage
est-il instantané, ou y aurait-t-il un cache quelque part ? Avant de
me lancer, j'aimerais savoir si la solution est techniquement viable.
"Normalement" la table est relue à chaque paquet
Impeccable ! Merci !
A chaque paquet, ou à chaque connexion ?
Dsl je code un prog en udp et je suis résté sur l'udp où la table est lue à
J'ai fait un essai : je démarre un téléchargement HTTP avec le modem
#1, puis je détruis la route. Le chargement continue sur le modem #1
jusqu'à la fin. Par contre une fois la route détruite, si je démarre
un autre téléchargement, il passe par le modem # 2.
La destruction de la route aurait-elle dû me faire basculer
immédiatement les paquets par l'autre interface (et donc tout planter
car le serveur distant aurait vu l'adresse IP d'origine changer) ?
Donc non, voir ci dessus
(A propos, si quelqu'un a une idée d'un autre moyen d'établir la
connexion sur une interface donnée, qu'il n'hésite pas à me le dire).
Faisable avec le protocole BAP (Bandwith Allocation Protocol) déja
présent
dans le service routage et accès distant de Windows.
Je vais regarder ça. Merci !Ou un système de
Network Load Balancing
ça j'ai pas, sinon, je me serais posé moins de question :)Tu peux également lier ls interfaces (Sous Windows XP et 2003)
La meilleure solution à mon idée reste "d'agréger" les deux connections
(faire en sorte que les deux soient considérées comme une seule pour les
programmes) et ainsi de laisser le système faire le "gros" du travail
Je ne suis pas sûr que ce soit possible. Les 2 interfaces n'ont pas la
même IP, et ne sont même pas du même FAI :)
ça ne change rien, ton réseau local envoie sur l'interface locale, et après
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la route
n'est pas gérée par le programme à ma connaissance
"Normalement" la table est relue à chaque paquet
Impeccable ! Merci !
A chaque paquet, ou à chaque connexion ?
Dsl je code un prog en udp et je suis résté sur l'udp où la table est lue à
chaque paquet, en tcp c'est à l'établissement de la connexion (une fois la
connexion faite elle est liée à l'interface :o))
Je ne suis pas sûr que ce soit possible. Les 2 interfaces n'ont pas la
même IP, et ne sont même pas du même FAI :)
ça ne change rien, ton réseau local envoie sur l'interface locale, et après
en liant/agrégeant les connexions sortantes le système utilisera la première
connexion sortante disponible :) (ça reste à coder pour des système de type
9x, NT et peut être 2000, XP et 2003 permettant de le faire en natif via
API)
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la route
n'est pas gérée par le programme à ma connaissance
"Normalement" la table est relue à chaque paquet
Impeccable ! Merci !
A chaque paquet, ou à chaque connexion ?
Dsl je code un prog en udp et je suis résté sur l'udp où la table est lue à
chaque paquet, en tcp c'est à l'établissement de la connexion (une fois la
connexion faite elle est liée à l'interface :o))
Je ne suis pas sûr que ce soit possible. Les 2 interfaces n'ont pas la
même IP, et ne sont même pas du même FAI :)
ça ne change rien, ton réseau local envoie sur l'interface locale, et après
en liant/agrégeant les connexions sortantes le système utilisera la première
connexion sortante disponible :) (ça reste à coder pour des système de type
9x, NT et peut être 2000, XP et 2003 permettant de le faire en natif via
API)
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la route
n'est pas gérée par le programme à ma connaissance
"Normalement" la table est relue à chaque paquet
Impeccable ! Merci !
A chaque paquet, ou à chaque connexion ?
Dsl je code un prog en udp et je suis résté sur l'udp où la table est lue à
chaque paquet, en tcp c'est à l'établissement de la connexion (une fois la
connexion faite elle est liée à l'interface :o))
Je ne suis pas sûr que ce soit possible. Les 2 interfaces n'ont pas la
même IP, et ne sont même pas du même FAI :)
ça ne change rien, ton réseau local envoie sur l'interface locale, et après
en liant/agrégeant les connexions sortantes le système utilisera la première
connexion sortante disponible :) (ça reste à coder pour des système de type
9x, NT et peut être 2000, XP et 2003 permettant de le faire en natif via
API)
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la
route
n'est pas gérée par le programme à ma connaissance
Voila comment ça marcherait :
1- Un PC de mon réseau local veut accéder à un fichier en HTTP
2- Il se connecte à mon petit proxy HTTP, en lui envoyant l'adresse où
il désire récupérer le fichier (CONNECT xxxx)
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème de
5- Il se connecte au serveur distant par cette route
Connexion :)
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
J'ai pas trouvé les API en question. Et je ne vois pas trop comment ça
peut marcher, notamment par exemple pour un accès FTP où des
connexions multiples sont établies. Je ne suis pas sûr que le serveur
FTP distant apprécie qu'on essaie d'ouvrir un port pour les datas à
partir d'une IP qui n'est pas celle qui s'est authentifiée...
Dans le cas du ftp la connexion sur le port 20 doit ête effectuée avec la
En plus, le choix de la "première connexion sortante disponible" me
paraît embêtant, les 2 connexions étant toujours disponibles, et le
Il est rare que les Deux connexions soient inactivent en m^m temps pour un
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la
route
n'est pas gérée par le programme à ma connaissance
Voila comment ça marcherait :
1- Un PC de mon réseau local veut accéder à un fichier en HTTP
2- Il se connecte à mon petit proxy HTTP, en lui envoyant l'adresse où
il désire récupérer le fichier (CONNECT xxxx)
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème de
5- Il se connecte au serveur distant par cette route
Connexion :)
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
J'ai pas trouvé les API en question. Et je ne vois pas trop comment ça
peut marcher, notamment par exemple pour un accès FTP où des
connexions multiples sont établies. Je ne suis pas sûr que le serveur
FTP distant apprécie qu'on essaie d'ouvrir un port pour les datas à
partir d'une IP qui n'est pas celle qui s'est authentifiée...
Dans le cas du ftp la connexion sur le port 20 doit ête effectuée avec la
En plus, le choix de la "première connexion sortante disponible" me
paraît embêtant, les 2 connexions étant toujours disponibles, et le
Il est rare que les Deux connexions soient inactivent en m^m temps pour un
Le client HTTP envoie la requète à un proxy tunnel, et le proxy
établit la route juste avant d'ouvrir la connexion proprement dite.
là je dois avouer que je ne suis pas, qu'il bind le socket ok, mais la
route
n'est pas gérée par le programme à ma connaissance
Voila comment ça marcherait :
1- Un PC de mon réseau local veut accéder à un fichier en HTTP
2- Il se connecte à mon petit proxy HTTP, en lui envoyant l'adresse où
il désire récupérer le fichier (CONNECT xxxx)
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème de
5- Il se connecte au serveur distant par cette route
Connexion :)
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
J'ai pas trouvé les API en question. Et je ne vois pas trop comment ça
peut marcher, notamment par exemple pour un accès FTP où des
connexions multiples sont établies. Je ne suis pas sûr que le serveur
FTP distant apprécie qu'on essaie d'ouvrir un port pour les datas à
partir d'une IP qui n'est pas celle qui s'est authentifiée...
Dans le cas du ftp la connexion sur le port 20 doit ête effectuée avec la
En plus, le choix de la "première connexion sortante disponible" me
paraît embêtant, les 2 connexions étant toujours disponibles, et le
Il est rare que les Deux connexions soient inactivent en m^m temps pour un
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème de
vocabulaire du coup :o))
5- Il se connecte au serveur distant par cette route
Connexion :)
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
... Et il détruit la route :
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème de
vocabulaire du coup :o))
5- Il se connecte au serveur distant par cette route
Connexion :)
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
... Et il détruit la route :
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème de
vocabulaire du coup :o))
5- Il se connecte au serveur distant par cette route
Connexion :)
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
... Et il détruit la route :
On Fri, 16 Jan 2004 14:26:56 +0100, "Tensibai"
wrote:3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
Je crois qu'on se comprend mal. Mon but est de permettre un partage du
trafic entrant (pas sortant). Je ne gère pas un serveur Web, mais un
petit parc de PC qui accèdent à l'Internet.
Oui, une table de routage existe, sur le PC qui sert de passerelle
vers Internet, avec deux routes par défaut (toutes les deux 0.0.0.0
mask 0.0.0.0). Le but du jeu est de faire choisir alternativement
l'une ou l'autre de ses routes en réponse aux demandes des PCs du
réseau local.
Windows ne fonctionne pas avec Deux passerelle par défaut (comme tous les
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème
de
vocabulaire du coup :o))
Je ne crois pas me tromper de vocabulaire. Exemple : Un PC demande de
récupérer un fichier sur le serveur Web à l'adresse IP 62.4.226.23.
Mon proxy fait l'équivalent de :
route add 62.4.226.23 mask 255.255.255.255 <passerelle> metric 1 if
<interface choisie>5- Il se connecte au serveur distant par cette route
Connexion :)
Oui, là il ouvre une socket sur 62.4.226.23, qui passe donc par la
route qu'il vient de créér.
Heu on bind un sock sur une adresse locale et on le connecte à une adresse
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
... Et il détruit la route :
route delete 62.4.226.23 mask 255.255.255.255 <passerelle>
Par ce procédé, le proxy peut décider par quelle interface passent
chacune des connexions demandées par les PC du réseau local, et donc
partager le trafic sur les 2 modems.
Suite à la reflecion précédente, il me paraît finalement plus simple de
----
Olivier Guillion
On Fri, 16 Jan 2004 14:26:56 +0100, "Tensibai" <tensibai@hotmail.com>
wrote:
3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
Je crois qu'on se comprend mal. Mon but est de permettre un partage du
trafic entrant (pas sortant). Je ne gère pas un serveur Web, mais un
petit parc de PC qui accèdent à l'Internet.
Oui, une table de routage existe, sur le PC qui sert de passerelle
vers Internet, avec deux routes par défaut (toutes les deux 0.0.0.0
mask 0.0.0.0). Le but du jeu est de faire choisir alternativement
l'une ou l'autre de ses routes en réponse aux demandes des PCs du
réseau local.
Windows ne fonctionne pas avec Deux passerelle par défaut (comme tous les
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème
de
vocabulaire du coup :o))
Je ne crois pas me tromper de vocabulaire. Exemple : Un PC demande de
récupérer un fichier sur le serveur Web à l'adresse IP 62.4.226.23.
Mon proxy fait l'équivalent de :
route add 62.4.226.23 mask 255.255.255.255 <passerelle> metric 1 if
<interface choisie>
5- Il se connecte au serveur distant par cette route
Connexion :)
Oui, là il ouvre une socket sur 62.4.226.23, qui passe donc par la
route qu'il vient de créér.
Heu on bind un sock sur une adresse locale et on le connecte à une adresse
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
... Et il détruit la route :
route delete 62.4.226.23 mask 255.255.255.255 <passerelle>
Par ce procédé, le proxy peut décider par quelle interface passent
chacune des connexions demandées par les PC du réseau local, et donc
partager le trafic sur les 2 modems.
Suite à la reflecion précédente, il me paraît finalement plus simple de
----
Olivier Guillion
On Fri, 16 Jan 2004 14:26:56 +0100, "Tensibai"
wrote:3- Mon proxy décide du modem sur lequel effectuer la requete, en se
basant sur les connexions déjà en cours et leur débit (ainsi que le
débit maxi de chaque connexion ADSL)
Donc ta table de routage est déja existante.
Je crois qu'on se comprend mal. Mon but est de permettre un partage du
trafic entrant (pas sortant). Je ne gère pas un serveur Web, mais un
petit parc de PC qui accèdent à l'Internet.
Oui, une table de routage existe, sur le PC qui sert de passerelle
vers Internet, avec deux routes par défaut (toutes les deux 0.0.0.0
mask 0.0.0.0). Le but du jeu est de faire choisir alternativement
l'une ou l'autre de ses routes en réponse aux demandes des PCs du
réseau local.
Windows ne fonctionne pas avec Deux passerelle par défaut (comme tous les
4- Il construit une route sur xxxx passant par l'interface désirée
C'est un socket que tu crées sur l'interface, pas une route... (problème
de
vocabulaire du coup :o))
Je ne crois pas me tromper de vocabulaire. Exemple : Un PC demande de
récupérer un fichier sur le serveur Web à l'adresse IP 62.4.226.23.
Mon proxy fait l'équivalent de :
route add 62.4.226.23 mask 255.255.255.255 <passerelle> metric 1 if
<interface choisie>5- Il se connecte au serveur distant par cette route
Connexion :)
Oui, là il ouvre une socket sur 62.4.226.23, qui passe donc par la
route qu'il vient de créér.
Heu on bind un sock sur une adresse locale et on le connecte à une adresse
6- Il relaye les données reçues vers le PC demandeur
7- Lorsque la connexion est fermée, il détruit la route.
Il ferme le socket (connexion)
... Et il détruit la route :
route delete 62.4.226.23 mask 255.255.255.255 <passerelle>
Par ce procédé, le proxy peut décider par quelle interface passent
chacune des connexions demandées par les PC du réseau local, et donc
partager le trafic sur les 2 modems.
Suite à la reflecion précédente, il me paraît finalement plus simple de
----
Olivier Guillion
Windows ne fonctionne pas avec Deux passerelle par défaut (comme tous les
sytème de routage)
Cette adresse est justement là pour donner une route aux paquets ne
correspondant à aucune entrée dans la table de routage
C'est en général la première qui est utilisée
Il est tout de même possible de géré un changement de passerelle en testant
la connectivité avec la passerelle principale ou en utilisant une trap snmp
(pas facile à mettre en oeuvre pour l'écriture d'un proxy) mais cela sort du
cadre du routage réseau
Oui, là il ouvre une socket sur 62.4.226.23, qui passe donc par la
route qu'il vient de créér.
Heu on bind un sock sur une adresse locale et on le connecte à une adresse
distante ou on lemet en écoute....
Je doit avouer que je ne vois pas exactement l'intéret de créer une route, à
partir du moment où tu as bind ton sock sur une adresse (interface) les
paquets de ce sock seront envoyé par cette interface.
La table de routage ne sera utilisé que si ton programme ne bind pas sur
une adresse spécifique (0.0.0.0 dans la structure sock_inaddr en C) et dans
ce cas le système (du moins la partie réseau) qui se chargera de choisir
l'interface sur laquelle envoyer les paquets en fonction de la tabe de
routage et du coût (METRIC) des routes.
Le bind n'étant pas nécessaire pour un sock client, si tu ne le fais pas
explicitement c'est l'OS qui choisi sur quelle interface le créer.
Par ce procédé, le proxy peut décider par quelle interface passent
chacune des connexions demandées par les PC du réseau local, et donc
partager le trafic sur les 2 modems.
Suite à la reflecion précédente, il me paraît finalement plus simple de
jouer avec une table interne au programme pour décider de quelle interface
utiliser, de lier (bind) les sockets (connexion ?, la traduction laisse à
désirer désolé) à l'interface choisie, ce qui permet de contourner le
routage et simplifie (je pense) la dévellopement de la chose :).
Au fnal tu risque tout de même de réinventer le Network Load Balancing en
fait, tu peux peut être jeter un oiel sur pound
(www.apsis.ch/pound/index_html) qui fait proxy inverse (répartition des
demandes sur plusieurs serveurs web internes)
Essaie peut être aussi (si ce n'est déja fait) de jeter un oeil aux
implémentations de NBL sous linux.
Voila, cette fois je suis à court d'idée je pense :))
Tiens moi au courant, ton projet à l'air bien sympathique (si tu veux un
coup de patte sur des fonctions simples je suis disponible :))
Windows ne fonctionne pas avec Deux passerelle par défaut (comme tous les
sytème de routage)
Cette adresse est justement là pour donner une route aux paquets ne
correspondant à aucune entrée dans la table de routage
C'est en général la première qui est utilisée
Il est tout de même possible de géré un changement de passerelle en testant
la connectivité avec la passerelle principale ou en utilisant une trap snmp
(pas facile à mettre en oeuvre pour l'écriture d'un proxy) mais cela sort du
cadre du routage réseau
Oui, là il ouvre une socket sur 62.4.226.23, qui passe donc par la
route qu'il vient de créér.
Heu on bind un sock sur une adresse locale et on le connecte à une adresse
distante ou on lemet en écoute....
Je doit avouer que je ne vois pas exactement l'intéret de créer une route, à
partir du moment où tu as bind ton sock sur une adresse (interface) les
paquets de ce sock seront envoyé par cette interface.
La table de routage ne sera utilisé que si ton programme ne bind pas sur
une adresse spécifique (0.0.0.0 dans la structure sock_inaddr en C) et dans
ce cas le système (du moins la partie réseau) qui se chargera de choisir
l'interface sur laquelle envoyer les paquets en fonction de la tabe de
routage et du coût (METRIC) des routes.
Le bind n'étant pas nécessaire pour un sock client, si tu ne le fais pas
explicitement c'est l'OS qui choisi sur quelle interface le créer.
Par ce procédé, le proxy peut décider par quelle interface passent
chacune des connexions demandées par les PC du réseau local, et donc
partager le trafic sur les 2 modems.
Suite à la reflecion précédente, il me paraît finalement plus simple de
jouer avec une table interne au programme pour décider de quelle interface
utiliser, de lier (bind) les sockets (connexion ?, la traduction laisse à
désirer désolé) à l'interface choisie, ce qui permet de contourner le
routage et simplifie (je pense) la dévellopement de la chose :).
Au fnal tu risque tout de même de réinventer le Network Load Balancing en
fait, tu peux peut être jeter un oiel sur pound
(www.apsis.ch/pound/index_html) qui fait proxy inverse (répartition des
demandes sur plusieurs serveurs web internes)
Essaie peut être aussi (si ce n'est déja fait) de jeter un oeil aux
implémentations de NBL sous linux.
Voila, cette fois je suis à court d'idée je pense :))
Tiens moi au courant, ton projet à l'air bien sympathique (si tu veux un
coup de patte sur des fonctions simples je suis disponible :))
Windows ne fonctionne pas avec Deux passerelle par défaut (comme tous les
sytème de routage)
Cette adresse est justement là pour donner une route aux paquets ne
correspondant à aucune entrée dans la table de routage
C'est en général la première qui est utilisée
Il est tout de même possible de géré un changement de passerelle en testant
la connectivité avec la passerelle principale ou en utilisant une trap snmp
(pas facile à mettre en oeuvre pour l'écriture d'un proxy) mais cela sort du
cadre du routage réseau
Oui, là il ouvre une socket sur 62.4.226.23, qui passe donc par la
route qu'il vient de créér.
Heu on bind un sock sur une adresse locale et on le connecte à une adresse
distante ou on lemet en écoute....
Je doit avouer que je ne vois pas exactement l'intéret de créer une route, à
partir du moment où tu as bind ton sock sur une adresse (interface) les
paquets de ce sock seront envoyé par cette interface.
La table de routage ne sera utilisé que si ton programme ne bind pas sur
une adresse spécifique (0.0.0.0 dans la structure sock_inaddr en C) et dans
ce cas le système (du moins la partie réseau) qui se chargera de choisir
l'interface sur laquelle envoyer les paquets en fonction de la tabe de
routage et du coût (METRIC) des routes.
Le bind n'étant pas nécessaire pour un sock client, si tu ne le fais pas
explicitement c'est l'OS qui choisi sur quelle interface le créer.
Par ce procédé, le proxy peut décider par quelle interface passent
chacune des connexions demandées par les PC du réseau local, et donc
partager le trafic sur les 2 modems.
Suite à la reflecion précédente, il me paraît finalement plus simple de
jouer avec une table interne au programme pour décider de quelle interface
utiliser, de lier (bind) les sockets (connexion ?, la traduction laisse à
désirer désolé) à l'interface choisie, ce qui permet de contourner le
routage et simplifie (je pense) la dévellopement de la chose :).
Au fnal tu risque tout de même de réinventer le Network Load Balancing en
fait, tu peux peut être jeter un oiel sur pound
(www.apsis.ch/pound/index_html) qui fait proxy inverse (répartition des
demandes sur plusieurs serveurs web internes)
Essaie peut être aussi (si ce n'est déja fait) de jeter un oeil aux
implémentations de NBL sous linux.
Voila, cette fois je suis à court d'idée je pense :))
Tiens moi au courant, ton projet à l'air bien sympathique (si tu veux un
coup de patte sur des fonctions simples je suis disponible :))
Oui, mais comment "binder" le "sock" explicitement sur l'une ou
l'autre interface avec Windows ?
Le PC ayant 2 modems ADSL branchés, cette appli veut choisir le modem
(donc l'interface) sur lequel établir une connexion.
Comment spécifier l'interface par laquelle passe une connexion par
socket ?
- Il déclare une socket : sock=socket (PF_INET, SOCK_STREAM, 0)
- Il résout l'adresse de l'hote par gethostbyname(serveur);
- Il remplit une structure sockaddr_in avec l'adresse IP sur laquelle
se connecter, ainsi que le port (80)
- Il connecte la socket par connect(...)
- Il envoie la requète HTTP par send (...)
- Il reçoit les données par recv(...)
- Il ferme la socket par closesocket()
Où la-dedans l'application peut-elle spécifier que la connexion
s'ouvre par "modem #1" ou "modem #2" ?
Oui, mais comment "binder" le "sock" explicitement sur l'une ou
l'autre interface avec Windows ?
Le PC ayant 2 modems ADSL branchés, cette appli veut choisir le modem
(donc l'interface) sur lequel établir une connexion.
Comment spécifier l'interface par laquelle passe une connexion par
socket ?
- Il déclare une socket : sock=socket (PF_INET, SOCK_STREAM, 0)
- Il résout l'adresse de l'hote par gethostbyname(serveur);
- Il remplit une structure sockaddr_in avec l'adresse IP sur laquelle
se connecter, ainsi que le port (80)
- Il connecte la socket par connect(...)
- Il envoie la requète HTTP par send (...)
- Il reçoit les données par recv(...)
- Il ferme la socket par closesocket()
Où la-dedans l'application peut-elle spécifier que la connexion
s'ouvre par "modem #1" ou "modem #2" ?
Oui, mais comment "binder" le "sock" explicitement sur l'une ou
l'autre interface avec Windows ?
Le PC ayant 2 modems ADSL branchés, cette appli veut choisir le modem
(donc l'interface) sur lequel établir une connexion.
Comment spécifier l'interface par laquelle passe une connexion par
socket ?
- Il déclare une socket : sock=socket (PF_INET, SOCK_STREAM, 0)
- Il résout l'adresse de l'hote par gethostbyname(serveur);
- Il remplit une structure sockaddr_in avec l'adresse IP sur laquelle
se connecter, ainsi que le port (80)
- Il connecte la socket par connect(...)
- Il envoie la requète HTTP par send (...)
- Il reçoit les données par recv(...)
- Il ferme la socket par closesocket()
Où la-dedans l'application peut-elle spécifier que la connexion
s'ouvre par "modem #1" ou "modem #2" ?
Oui, mais comment "binder" le "sock" explicitement sur l'une ou
l'autre interface avec Windows ?
Il existe une fonction qui s'appelle bind.
Oui, mais comment "binder" le "sock" explicitement sur l'une ou
l'autre interface avec Windows ?
Il existe une fonction qui s'appelle bind.
Oui, mais comment "binder" le "sock" explicitement sur l'une ou
l'autre interface avec Windows ?
Il existe une fonction qui s'appelle bind.