mardi 30 novembre 2010

compiling php extension under Mac OS X 10.5

Today, I installed the amazing Xdebug PHP extension and had some troubles making it running under my Apache2 installation. This short blog post is intended to keep track of the issue and might help other people encountering a similar issue.


Firstly, the symptoms : xdebug loads correctly under CLI (ie PHP launched from shell) since it shows the "with Xdebug v2.1.0". Under apache2, it reports a cryptic error:
Failed loading /usr/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so:  (null)
On for a debugging session!

Firsty, my computer run Mac OS X 10.5.8 updated as of 11/30/2010 and I rely on Apple tools to develop PHP scripts. This mean:
  • PHP 5.2.14 (built: Oct  6 2010 16:57:10) 
  • Apache 2.2.14
  • phpize --version reports:
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
I compiled Xdebug using the usual steps:
  • wget
  • tar -xvzf
  • cd xdebug2.1
  • /usr/bin/phpize
  • ./configure && make
  • sudo cp ./modules/xdebug.so ...
  • sudo apachectl restart

After some googling, I found the solution in a blog post by Patrick Gibson. Here is the lame copy pasting :

MACOSX_DEPLOYMENT_TARGET=10.5 \
CFLAGS='-arch i386 -arch x86_64 -arch ppc7400 -arch ppc64' \
LDFLAGS='-arch i386 -arch x86_64 -arch ppc7400 -arch ppc64' \
CXXFLAGS='-arch i386 -arch x86_64 -arch ppc7400 -arch ppc64' \
./configure --enable-xdebug
The above environment variables are used to instruct configure and make that a multiple architecture library should be build. I then did the usual make, copy and Apache restart. Et Voilà! Problem fixed.

I am not sure what is the real cause of the issue, probably related to the Apache2 libphp5.so.

Last step was to report the issue:

I have contacted Xdebug author Derick on irc, since this issue can probably get handle by tweaking the configure script. After a quick bug report, it is an issue with Mac OS X phpize which does not include the MACOSX_DEPLOYMEN_TARGET environment variable nor the CFLAGS, LDFLAGSn CXXFLAGS needed to build a multi architecture library. Basically not an issue with Xdebug itself.

Hence this blog post to make sure I remember the above compilation FLAGS.


samedi 4 septembre 2010

la réclame divine

Dans la même que le doux bonheur des petits mots dans la boîte aux lettres, nous avons reçu un prospectus intitulé :

Comment s'approcher de Dieu ? 

Vaste question qui a probablement occupé des générations complètes. Je suis donc « chaleureusement invité à venir écouter la réponse à cette question ». L'assemblée est libre d'accès, sans nécessiter d'assister à l'intégralité de celle-ci et il est stipulé qu'aucune quête ne sera faite.

On retrouve là tout le jargon marketing visant à ameuter le maximum de personnes. Toujours passionné de débats philosophique, je retourne le prospectus (format A5 quadrichromie recto-verso, on ne déconne pas). Et là le premier mot qui me vient : Jéhovah. Précédé du début de phrase "Les Témoins de Jéovah".

Je n'aborde pas les questions de religion, mais ce prospectus va terminer illico dans la corbeille de recyclage dès que ce message sera publié.  Pour approcher Dieu, commencez tout d'abord par ne pas approcher une tendance sectaire et enclin au prosélytisme.

lundi 9 août 2010

un très bref comparatif IP v4 et v6

On me demande régulièrement les différences entre le protocole internet version 4 et son remplaçant en version 6. Je vais donc vous inventorier quelques différences sans prétention d'exhaustivité ni de vulgarisation.

On notera tout d'abord qu'IPv4 date du début des années 80 à une époque où il devait encore y avoir des cartes perforées sur les bureaux des analyses et des pupitreurs. Le protocole montre ses limites aujourd'hui en terme de fonctionnalités.

Différentes caractéristiques

Le tableau suivant récapitule, selon moi, les principales différences entre les deux versions :

PropriétéIPv4IPv6
Taille d'adresse 32 bits 128 bits
dont réseau 8 à 30 bits 64 bits
Taille de l'en-tête 20-60 octets 40 octets
Options d'en-têtes limitées à quelques unes illimitées
Fragmentation Envoyeur et intermédiaire Envoyeur uniquement
MTU mini 576 octets 1280 octets
Découverte du MTU Optionnelle, rarement utilisée Recommandée
Adressage souvent une adresse par équipement plusieurs adresses par interfaces
Types d'adresses Unicast, multicast, broadcast Unicast, multicast, anycast
Configuration Manuellement ou configuration par DHCP Les équipements se configurent par eux-même (stateless) ou DHCP

Espace d'adressage :

Outre un espace d'adressage bien plus grand (32 bits deviennent 128 bits), on notera que la taille du réseau est fixe à 64 bits. En effet, les 64 derniers bits servent toujours à adresser une interface (physique ou logique) d'un équipement. Les 64 premiers bits indiquent toujours le réseau qui est lui même segmenté en un préfix réseau et un identifiant de sous-réseau. On peut alors représenter une adresse sous la forme suivante :



Allocation du préfixe réseau :

Le préfixe réseau attribué aux adresses unicast par l'IANA est 2002:/3 duquel différents réseaux sont attribués au registres régionaux. On trouvera à l'adresse http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xml les allocations en cours.

Le processus d'allocation de réseau est, en 2010, le suivant :
  • L'IANA attribue un /12 au registre régional
  • Le registre attribue des /32 aux FAI
  • Le FAI attribue des /48 à ses clients
Registre régional et FAI pratiquent généralement la sur-réservation. Ainsi, si un FAI ou un client demande un bloc supplémentaire, il sera possible de lui en assigner un contigu. Ce principe "gaspille" des adresses mais permettra sûrement de maintenir l'agrégation de route et donc de réduire les tables de routages sur internet.

Configuration des équipements

Un point amusant, c'est que la configuration d'un équipement réseau est automatique. Tout d'abord, pour chacune de ses interfaces, le mécanisme EUI-64 permet d'obtenir une adresse d'hôte (les 64 derniers bits) unique, car basée sur l'adresse MAC de l'interface réseau.

L'équipement envoi une demande sur son réseau ("Router Sollicitation") et le routeur répond avec un message "Router Advertisement". Ce message contient un préfixe IPv6, soit les 64 premiers bits.

Le client n'a plus qu'à concaténer son adresse et le préfixe pour obtenir une connectivité IPv6 !

L'intérêt immédiat est pour la renumérotation de réseaux, elle peut maintenant être réalisée de manière centrale par simple propagation du nouveau préfixe réseau.

Routage

Le routage ne présente rien de bien particulier. Bien sur l'espace d'adressage permet d'agréger les réseaux ce qui ne manquera pas de réduire le nombre de routes annoncées dès que le réseau est un peu important.

Le routage dynamique est similaire à celui d'IPv4, on utilise simplement une version à jour du protocole mais les principes restent strictement identiques. Nous avons donc :
  • RIPng
  • OPSF v3
  • IS-ISv6
  • MP-BGP
Chacun ayant bien sûr ses propres avantages et applications mais cela dépasse l'objet de ce billet déjà fort long.

Pour aller plus loin

Les universitaires français sont impliqués dans IPv6 depuis de nombreuses années et ont déjà une bonne expérience pratique du déploiement d'IPv6. On trouvera donc facilement une documentation abondante, des retours d'expériences et pourquoi pas un coup de main.

Quelques pistes pour démarrer :
  • « Guidelines for the secure deployment of IPv6 » (2,3Mo), en anglais. C'est une véritable bible rédigée par le National Institute of Standards and Technology. Bien qu'à l'état de brouillon (draft), ce document vous servira  de référence.
  • Association G6 dont le but a été de déployer IPv6 sur le réseau national de télécommunications pour la technologie, l'enseignement et la recherche (RENATER).
  • IPv6 Task Force dont le but est de regrouper divers acteurs du monde du réseau afin de sensibiliser et d'aider au déploiement d'IPv6
  • OSIRIS projet de déploiement de l'université de Strasbourg. 
  • Stéphane Bortzmeyer a écrit de nombreuses fiches de lectures en français sur les RFC IPv6
Pour conclure, si vous cherchez un FAI IPv6 en France, Sixxs tiens une liste à jour. C'est peut être le moment de changer d'opérateur ?

samedi 31 juillet 2010

dépoussiérage et découvertes

L'été dernier, ma direction informatique a réalisé un grand remaniement des services, pour ne pas dire une restructuration manu militari d'une organisation qui commençait pourtant à prendre ses marques. C'est là, je pense, un des petits désagréments des très grandes sociétés tout en donnant un petit air de changement à une structure dans laquelle on peut rapidement s'endormir. A l'occasion de ces changements d'habitudes, différents collaborateurs ont été priés de rejoindre leur nouveau service parfois situés dans un autre bâtiment.

Armoires, bibliothèques, frigidaires, tableaux et autres attributs que peuvent constituer un bureau, ont donc été transbahutés et chahutés pendant ces quelques jours. Ce mobilier vaut marque de prestige, voire de pouvoir, et on ne saurait s'en séparer à moins d'en avoir durement négocié toute transaction. Les contenants suivant leurs propriétaires, que pouvait advenir du contenu ? Le bien mobilier sécurisé, il n'était pas indispensable de trimballer quelques centaines de kilogrammes. Ainsi, afin de s'épargner un lumbago, une grande quantité d'archives papiers et de livres se sont retrouvés dans une grande benne louée pour la période de transhumance.

J'ai moi même apporté mes maigres archives, n'usant de l'imprimante qu'avec parcimonie, et j'y ai découvert quelques livres reliés qui ont attiré mon attention. Parmi eux, une série de quatre tomes au titre laissant aussi rêveurs que ses sous-titres. L'ensemble est donc nommé de la logique cablée aux microprocesseurs et les sous-titres sont :
  • Circuits combinatoires et séquentiels fondamentaux
  • Applications directes des circuits fondamentaux
  • Méthodes de conception de systèmes
  • Application des méthodes de synthèse
Ils ont été écrits par des chercheurs du CNET et participeront, vingt-trois ans après leur écriture, à égayer mes vacances estivales.

jeudi 29 juillet 2010

... de la différence entre Bobo et BCBG

« Bourgeois-Bohème » et « bon chic, bon genre » sont des termes désignant deux styles de vie quelque peu différents. On trouvera au moins deux points a ces cadre supérieur : une quête d'assimilation sociale et l'argent.

J'ai finalement découvert deux définitions suffisamment limpides, l'amateur de shadoks que je suis a beaucoup apprécié ce trait d'humour.

Ainsi, d'un coté nous avons le genre :
J'ai de l'argent et je le montre et vous le savez.

De l'autre, c'est :
Je me donne un genre de ne pas avoir d'argent alors que j'en ai beaucoup et vous faites semblant de croire que je n'en ai pas alors que vous savez bien que j'en ai beaucoup!!!

Je laisse au lecteur le soin d'attacher un définition à un style et de débattre en famille ou avec ses collaborateurs du bien fondé du rattachement de l'un à l'autre.