Un barebone/routeur basé sur le Celeron J1900

Un barebone/routeur basé sur le Celeron J1900

Il y a quelques mois, avant de partir en Irlande, il m’a fallu remplacer mon routeur Netgear WNR3500L car il ne suivait plus en terme de bande passante pour internet. Le CPU avait entres autres du mal avec les opérations de NAT. De plus j’ai commencé à également me sentir à l’étroit niveau fonctionnalités.

Cependant, mon départ étant imminent, je devais faire avec les moyens du bord. J’ai donc réemployé mon ancien PC portable du lycée (un i7-3630QM avec 8 Go de RAM) pour en faire un routeur pfSense. J’ai fait en sorte que les câbles ne risquent pas de se barrer durant ces 3 mois, puis je suis parti.

3 mois plus tard, à mon retour, je me suis décidé à partir à la recherche d’une véritable alternative pour mes besoins de routage. Les contraintes ?

  • Un processeur x86 au minimum, le MIPS de mon ancien routeur n’était clairement pas suffisant,
  • « Small form-factor« : quelque chose qui se rapproche de la forme d’un Intel NUC,
  • Pas d’extravagance: je recherchais une machine spécifiquement adaptée à la tâche. Pas un barebone avec 50 ports HDMI et audio pour faire une Set-Top Box, mais plus quelque chose avec un port série et plus de ports Ethernet.
  • Bien dimensionné: pourquoi un i7 lorsqu’un Celeron pourrait suffire à la tâche ?

Une courte recherche sur Amazon m’a donné un résultat pouvant potentiellement me plaire.

Le HAMSING Celeron J1900

Le listing du J1900 sur Amazon

…du moins c’est le nom que je lui donne, car son nom de listing est à mon goût un peu trop descriptif pour être intuitif.

Disponible donc sur Amazon à partir de 157€ (sans frais de ports), ce magnifique barebone chinois se décline notamment en 2 grandes versions: la normale et la « Plus ». La principale différence entre les 2 versions réside en la présence d’un port série et d’un slot SIM (attention pas de modem UMTS/LTE) sur la version Plus. La différence de prix est d’environ 6€.

Ce barebone se veut simple et efficace, la connectique externe est ramenée à l’essentiel:

  • 4 ports Ethernet Intel Gigabit,
  • 1 port d’alimentation 12V,
  • 2 ports USB dont 1 USB3,
  • 1 port VGA,
  • 1 port console « COM ».

Ce produit m’a semblé à première vue être un très bon choix en tant que routeur pfSense. J’ai donc décidé de le commander.

Commande et livraison

Après calculs, il m’était plus rentable de prendre la version Plus à 2Go de RAM et 32 de SSD. pfSense n’occupera que peu des 32 Go de SSD, et en pratique ne consomme que 500Mo de RAM sur les 2Go (mesuré sur mon routeur actuel). Toutefois la consommation en RAM dépend essentiellement du nombre de connexions ouvertes et passant par ce dernier (la state table).

Commandé le 7 juillet, il a mis 17 jours à arriver à ma porte par UPS. Venant très clairement de Chine d’après l’emballage, il a apparemment transité par les Pays-Bas avant d’arriver à ma porte (pourquoi ?). Je précise que l’envoi n’a pas été fait par une tierce personne (donc pas Amazon, pas de livraison Prime).

Emballage du barebone
Ching Chang Chong ?

Unboxing

Unboxing barebone

Nous y trouvons donc dans cette fameuse boite:

  • Le barebone en lui-même,
  • Un transformateur 12V/4A pour l’alimentation,
  • Un magnifique DVD avec pleins de fleurs,
  • Un point de montage VESA (probablement pour accrocher à l’arrière d’un écran),
  • Une feuille de garantie et de « qualité »,
  • Pas de stylo.

Le barebone en lui-même est un petit carré 100% métallique d’un petit kilogramme. Ce boîtier métallique sert visiblement à refroidir le processeur. D’après la description, le refroidissement est 100% passif et ne fait pas de bruit. De plus, ce dernier dispose de toute la connectique précisée précédemment. La construction en elle-même semble assez solide, les ports sont droits, rien n’est tordu. On trouve aussi sur le côté ce qui semble être des trous pour d’éventuelles antennes (il n’y a pas de connecteur cependant, juste des bouchons). Attention cependant à certains bords qui semblent être assez nets pour couper !

Face arrière
Face arrière
Face avant
Face avant

Après quelques recherches, il s’est trouvée que la structure du boîtier est en fait assez standardisée, et que d’autres variations de ce même barebone sont également fabriquées. Seuls changent la connectique et le contenu de la carte.

Un petit mot sur le CD. Assez surprenant, ce magnifique CD à fleurs signé « Banana Digital » est en fait un bon gros DVD de 4.7Go. Les rayures à l’arrière attestent bien d’un média assez rempli. Je suis assez persuadé que ce truc renferme de très belles choses, mais je préfère le laisser de côté pour le moment. D’autant plus qu’il n’y a pas de lecteur CD dans le barebone pour le lire (si jamais il contenait des drivers).

Le DVD inclus
Le DVD inclus

A l’intérieur

Il est temps d’aller voir ce qui se trouve à l’intérieur de cette petite bête. L’ouverture du boîtier est très facile et se résume à 4 vis se trouvant sur la face inférieure du boîtier. Pas de sticker de garantie à arracher.

Les 4 vis du boîtier
Les 4 vis du boîtier

A la découverte du couvercle, on remarque tout de suite ce qu’il est possible d’upgrade sur ce barebone. On y trouve entre autres:

  • Un slot de RAM DDR3L avec une barette de 2Go (comme promis),
  • Un slot pour SSD mSATA (avec un SSD de 32Go, comme promis également),
  • Caché sous le SSD, un slot pour carte SIM,
  • Un slot mini-PCIE (présumé).
L'intérieur du barebone
L’intérieur du barebone

Des points de colle font office de scellé de garantie (du moins je pense). On les retrouve notamment sur les vis qui maintiennent la PCB sur la partie supérieure du boîtier, ainsi que sur la barrette de RAM. Le slot mini-PCIE est vacant pour permettre par la suite l’achat d’un modem UMTS/LTE ou bien d’une carte Wi-Fi.

Le SSD fourni est un SSD mSATA de 32Go de SanDisk. Pas grand chose de plus à dire là-dessus. Les performances de ce dernier m’importe peu au vu de l’utilisation que j’en aurai. Quoique peut-être juste un besoin de durabilité, et encore…

Le SSD SanDisk
Le SSD SanDisk

En-dessous de l’emplacement pour le SSD se trouve un slot pour carte SIM. Je n’ai aucune idée sur la manière dont ce dernier fonctionne au niveau système. Cependant je suis certain que la carte ne contient pas de modem GSM/UMTS/LTE. A coupler probablement avec un modem à rajouter sur le slot mini-PCIE. A noter que les 2 connecteurs ont le même format, ce qui pourrait induire en erreur si le marquage « MSATA » n’était pas présent.

L'emplacement SSD et mSATA.
L’emplacement SSD et mSATA.

Concernant le refroidissement, celui-ci est donc entièrement passif et repose sur un petit radiateur collé au reste du boîtier qui doit faire aussi office de radiateur par conduction. Je ne peux donc pas désolidariser la carte sans devoir casser ce système. Toutefois j’ai essayé de prendre 2/3 photos pour voir à quoi ressemble cet intérieur.

Vue de l'intérieur à contre-jour
Vue de l’intérieur à contre-jour (tentative)
Le radiateur collé à la structure
Le radiateur collé au reste de la structure (excusez la qualité)

Premier démarrage

A ma grande surprise, l’engin a directement démarré sur un Windows 7 Ultimate 32 bits (malgré que le CPU supporte du 64 bits). Il n’y avait pas de POST (ou du moins un très rapide), ce qui indique probablement un BIOS UEFI. Arrivé sur Windows 7, je suis directement tombé sur une session « admin », il n’y avait pas d’écran de premier démarrage. Tous les drivers étaient déjà préinstallés. A première vue aucun autre logiciel superflu n’était installé. Windows n’avait pas de licence, donc je suis directement tombé sur un écran « Activez Windows ».

Windows 7 n'est pas authentique
oops

Il m’aura fallu redémarrer et spam le bouton Delete pour pouvoir accéder au BIOS. Ce dernier est bien plus complet que ce que j’ai pu voir, et supporte effectivement l’UEFI.

BIOS Barebone

BIOS du barebone
Pas mal d’options, mieux vaut éviter de toucher

Il existe cependant une partie qui m’a pas mal interpellée, la « Serial Port Console Redirection ». Cette partie du BIOS permet de renvoyer la sortie VGA vers le port série, afin d’avoir quelque chose de vraiment « headless ». Option désactivée par défaut, il est toutefois possible de l’activer et d’obtenir l’accès au BIOS et au processus de POST par le port série. A noter que l’affichage de l’OS sur ce port série dépend essentiellement de la manière dont l’OS est configuré. Elle ne dépend pas de l’option citée.

Option d'activation du port série
Option d’activation du port série
Configuration du port série
Configuration du port série

Après un reboot, il devient donc possible de configurer le BIOS exclusivement par série. Pour ceux qui auraient un doute, le câble console Cisco (le bleu) est parfaitement utilisable sur ce barebone. Gardez de préférence la fenêtre de la console à la taille 80×24 pour éviter des problèmes de formatage.

Serial vs VGA
yea boi
Branchement console
« C’est quoi l’IP du port console ? »

Quelques tests

Cet article n’a pas pour vocation à faire un comparatif avec d’autres routeurs. J’ai juste souhaité exposer ici quelques indicateurs que j’aurai moi-même souhaité avoir avant l’achat de ce matos. J’ai donc booté un Ubuntu Live afin de réaliser ces quelques tests avant d’y installer définitivement pfSense.

Le test du NAT

Je suis pour ce test allé au plus simple: ma question était de voir comment le routeur suit au niveau des opérations de routage/NAT. NetworkManager dispose d’un mode « partage de connexion » pour partager l’accès à internet sur d’autres interfaces. J’ai donc utilisé cette fonctionnalité ainsi que iperf afin de mesurer la bande passante que le barebone est capable de faire passer. Les tests se sont déroulés sur un LAN gigabit.

Test de référence: test en direct

iperf direct

Seul un petit switch sépare les 2 machines. Sinon pas grand chose à dire, nous avons donc une bande passante annoncée par iperf de 933 Mbits/s entre le client et le serveur.

Le test du NAT: barebone en tant que routeur

iperf par NAT

En 10 secondes de speedtest, la perte engendrée par le barebone est presque inexistante. De plus malgré son petit CPU, les graphes d’utilisation sont à plat. En fait les terminaux graphiques consomment plus de CPU que les opérations de NAT. Étonnant ?.

Utilisation CPU en routage
Bande passante (iftop) vs utilisation CPU (nmon)

Edit 27/07/2017: J’ai quand même pas mal douté du fait que le CPU ne soit quasiment pas sollicité pour 1 Gbit/s de NAT. Mes doutes se sont confirmés après l’installation de pfSense et après avoir refait un coup d’iperf.

En affichant l’activité système de pfSense lors d’un iperf, on constate bien que le système peut hog jusqu’à 100% d’un coeur pour faire du NAT à 1 Gigabit. Mis en perspective ce n’est toujours qu’un seul cœur sur 4 occupé pour mettre au taquet 2 interfaces. Cela reste largement raisonnable.

De plus il semblerait que la bande passante ne soit pas consistent. Ce problème a également été mis en évidence dans cet article (partie Homebrew 2.0 – pfSense 2.3.1) et semble être du à pfSense lui-même. Les performances restent cependant très acceptables.

Bande passante inconsistant
Bande passante inconsistant
iperf à 800 Mbits/s au lieu de 900
iperf à 800 Mbits/s au lieu de 900

La cryptographie

Déjà petit point négatif: le CPU ne dispose pas des instructions AES-NI. Mais bon vu le type de CPU dont il s’agit, rien de vraiment étonnant. Il faudra donc se contenter du processeur pour les opérations de cryptographie.

Afin de tester le VPN, j’ai décidé de m’appuyer sur une configuration typique: une instance d’OpenVPN point-à-point. Le serveur correspond au barebone et le client un PC portable muni d’un processeur suffisamment véloce pour ne pas avoir besoin de le faire rentrer en ligne de compte dans les tests. Les 2 hôtes tournent sur le même LAN gigabit comme précédemment. Je teste ici 3 ciphers différents (les plus courants): l’AES-256, 128 et Blowfish.

Voici la configuration du tunnel:

AES-256-CBC

En AES-256, le barebone parvient à chiffrer à environ 100 Mbits/s et à déchiffer à 176 Mbits/s. Je dispose chez moi d’une connexion de 200 Mbits/s. Je n’utilise le VPN d’une manière générale que pour faire transiter des informations de « signalisation ». Pas de quoi générer plus de 100 Mbits/s.

AES-128-CBC

L’AES-128 est une version « downgraded » de l’AES-256. On gagne par rapport à ce dernier environ +10 Mbits/s dans les deux sens. Pas forcément très rentable d’un point de vue rapport sécurité/bande passante, sauf si 10 Mbits/s vous importe (et que vous avez la connexion en conséquence).

BF-CBC

Malgré que ce cipher soit vulnérable à SWEET32, il reste encore utilisé dans certaines configurations VPN. Ce dernier peut rester pas mal pour être utilisé sur des réseaux « de confiance » ou bien en circuit fermé (RPN d’Online, communications intra-AS, etc) dans le cas où ces +50 Mbits/s par rapport à l’AES-256 vous importe. A vous de voir.

Points pratiques

Je vais mettre ici au fur et à mesure quelques points et bidouillages utiles avec ce barebone.

Les températures

pfSense n’affiche pas de base la température du processeur. Il faut pour corriger cela rajouter une option dans /boot/loader.conf.local:

et redémarrer le système. Si vous êtes un peu plus pressé, vous pouvez aussi faire kldload coretemp et pouvoir ainsi utiliser les températures tout de suite. Pour afficher les températures directement dans la console, vous pouvez faire sysctl -a | grep temperature.

En pratique, la température du processeur ne monte pas au-dessus de 55°C en charge, ce qui est très raisonnable.

trim SSD

Le support de trim n’est pas activé par défaut sur pfSense. Il faut suivre les instructions données ici afin de pouvoir l’activer.

En conclusion

Je vais bientôt mettre en production ce petit joujou, et avoir l’occasion de le tester sur la durée. En tous cas à première vue le matériel semble assez solide. A voir sur la durée maintenant. J’espère avoir fait le tour de cet engin et avoir donné quelques indicateurs sur ses capacités et performances. Je suis toujours ouvert à d’autres suggestions de benchmark.

Bonus: l’énumération complète du matériel

Voici quelques commandes détaillant ce qui se trouve à l’intérieur de ce barebone.

lscpu

lspci

lshw

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *