Activate Masquerading (NAT) on Linux router

To activate NAT on a Linux Box used as a router, just use the following line :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0 is the network interface able to access Internet directly

Then you can list the NAT entry in iptables with the following command

# iptables -t nat -L

You can get more details with:

# iptables -t nat -L -v

The conntrack tool also help to see what happen in the NAT

# conntrack -L --src-nat / --dst-nat

Latency impact on NFS link

Interesting document about NFS and iSCSI performance over latency, even if it is new a new document, the study made is really complete and interesting. As I was mostly interested on the performance of NFS over a WAN access with a high latency, I would summarize it by concluding that the maximum performance of file transfer over NFS is not so far the following list:

Time to read 128MB / latency (read is the worst case)

  • 10 ms latency requires 200s, max bandwidth is about 640KB/s – 5.12Mbits/s
  • 20 ms latency requires 300s, max bandwidth is about 427KB/s – 3.41Mbits/s
  • 30 ms latency requires 500s, max bandwidth is about 256KB/s – 2.05Mbits/s
  • 50 ms latency requires 800s, max bandwisth is about 160KB/s – 1.28Mbits/s
  • 90 ms latency requires 1600s, max bandwidth is about 80KB/s – 640Kbits/s

For details and much more information, take a look to the source document : http://lass.cs.umass.edu/papers/pdf/FAST04.pdf

Faille WPS – nouvel outil : Reaver

Un nouvel outil permettant l’attaque de résaux wifi protégés par WPS est sorti. Son petit nom est reaver. Il permet de tester différentes clefs sous la forme d’une attaque de type brute force. La methode employé permet de résoudre cette attaque en un maximum de 11.000 tests, ce qui est très peu.

Continue reading

Acceder à une imprimante cups depuis Mac Os X

Enigme résolue (en lisant un peu la doc…) pour acceder depuis un MAC à une imprimante partagée depuis un Linux au travers de IPP, il faut mettre la configuration suivante:
Dans le champ adresse : l’ip du serveur
Dans le champ nom de la file : /printers/nom de l’imprimante
Ensuite il faut choisir le driver correspondant à l’imprimante
Le tout etait donc de bien penser à ajouter /printers …

Migration de VM de Xen vers KVM-Qemu

J’ai pu expérimenter la migration de VM avec kvm-qemu sur une opensuse 11.3 … Rien à redire c’est tres simple à mettre en oeuvre à condition de respecter 2,3 petites choses qui sont notées nul part :
– Pour pouvoir lancer la migration, il est nécessaire que le fichier de description de la VM soit bien présent sur la destination.
– Pour pouvoir lancer la migration, il faut que la source se connecte en utilisant le nom de machine et non son adresse IP sans quoi un message d’erreur générique est affiché, sans plus de détails.
– Il faut que le chemin du disque de la vm, partagé entre source et destination soit totalement identique.
– Il faut que le port VNC (à vérifier) soit disponible, celui-ci étant dynamique, il semble qu’il soit préférable de le forcer à une valeur fixe par VM lorsque la destination a deja des VM en cours d’exécution.

Problèmes de stabilité avec l’hyperviseur Xen – kernel debug

Bon, chaque mie à jour de matos à son lot d’emmerdes, et à ce jeux, je n’ai franchement pas de bol 🙁 l’informatique doit m’en vouloir … bref, me voila avec un système Xen Linux qui crash lamentablement dès que sont transférés plusieurs 100ènes de Mo sur une des cartes réseau … perso, je pense que le périphérique virtuel BR (bridge) est moisi, mais bon …
Manque de bol, les logs ne sont pas parlante et surtout rarement accessibles. De fait, j’ai eu besoin de brancher un jolie cable null-modem entre mon server et un portable pour avoir les logs jusqu’au dernier instant. Un petit rappel ici de comment mettre en oeuvre ceci

Tout d’abord, il faut trouver le cable null-modem, je le dit tout de suite, le petit dealer informatique du coin, lui parler null-modem ou chinois c’est kifkif ; j’ai donc trouvé mon bonheur chez un petit vendeur de composants électronique (mais pourquoi ai-je balancé mes tonnes de câbles passés !!!)
Une fois connecté, il est simple de tester la connexion en tapant sur un coté :
tail -f /dev/ttyS0
et de l’autre coté :
echo “coucou” > /dev/ttyS0

L’activation de la console se fait ensuite en modifiant /boot/grub/menu.lst pour ajouter les options suivante sur la ligne de commande, attention dans le cas de xen et d’un kernel normal c’est un peu différent :
Pour xen ajouter à la ligne kernel : loglvl=all guest_loglvl=all com1=9600,8n1 console=com1
¨Pour xen ajouter à la ligne modules : console=hvc0 earlyprintk=xen
Pour Linux ajouter :

Reste ensuite à booter et ecouter, pour l’ecoute je conseille deux terminaux :
cat /dev/ttyS0 > log.out
tail -f log.out
Comme ca on enregistre et affiche en meme temps le résultat dans un fichier.
Pour la vitesse, il serait mieux de passer à 115200 bauds, toutefois, pour ma part, je ne sais pourquoi mais le portable de reception n’a pas eu envie d’aller au dela de 9600bps, ce qui, il faut le dire ralenti grave le boot au point de le planter parfois.

Test de performance d’un serveur Kimsufi

Après avoir utilisé un serveur RPS durant 1 an, j’ai choisi de migrer sur un serveur Kimsufi. Le serveur RPS n’est pas mal mais le disque pose problème : il y a le principe du disque partagé à la bande passante vraiment trop limitée d’une part et la taille de ce disque elle aussi trop contraignante d’autre part.
Le serveur RPS offre un processeur normalement un peu plus rapide (double coeur et fréquence plus élevée) mais dont l’usage semble vraiment limité par le disque pour un usage web faisant appel à une BDD.

Le but de cet article est donc de comparer la performance avec mes petits outils habituels : bonnie++ et lmbench

Test du disque

  • Seq Out Char : Kim ( 33 M/s ) – RPS ( 5 M/s )
  • Seq Out Blk : Kim ( 50 M/s ) – RPS ( 6 M/s )
  • Seq In Char : Kim ( 38 M/s ) – RPS ( 4.7 M/s )
  • Seq In Blk : Kim ( 106 M/s ) – RPS ( 5.7 M/s )
  • Rand. Seek : Kim ( 186 /s ) – RPS ( 113 /s )

Avec un facteur de l’ordre de 10, il est clair que la performance du serveur kimsufi est très loin devant celle du RPS. La perf du RPS est de l’ordre de celle d’un disque NFS sur reseau 100Mb ; soit de l’ordre de 2 fois moindre qu’un disque USB suivant d’autres tests que j’ai pu réaliser. La performance du disque Kimsufi est conforme à des tests effectués sur des disques classiques sata. Ce facteur limitant impacte fortement les performances d’accès à la base de donnée par exemple ; pour le reste, sur un serveur web, hors temps de backup c’est moins critique.

Test du processeur

  • Fork de process : Kim ( 271 ms ) – RPS ( 191 ms )
  • Exec de process : Kim ( 1042 ms ) – RPS ( 654 ms )
  • Calcul int add : Kim ( 0.38 ns ) – RPS ( 0.48 ns )
  • Calcul int mul/div : Kim ( 0.38/23 ns ) – RPS ( 0.19/20.5 ns )
  • Calcul double add : Kim ( 2.26 ns ) – RPS ( 1.91 ns )
  • Calcul double mul/div : Kim ( 3/17 ns ) – RPS ( 1.93 / 10.4 ns)
  • 16p/64K Context switch : Kim ( 24 ms ) – RPS ( 22 ms)
  • Latence TCP : Kim ( 35 us ) – RPS ( 25.2 us)
  • Local comm – TCP : Kim ( 126 M/s ) – RPS ( 474 M/s )
  • Local comm – Bcopy : Kim ( 572 G/s ) – RPS ( 1.1 G/s )
  • Local comm – mem rd : Kim ( 2.2 G/s ) – RPS ( 2.5 G/s )
  • Local comm – mem wr : Kim ( 0.9 G/s ) – RPS ( 1.5 G/s )
  • Memory lantency L1/L2/Main/Rand: Kim ( 1.5/25/70/426 ns ) – RPS ( 1.4/8.1/62.5/180 ns )

Comme convenu la performance du Celeron est en dessous de celle de l’atom d’une génération plus recente avec une fréquence plus élevée et surtout un double coeur. N’empêche que l’écart entre les deux n’est pas d’un facteur 10 pas de 30 à 50% surtout lié aux accès mémoire.

Reste à tester mysql ; pour se faire j’ai utilisé myBench un petit outil tout simple en php :

  • Create 500k record : Kim ( 138 s ) – RPS ( 34 s)
  • Create md5 record / s : Kim ( 3300 ) – RPS ( 12949 )

Résultat plutôt surprenant où je m’attendais à ce que le kimsufi soit largement devant … une petite vérification des fichiers de conf s’impose ! à moins que ce ne soit le bench qui ne travaille que dans le cache …
Voyons donc avec sql-bench qui est distribué avec mysql et couvre plus de tests: (perl run-all-tests –server=mysql –user=.. –password=.. apres avoir créé une base ‘test’ sur mysql)

  • Alter : Kim ( 15s ) – RPS ( 49s )
  • Big-Table : Kim ( 10s ) – RPS ( 7s )
  • Connect : Kim ( 289s ) – RPS ( 121s )
  • Create : Kim ( 119s ) – RPS ( 4680s estimé )
  • Insert : Kim ( 2183s ) – RPS ( 581s estimé )
  • Select : Kim ( 141s ) – RPS ( 58s )
  • Update with key : Kim ( 159s ) – RPS ( 28s )

Etrange comportement du RPS sur les creation de table, j’imagine que celles-ci demande beaucoup d’I/O. Les requetes de select et insert sont beaucoup plus rapide. Ma config ayant beaucoup de cache (pour plier au probleme de disque) la puissance CPU semble prendre le dessus sur les requete insert/select/update et ce avec un facteur important de l’ordre de 2 à 3. Il semble donc, et c’est avec surprise, que la config RPS soit meilleure pour les accès bdd, ce qui pour le coup m’ennuie. On note toutefois que dès lors que l’on sort des conditions optimales, le test n’est pas du tout linéaire …

Voici donc quelques détails supplémentaires avec 1.5M de lignes à traiter:

  • Insert 3×1.5M : Kim ( 705s ) – RPS (146s )

Rien de bien neuf donc… si limite il y a dans la rupture de linéarité, elle est bien au dela des 1.5M de lignes.
Au final, une fois les sites migrés, je constate, à l’aide d’une sonde woozweb, que le temps de chargement moyen du site est 2 fois plus lente avec un KimSufi qu’avec un RPS, mais reste totalement acceptable, situant mes site dans la trache où 40% des sites font mieux pour du java et 9% pour du php basique.