Générer beaucoup de traffic

Bonjour à tous !

J’ai un projet à accomplir qui me demande entre autre de pouvoir générer beaucoup de trafic jusqu’à l’utilisation maximum du débit.
A la base, en raison de la restriction lié à la MTU des réseaux, je pensais créer un programme et le dupliquer afin de lancer plusieurs ping en même temps. Toutefois cette idée pose un problème. Si je veux atteindre un débit de 8Mbps avec une MTU de 1500 octet, il me faut 667 processus, ce qui est énorme et qui risque d’effondrer les capacités de la machine.

Avez-vous des idées pour réaliser un tel traffic ?
Question à part : Savez-vous comment visualiser le débit max sur un routeur Cisco ?

Faire des applis clients/serveur qui s’envoient beaucoup de data ? je vois pas le problème en fait ?

[quote=“guetguet”]Bonjour à tous !

J’ai un projet à accomplir qui me demande entre autre de pouvoir générer beaucoup de trafic jusqu’à l’utilisation maximum du débit.
A la base, en raison de la restriction lié à la MTU des réseaux, je pensais créer un programme et le dupliquer afin de lancer plusieurs ping en même temps. Toutefois cette idée pose un problème. Si je veux atteindre un débit de 8Mbps avec une MTU de 1500 octet, il me faut 667 processus, ce qui est énorme et qui risque d’effondrer les capacités de la machine.

Avez-vous des idées pour réaliser un tel traffic ?
Question à part : Savez-vous comment visualiser le débit max sur un routeur Cisco ?[/quote]

Salut,
Quelques “wget” sur des gros fichiers…
Pour le routeur, je ne sais pas.

En fait je ne vous ai peut être pas tout dit. Je suis stagiaire chez orange. Nous utilisons un serveur rebond pour nous connecter aux routeurs ft et clients. Ce que je voudrais faire c’est générer du gros traffic entre le routeur ft en entré du backbone orange et entre le routeur chez le client. Donc toutes applications client/serveur (qui serait déjà assez complexe à rendre compatible par toutes les marques de routeurs) n’est pas envisageable, car ça considérerait d’uploader le prog sur des milliers de routeurs.

Donc voilà si vous avez des propositions. Si ce que j’ai marqué dans mon premier post vous donne un point de départ ou autre n’hésitez pas.

Je vous en remercie

Et pour créer un fichier bidon bien gros tu peux utiliser la commande dd, exemple :

dd if=/dev/zero of=/tmp/fichier_bidon.img bs=1M count=4096

1M x 4096 ~ un fichier de 4go
Adaptes le comme tu veux

Comme dit lol, tu peux utiliser wget pour récupérer ton fichier, mais cela implique de le placer sur un espace web. Tu peux aussi utiliser scp qui dépend simplement de ssh.

scp user@IP_MACHINE_DISTANTE:/tmp/fichier_bidon.img /tmp/.

Ensuite iptraf et iftop peuvent te donner des infos sur les débits

EDIT : j’avais pas vu ton dernier post, je suis légèrement HS… :mrgreen:

Entre nous, je comprends mieux maintenant pourquoi ma livebox ne m’offre que 1100Ko/s à seulement 200m de DSLAM :12 Si les stagiaires font mumuze avec les routeurs FT aussi… :mrgreen:

Mais ce que tu veux concrètement, cest un prog sous debian qui arrose allégrement les routeurs ? Parce que j’ai du mal à voir le rapport avec debian enfait :017

Envois des paquets UDP, voilà un petit pgm C sommaire mais efficace, tu peux augmenter la taille des paquets, c’est la ligne

sendto(douille,“Pouet pouet tagada!”,19,0,(struct sockaddr *) & adresse,
sizeof (struct sockaddr_in));

Change la chaine «Pouet pouet tagada» et la longueur (19).

Tu n’as pas besoin que la machine écoute à l’autre bout.

[code]#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#include <signal.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>

#define PORT 1960

struct sockaddr_in desc_douille;
int verbeux = 0;

void erreur(message)
char *message;
{
if (verbeux) {
printf(“Erreur %s\n”,message);
perror("Message d’erreur: ");
}
exit(1);
}

int cree_douille_udp (broadcast)
int broadcast;
{
int sock;
if ((sock = socket (AF_INET, SOCK_DGRAM, 0)) < 0) {
erreur (“création douille”);
return (-1);
}
setsockopt(sock,SOL_SOCKET,SO_BROADCAST, &broadcast,sizeof(broadcast));
return (sock);
}

void ausecours()
{
printf(“sendudp [-a destination] [-p port] [-v] [-h] [destination]\n”);
printf(“Envoi de paquets UDP à la machine destination\n”);
exit(2);
}

main(argc,argv)
int argc;
char **argv;
{
int douille,i,j;
char buffer[256];
struct sockaddr_in adresse;
struct hostent * hostent = NULL;
struct servent * servent = NULL;
struct protoent * protoent = NULL;

char *hote = NULL;
int prt = PORT;
int option;
while ((option = getopt(argc,argv,“p:a:vh”)) != -1) {
switch(option) {
case ‘a’:
hote = optarg;
break;
case ‘p’:
sscanf(optarg,"%d",&prt);
break;
case ‘v’:
verbeux = 1;
break;
case ‘h’:
case ‘?’:
default:
ausecours();
break;
}
}
if ((hote == NULL) && (optind < argc)) hote = argv[optind];
if (hote == NULL) ausecours();
douille = cree_douille_udp(1);

if (hote != NULL)
if ((hostent = gethostbyname (hote)) == NULL) {
erreur (“gethostbyname”);
return (-1);
}

if ((protoent = getprotobyname (“udp”)) == NULL) {
erreur (“getprotobyname”);
return (-1);
}
memset (& adresse, 0, sizeof (struct sockaddr_in));
adresse . sin_family = AF_INET;
if (prt != 0) adresse.sin_port = htons(prt);
else adresse . sin_port = htons (0);
if (hostent != NULL)
adresse . sin_addr . s_addr =
((struct in_addr *) (hostent -> h_addr)) -> s_addr;
else erreur(“pas de destinataire”);

while (true) sendto(douille,“Pouet pouet tagada!”,19,0,(struct sockaddr *) & adresse,
sizeof (struct sockaddr_in));
close(douille);
exit(0);
}
[/code]

Voilà ce que je voudrais faire c’est bombarder “Allègrement” (:P) mon routeur à partir de debian.

Fran.b > merci ! je vais jeter un oeil à ton prog.

EDIT : après modification des iptables, ça marche :stuck_out_tongue: Merci bien. Demain je vérifie avec mon maître de stage si c’est viable. Je vous tient au courant =)