<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Antoine Benkemoun &#187; Etudes</title>
	<atom:link href="http://www.antoinebenkemoun.fr/category/etudes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antoinebenkemoun.fr</link>
	<description>Sécurité informatique, Virtualisation, Administration système et Réseaux</description>
	<lastBuildDate>Wed, 07 Jul 2010 00:11:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Les domaines Xen : les domaines non privilégiés</title>
		<link>http://www.antoinebenkemoun.fr/2010/01/les-domaines-xen-les-domaines-non-privilegies/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/01/les-domaines-xen-les-domaines-non-privilegies/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 10:22:15 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Xen]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[TX]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=826</guid>
		<description><![CDATA[Aller hop on se motive ! Pour mon avant-dernier jour de stage chez Orange Business Services, je vais faire la suite du précédent article sur les domaines Xen. J&#8217;avais eu l&#8217;occasion de détailler les spécificités du domaine privilégié, plus communément connu sous le nom de dom0.
Si vous n&#8217;êtes pas familier avec le vocabulaire spécifique à [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/06/Xen_logo.png"><img class="alignleft size-full wp-image-99" title="Xen_logo" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/06/Xen_logo.png" alt="" width="230" height="102" /></a>Aller hop on se motive ! Pour mon avant-dernier jour de stage chez Orange Business Services, je vais faire la suite du <a href="http://www.antoinebenkemoun.fr/2009/12/les-domaines-xen-le-domaine-privilegie/">précédent article</a> sur les domaines Xen. J&#8217;avais eu l&#8217;occasion de détailler les spécificités du domaine privilégié, plus communément connu sous le nom de dom0.</p>
<p>Si vous n&#8217;êtes pas familier avec le vocabulaire spécifique à Xen, je vous renvois vers l&#8217;article traitant de la <a href="http://www.antoinebenkemoun.fr/2009/09/terminologie-xen/">terminologie</a> Xen. Si vous ne connaissez pas bien le projet Xen, je vous renvois vers la <a href="http://www.antoinebenkemoun.fr/2009/06/cest-quoi-xen/">présentation</a> de ce projet.</p>
<h3>Domaine non privilégié : domU</h3>
<p>Les domaines non privilégiés sont communément appelés &laquo;&nbsp;domU&nbsp;&raquo; (U comme unprivileged). Les domU sont l&#8217;équivalent des systèmes d&#8217;exploitation invités sur les plateformes de virtualisation classiques. Concrètement, ce sont les machines virtuelles qui s&#8217;exécuteront sur votre plateforme Xen. Ces systèmes d&#8217;exploitation s&#8217;installent une fois que vous avez un hyperviseur et un dom0 fonctionnel. Il existe de nombreux outils vous permettant d&#8217;installer des domU de manière plus ou moins simple et rapide.</p>
<p>Comme vous le savez surement, Xen est capable de faire de la paravirtualisation mais aussi de la virtualisation matérielle assistée. A chacun de ces types de virtualisation correspond un type de domaine non privilégié. Les domU de paravirtualisation sont appelés &laquo;&nbsp;domU standards&nbsp;&raquo; et les domU de virtualisation matérielle assistée sont appelés &laquo;&nbsp;domU HVM&nbsp;&raquo;. L&#8217;acronyme HVM signifie &laquo;&nbsp;Hardware-Assisted Virtual Machine&nbsp;&raquo;.</p>
<h3>domU de paravirtualisation : domU standard</h3>
<p>Nous allons tout d&#8217;abord nous intéresser aux domU dits &laquo;&nbsp;standards&nbsp;&raquo;. Les domU de paravirtualisation sont considérés standards car il s&#8217;agit des premiers domU qui ont été disponibles pour Xen et les seuls jusqu&#8217;à la version 3.0. Ceci s&#8217;explique par le fait que la paravirtualisation est la raison d&#8217;être du projet Xen et ce qui en a fait un projet inédit.</p>
<p>Du fait qu&#8217;il s&#8217;agisse de domU de paravirtualisation, il est nécessaire que l&#8217;OS de chaque domU standard ait été adapté pour l&#8217;hyperviseur Xen. Ceci se fait par le biais d&#8217;API spécifiques supportant les hypercalls. De très nombreux systèmes d&#8217;exploitation peuvent être placés en tant que domU par dessus Xen. Tous les Linux sont compatibles ainsi que certains BSD et OpenSolaris.</p>
<h3>domU de virtualisation matérielle assistée : domU HVM</h3>
<p>Lorsqu&#8217;un système d&#8217;exploitation n&#8217;a pas été adapté pour Xen, il est nécessaire de recourir à une technique de virtualisation plus classique. Il s&#8217;agit bien évidemment de la virtualisation matérielle assistée. Ce type de domU permet à Xen de supporter la quasi totalité des systèmes d&#8217;exploitation existants pour l&#8217;architecture x86.</p>
<p>Le module utilisé par Xen pour effectuer les opérations de virtualisation matérielle assistée est le module QEMU. La contre partie des domU HVM est une perte de performances plus importante que dans le cas d&#8217;un domU standard. Ceci s&#8217;explique par le fait qu&#8217;il est nécessaire d&#8217;effectuer beaucoup plus d&#8217;opérations d&#8217;émulation.</p>
<h3>Rôle des domU et délégation de périphériques</h3>
<p>Les domU n&#8217;ont pas de rôle spécifique au niveau de la plateforme de virtualisation. Ils servent juste à exécuter les diverses applications qui sont contenues dans leurs systèmes d&#8217;exploitation. Il ne leur est accordé, par défaut, aucun privilège au niveau des ressources physiques. L&#8217;hyperviseur leur attribue une partie des ressources dynamiquement et les domU les utilisent ou pas en fonction de leurs besoins.</p>
<p>De plus, il est tout de même possible d&#8217;accorder quelques priviléges spécifiques aux domU. Ces privilèges spécifiques se matérialisent par la délégation de périphériques. Par exemple, il est possible de donner accès exclusif à un port USB ou PCI à un domU. Ceci va lui permettre de pouvoir utiliser un composant physique comme il le souhaite. Il y a eu des exemples de cartes graphiques déléguées à un domU permettant de jouer à un jeu 3D dans le domU. Notons tout de même que la délégation de périphérique à un domU restreint totalement sa mobilité entre plusieurs hyperviseurs ce qui peut être handicapant.</p>
<p>Au final, cette article présente les spécificités des domU. J&#8217;espère avoir été clair et compréhensible. Si ce n&#8217;est pas le cas, vous avez toujours la possibilité de laisser un commentaire pour me le signaler. En ce qui concerne la suite des événements, je suis encore indécis sur les sujets que je vais traiter. Cela devrait varier en fonction de mon prochain emploi. De toute manière, je souhaiterais parler plus des réseaux de stockage et du stockage en général.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/01/les-domaines-xen-les-domaines-non-privilegies/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Les domaines Xen : le domaine privilégié</title>
		<link>http://www.antoinebenkemoun.fr/2009/12/les-domaines-xen-le-domaine-privilegie/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/12/les-domaines-xen-le-domaine-privilegie/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 13:49:54 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Xen]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=802</guid>
		<description><![CDATA[Cela fait désormais un bon bout de temps que je n&#8217;ai pas eu l&#8217;occasion de vous parler de Xen. Lors du dernier article sur ce sujet, nous avions surtout parlé de configuration réseau. J&#8217;aurais peut être l&#8217;occasion d&#8217;en reparler par la suite, nous verrons bien.
J&#8217;ai déjà eu l&#8217;occasion de vous parler des domaines Xen à [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-99" title="Xen_logo" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/06/Xen_logo.png" alt="Xen_logo" width="230" height="102" />Cela fait désormais un bon bout de temps que je n&#8217;ai pas eu l&#8217;occasion de vous parler de <a href="http://www.antoinebenkemoun.fr/category/xen/">Xen</a>. Lors du <a href="http://www.antoinebenkemoun.fr/2009/10/la-configuration-reseau-de-xen/">dernier article</a> sur ce sujet, nous avions surtout parlé de configuration réseau. J&#8217;aurais peut être l&#8217;occasion d&#8217;en reparler par la suite, nous verrons bien.</p>
<p>J&#8217;ai déjà eu l&#8217;occasion de vous parler des domaines Xen à plusieurs occasions sur ce blog. J&#8217;ai défini la notion dans l&#8217;article sur la <a href="http://www.antoinebenkemoun.fr/2009/09/terminologie-xen/">terminologie</a> Xen. Dans ce billet je vais essayer d&#8217;élaborer un petit plus sur ce sujet en détaillant un peu plus les interactions entre le domaine privilégié et le matériel.</p>
<h3>Domaine privilégié : dom0</h3>
<p>Le domaine privilégié ou dom0 est le système d&#8217;exploitation &laquo;&nbsp;visible&nbsp;&raquo; d&#8217;une installation Xen. Il s&#8217;agit du système d&#8217;exploitation que l&#8217;on installe avant d&#8217;installer l&#8217;hyperviseur. Pour rappel, cela ne veut pas dire que l&#8217;hyperviseur est au desssus du dom0 car il est bien en dessous. Vous pouvez le vérifier au démarrage, car on voit bien que Xen s&#8217;exécute avant la distribution du dom0.</p>
<p>Le domaine privilégié est un domaine exceptionnellement sensible. Il s&#8217;agit du domaine qui va avoir accès à toutes les ressources physiques auxquelles l&#8217;hyperviseur n&#8217;aura pas l&#8217;accès exclusif. L&#8217;hyperviseur n&#8217;a un accès exclusif au processeur et à la mémoire. Tout le reste relèvera donc de la compétence du dom0. Ceci inclut donc tout particulièrement les supports de stockage. Le dom0 a donc accès à toutes les données de votre hyperviseur, il est donc indispensable de le sécuriser.</p>
<h3>Le rôle du domaine privilégié</h3>
<p>En ce qui concerne le rôle du dom0, il est essentiellement de gérer les supports de stockage, les périphériques éventuels ainsi que les éventuels interfaces d&#8217;administration. Il n&#8217;est pas souhaitable de lui attribuer plus de rôles que cela. Il est cependant indispensable de lui allouer des ressources physiques convenables. Etant donné que la gestion de support de stockage fait partie de sa compétence, il est nécessaire qu&#8217;il se voit attribuer suffisamment de mémoire vive afin de pouvoir constituer un cache performant.</p>
<p>L&#8217;hyperviseur attribue par défaut tous les périphériques au domaine privilégié. Certaines configurations spécifiques peuvent nécessiter de rendre accessible un périphérique à une machine virtuelle. Ces configurations sont relativement compliquées à mettre en place dans un contexte de haute disponibilité avec migration à chaud. Ceci s&#8217;explique habituellement par le simple fait que le périphérique ne peut être branché sur un seul serveur à la fois. Des solutions d&#8217;USB sur IP sont plus simples. Il reste cependant possible d&#8217;effectuer une délégation de périphérique vers un domaine non privilégié. Il y a déjà eu des exemples de délégation de cartes graphique permettant de jouer à des jeux 3D dans des domaines non privilégiés.</p>
<h3>Interface avec les autres domaines</h3>
<p>Les autres domaines vont accéder aux ressources relevant de la compétence du dom0 via des pilotes génériques de périphérique. Ces pilotes génériques permettent de maximiser la compatibilité et d&#8217;éviter les différences entre les différentes plateformes Xen. L&#8217;intérêt des pilotes génériques est immédiat dans le cas de la migration à chaud où la standardisation des environnements est primordiale.</p>
<p>Le schéma suivant récapitule très bien toutes ces interactions.</p>
<p style="text-align: center;"><img class="size-full wp-image-805 aligncenter" title="Capture d’écran 2009-12-14 à 14.39.27" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/12/Capture-d’écran-2009-12-14-à-14.39.27.png" alt="Capture d’écran 2009-12-14 à 14.39.27" width="335" height="303" /></p>
<p>Au final, je pense avoir fait une présentation plutôt détaillée du domaine privilégié. Si vous avez des questions ou des remarques, n&#8217;hésitez pas, les commentaires sont faits pour cela. Dans un prochain article, j&#8217;évoquerais plus en détail les domaines non privilégiés.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/12/les-domaines-xen-le-domaine-privilegie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Barcamp ce Samedi à Troyes</title>
		<link>http://www.antoinebenkemoun.fr/2009/11/barcamp-lors-de-lutt-lan-session-a-troyes-samedi/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/11/barcamp-lors-de-lutt-lan-session-a-troyes-samedi/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 13:45:26 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Evénement]]></category>
		<category><![CDATA[Humeur]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=747</guid>
		<description><![CDATA[Je vais faire un petit billet de publicité pour un événement auquel je vais participer ce weekend. Il s&#8217;agit d&#8217;un barcamp. Pour ceux qui ne connaissent pas le principe du barcamp, il s&#8217;agit d&#8217;une rencontre entre passionnés de diverses technologies où chacun présente un sujet de son choix.
Un barcamp aura donc lieu à la Halle [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-748" title="barcamp_icon_final" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/11/barcamp_icon_final.png" alt="barcamp_icon_final" width="120" height="120" />Je vais faire un petit billet de publicité pour un événement auquel je vais participer ce weekend. Il s&#8217;agit d&#8217;un barcamp. Pour ceux qui ne connaissent pas le principe du barcamp, il s&#8217;agit d&#8217;une rencontre entre passionnés de diverses technologies où chacun présente un sujet de son choix.</p>
<p>Un barcamp aura donc lieu à la Halle Sportive de l&#8217;<a href="http://www.utt.fr">Université de technologie de Troyes</a> ce Samedi à partir de 17 heures. Il aura lieu en marge de l&#8217;<a href="http://www.uttlansession.org">Utt Lan Session</a> qui est une LAN Party organisée par l&#8217;<a href="http://www-etu.utt.fr">Utt Net Group</a>. Il devrait durer jusqu&#8217;à 22 heures environ. Une pause pour manger est prévue afin de pouvoir reposer vos neurones.</p>
<p>En ce qui me concerne, j&#8217;aurais l&#8217;occasion de vous faire une présentation &laquo;&nbsp;tour d&#8217;horizon&nbsp;&raquo; sur les réseaux de stockage. Vous pourrez également participer à de nombreuses autres présentations parmi les suivantes :</p>
<ul>
<li>VBA</li>
<li>SOAP</li>
<li>OpenID &amp; OAuth</li>
<li>OpenPGP</li>
<li>LDAP</li>
<li>CNIL</li>
<li>Trap your process</li>
</ul>
<p>N&#8217;hésitez pas à venir faire un tour et nous rencontrer ce weekend à Troyes. Vous trouverez toutes les infos nécessaires par rapport à cette manifestation sur le site de l&#8217;<a href="http://www.uttlansession.org/index.php?content=infos">ULS</a>.</p>
<p><strong>Récapitulatif</strong></p>
<ul>
<li><strong>Quoi ? </strong>Un barcamp</li>
<li><strong>Quand ? </strong>Samedi 28 Novembre à partir de 17h jusqu&#8217;à 22h</li>
<li><strong>Où ?</strong> A la Halle Sportive de l&#8217;Université de technologie de Troyes</li>
<li><strong>Pour qui ? </strong>Tout le monde qui souhaite partager avec nous</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/11/barcamp-lors-de-lutt-lan-session-a-troyes-samedi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nouvelle classification des types de virtualisation</title>
		<link>http://www.antoinebenkemoun.fr/2009/10/classification-des-types-de-virtualisation-mise-a-jour/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/10/classification-des-types-de-virtualisation-mise-a-jour/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 09:35:37 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Classification]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[TX]]></category>
		<category><![CDATA[Types]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=670</guid>
		<description><![CDATA[J&#8217;ai déjà eu l&#8217;occasion de proposer une classification des différents types de virtualisation lors d&#8217;un précédent article sur ce blog. Lors de ce précédent article, je m&#8217;étais attaché à classifier les solutions de virtualisation de systèmes d&#8217;exploitation. Je propose par le biais de cet article de re-préciser cette classification en y intégrant d&#8217;autres types de [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-225" title="tech-presentation-2" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/07/tech-presentation-2.gif" alt="tech-presentation-2" width="174" height="155" />J&#8217;ai déjà eu l&#8217;occasion de proposer une classification des différents types de virtualisation lors d&#8217;un <a href="http://www.antoinebenkemoun.fr/2009/07/les-differents-types-de-virtualisation-classification/">précédent article</a> sur ce blog. Lors de ce précédent article, je m&#8217;étais attaché à classifier les solutions de virtualisation de systèmes d&#8217;exploitation. Je propose par le biais de cet article de re-préciser cette classification en y intégrant d&#8217;autres types de virtualisation et en reprenant en partie le précédent.</p>
<p>Tout d&#8217;abord, il sera essentiel de s&#8217;interroger sur ce que nous allons virtualiser car il est possible de virtualiser bon nombre de composants applicatifs. J&#8217;utiliserais le terme de composant applicatif pour désigner tout ce qui n&#8217;est pas matériel. Ce terme inclura donc les systèmes d&#8217;exploitation en globalité ou en partie aussi bien que les applications spécifiques. Ensuite, je proposerais un arbre de classification complété par rapport à la première version de cet article. Je rappellerais au passage les appellations correspondantes aux différents types de virtualisation.</p>
<p><strong>Note : </strong>Cet article a été publié le 28 Octobre dans une version simplifiée sur le <a href="http://blogs.orange-business.com/virtualisation/2009/10/classification-des-solutions-de-virtualisation.html">blog Virtualisation</a> d&#8217;Orange Business ServiceS.</p>
<h3>On virtualise quoi ?</h3>
<p>Tout d&#8217;abord, il est essentiel de se poser la question « Que virtualise-t&#8217;on ? ». Il est possible de virtualiser beaucoup de choses de nos jours. Un début de liste comporterait des routeurs, des switchs, des applications, des systèmes d&#8217;exploitation, de l&#8217;espace disque et ainsi de suite.</p>
<p>Nous allons distinguer trois familles de virtualisation : réseaux, systèmes d&#8217;exploitation et processus. Ces trois types constitueront le premier étage de notre arbre de classification.</p>
<h3>On virtualise comment ?</h3>
<p>Nous avons donc effectué une première discrimination basée sur le composant applicatif que nous allons virtualiser afin d&#8217;établir le premier étage de notre arbre de classification. Nous allons ensuite établir le second étage de cet arbre.</p>
<p>Nous allons ensuite associer à chaque composant applicatif les différents types de virtualisation correspondants. En ce qui concerne les systèmes d&#8217;exploitation, nous ajouterons une distinction importante qui est la modification ou non du système d&#8217;exploitation invité. Un système d&#8217;exploitation invité est un système d&#8217;exploitation qui s&#8217;exécute par dessus une couche de virtualisation spécifique.</p>
<p>Voici donc l&#8217;arbre de classification que je propose :</p>
<p style="text-align: center;"><img class="size-full wp-image-677 aligncenter" title="schema_classification_small" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/10/schema_classification_small1.png" alt="schema_classification_small" width="483" height="226" /></p>
<p>Le premier type de virtualisation présent dans cet arbre est la virtualisation d&#8217;équipements réseaux. Il aurait été possible d&#8217;inclure la virtualisation de réseaux. Ceci a été exclu de cette classification car il ne s&#8217;agit que d&#8217;un mécanisme de commutation spécifique. Ce type de virtualisation permet de créer des environnements réseaux spécifiques et cloisonnés de bout en bout. Les solutions existantes dans ce domaine sont les produits <a href="http://www.cisco.com/en/US/products/ps9402/">Nexus</a> de Cisco et le futur <a href="http://www.chriswolf.com/?p=362">switch virtuel</a> de Citrix.</p>
<p>Dans la catégorie des systèmes d&#8217;exploitation, nous avons choisi de distinguer les systèmes d&#8217;exploitation modifiées et non modifiées. Les modifications en question sont les modifications du noyau nécessaire à l&#8217;exécution du système d&#8217;exploitation par dessus une couche de virtualisation spécifique.</p>
<p>La virtualisation de système d&#8217;exploitation modifiés est la paravirtualisation. Ce terme a tendance à être utilisé de nombreuses manières différentes. La paravirtualisation est la virtualisation de systèmes d&#8217;exploitation dont le noyau a été modifié pour communiquer avec la couche de virtualisation au lieu de communiquer avec le matériel physique. Pour résumer, la système d&#8217;exploitation va avoir conscience d&#8217;être virtualisé et sera adapté à cet effet. L&#8217;ajout de simple drivers spécifique n&#8217;implique pas forcément paravirtualisation. Les solutions existantes dans ce domaine sont les produits <a href="http://www.citrix.com/English/ps2/products/feature.asp?contentID=1686939">XenServer</a> de Citrix, <a href="http://www.sun.com/software/products/opscenter/">xVM</a> de Sun, <a href="http://www.xen.org">XenSource</a> voire <a href="http://www.microsoft.com/hyper-v-server/">Hyper-V</a> de Microsoft. VMWare commence à se lancer dans cette technologie prudemment. Si vous souhaitez en savoir plus sur la paravirtualisation, je vous laisse consulter l&#8217;article sur la <a href="http://www.antoinebenkemoun.fr/2009/08/la-paravirtualisation/">paravirtualisation</a>.</p>
<p>En ce qui concerne les systèmes d&#8217;exploitation non-modifiés, nous distinguerons deux types de virtualisation : la virtualisation totale et la virtualisation matériel assistée. La virtualisation totale est la virtualisation &laquo;&nbsp;primitive&nbsp;&raquo; qui consiste à émuler le matériel physique ainsi que son comportement. Il s&#8217;agit de l&#8217;approche la plus couteuse mais la plus simple à mettre en oeuvre. La virtualisation matériel assisté est une extension du principe de virtualisation totale. Cette extension se matérialise par l&#8217;utilisation des extensions processeur spécifiques à la virtualisation (AMD-V et Intel-VT). Ces extensions permettent d&#8217;accélérer la virtualisation par différents mécanismes. Les solutions utilisant cette technologie sont <a href="http://www.vmware.com">VMWare</a>, <a href="http://www.virtualbox.org/">Virtualbox</a> de Sun, <a href="http://www.microsoft.com/france/windows/xp/virtualpc/default.mspx">Virtual PC</a> de Microsoft, <a href="http://www.qemu.org/">QEMU</a> et bien d&#8217;autres.</p>
<p>Au niveau de la virtualisation de processus, nous retrouvons deux types de virtualisation : la virtualisation au niveau du système d&#8217;exploitation et la virtualisation d&#8217;application. La virtualisation au niveau du système d&#8217;exploitation consiste à faire croire à plusieurs jeux de processus qu&#8217;ils s&#8217;exécutent dans différents systèmes d&#8217;exploitation alors que ce n&#8217;est pas le cas. Les solutions utilisant cette technique sont les zones Solaris, les chroot Linux, les jails BSD, OpenVZ et bien d&#8217;autres. La virtualisation d&#8217;application consiste à livrer des applications non installées sur un poste par un serveur. Les solutions utilisant cette technique sont <a href="http://www.citrix.fr/Produits_et_Solutions/Produits/XenApp/">XenApp</a> de Citrix ou VMWare <a href="http://www.vmware.com/products/thinapp/">Thinapp</a>.</p>
<p>Au final, je pense que cette classification est plus complète que la précédente que j&#8217;avais eu l&#8217;occasion de présenter. Elle inclut notamment la virtualisation d&#8217;application et la virtualisation d&#8217;équipements réseaux. Cette classification reste une proposition et il est tout à fait possible de proposer une classification sous un autre angle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/10/classification-des-types-de-virtualisation-mise-a-jour/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Les mystères de la commande ping</title>
		<link>http://www.antoinebenkemoun.fr/2009/10/les-mysteres-de-la-commande-ping/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/10/les-mysteres-de-la-commande-ping/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:00:45 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=614</guid>
		<description><![CDATA[Je vais faire une petite parenthèse dans ce billet sur la commande ping. Vous allez me dire que vous connaissez déjà bien la commande ping, ce dont je ne doute pas. Elle sert habituellement à vérifier la connectivité réseau d&#8217;une machine sur un réseau ou à travers plusieurs réseaux. Mais connaissez-vous complètement cette commande ?
A [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-641" title="pong" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/10/pong-300x235.jpg" alt="pong" width="168" height="132" />Je vais faire une petite parenthèse dans ce billet sur la commande ping. Vous allez me dire que vous connaissez déjà bien la commande ping, ce dont je ne doute pas. Elle sert habituellement à vérifier la connectivité réseau d&#8217;une machine sur un réseau ou à travers plusieurs réseaux. Mais connaissez-vous complètement cette commande ?</p>
<p>A travers une erreur de frappe, je me suis retrouvé à découvrir quelques &laquo;&nbsp;mystères&nbsp;&raquo; par rapport à cette commande. Je tiens à remercier mon collègue Laurent et son erreur de frappe qui nous a permis de découvrir ces &laquo;&nbsp;mystères&nbsp;&raquo;. Ils ont été testés sur Windows XP et Linux.</p>
<p>L&#8217;utilisation habituelle de la commande ping ressemble à la commande suivante et vous donne le résultat indiqué.</p>
<blockquote><p>root@serveur:~ # ping 10.2.0.10</p>
<p>PING 10.2.0.10 (10.2.0.10): 56 data bytes</p>
<p>64 bytes from 10.2.0.10: icmp_seq=0 ttl=255 time=0.173 ms</p>
<p>64 bytes from 10.2.0.10: icmp_seq=1 ttl=255 time=0.134 ms</p>
<p>&#8212; 10.2.0.10 ping statistics &#8212;</p>
<p>2 packets transmitted, 2 packets received, 0% packet loss</p>
<p>round-trip min/avg/max/stddev = 0.134/0.153/0.173/0.000 ms</p></blockquote>
<h3>Premier mystère</h3>
<p>Vous avez déjà surement fait des fautes de frappe en tapant cette commande, mais avez-vous déjà regardé le résultat que cela produit ? Voici un exemple du ping vers l&#8217;IP 10.2.017.</p>
<blockquote><p>root@serproxy01:~ # ping 10.2.017</p>
<p>PING 10.2.017 (10.2.0.15): 56 data bytes</p>
<p>64 bytes from 10.2.0.15: icmp_seq=0 ttl=255 time=0.824 ms</p>
<p>64 bytes from 10.2.0.15: icmp_seq=1 ttl=255 time=0.525 ms</p>
<p>&#8212; 10.2.017 ping statistics &#8212;</p>
<p>2 packets transmitted, 2 packets received, 0% packet loss</p>
<p>round-trip min/avg/max/stddev = 0.525/0.674/0.824/0.150 ms</p></blockquote>
<p>On pourrait s&#8217;attendre à ce que la commande ping nous retourne un erreur. La syntaxe de l&#8217;écriture de l&#8217;adresse IP que nous avons saisie est cependant mauvaise&#8230; Vous pouvez essayer avec n&#8217;importe quelle IP, cela fonctionne de manière similaire. Nous voyons qu&#8217;un ping vers la 10.2.017 effectue en réalité un ping vers l&#8217;adresse 10.2.0.15. Un ping vers l&#8217;adresse 10.2.0.15 aurait été tout à fait logique mais ce n&#8217;est pas le cas. Quel est donc le lien entre 10.2.017 et 10.2.0.15 ? Je vous laisse essayer avec différentes IP afin d&#8217;essayer de trouver le lien logique.</p>
<h4>Explication</h4>
<p>Vous avez trouvé ? J&#8217;espère bien. Les plus futés d&#8217;entre vous auront remarqué que 017 correspond à 15 en base 8 ou octal. Pour la petite explication :</p>
<blockquote><p>0 x 64 + 1 x 8 + 7 x 1 = 8 + 7 = 15.</p></blockquote>
<h3>Second mystère</h3>
<p>Nous avons donc réussi à percer ce premier mystère. Alors que nous étions en train de chercher la solution au premier, nous avons rencontrer une seconde bizarrerie. Essayez la commande <em>ping 10.3.2947</em> et remarquez le résultat produit.</p>
<blockquote><p>D:\Documents and Settings\Administrateur&gt;ping 10.3.2947</p>
<p>Envoi d&#8217;une requête &#8216;ping&#8217; sur 10.3.11.131 avec 32 octets de données :</p>
<p>Réponse de 10.3.11.131 : octets=32 temps&lt;1ms TTL=128</p>
<p>Statistiques Ping pour 10.3.11.131:</p>
<p>Paquets : envoyés = 1, reçus = 1, perdus = 0 (perte 0%),</p>
<p>Durée approximative des boucles en millisecondes :</p>
<p>Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms</p></blockquote>
<p>Dans la même veine, nous pouvons essayer la commande <em>ping 10.199449</em> et observer le résultat.</p>
<blockquote><p>D:\Documents and Settings\Administrateur&gt;ping 10.199449</p>
<p>Envoi d&#8217;une requête &#8216;ping&#8217; sur 10.3.11.25 avec 32 octets de données :</p>
<p>Réponse de 10.3.11.25 : octets=32 temps&lt;1ms TTL=128</p>
<p>Réponse de 10.3.11.25 : octets=32 temps=1 ms TTL=128</p>
<p>Statistiques Ping pour 10.3.11.25:</p>
<p>Paquets : envoyés = 2, reçus = 2, perdus = 0 (perte 0%),</p>
<p>Durée approximative des boucles en millisecondes :</p>
<p>Minimum = 0ms, Maximum = 1ms, Moyenne = 0ms</p></blockquote>
<p>Après le premier mystère, on commence à comprendre que la commande ping agit selon une logique étrange. Vous remarquerez qu&#8217;il ne s&#8217;agit plus, cette fois-ci, de base 8. Une fois de plus, cela fonctionne avec n&#8217;importe quelle IP formatée selon ce mode. On voit facilement qu&#8217;on n&#8217;est plus en base 8 car le chiffre 9 ne nous renvoie pas d&#8217;erreur particulière. Je laisse chercher les plus intrépides d&#8217;entre vous. Les autres, vous pouvez continuer à lire cet article.</p>
<p>Vous avez trouvé ? Vous en êtes bien sur ? Les plus futés d&#8217;entre vous auront remarqué que nous ne sommes plus en base 8 mais en base 256. Pour démontrer ce fait, je ferais appel à la division avec reste entier.</p>
<h4>Explication</h4>
<p>Reprenons le premier exemple :</p>
<blockquote><p>2947 / 256 = 11 reste 131.</p></blockquote>
<p>Etant donné le préfixe 10.3, vous avez donc 10.3.11.131.</p>
<p>Reprenons le second exemple :</p>
<blockquote><p>199449 / (256 x 256) = 3 reste 2841</p>
<p>2841 / 256 = 11 reste 25</p></blockquote>
<p>Nous avons donc 10.3.11.25. Pour vous en convaincre, vous pourrez voir que :</p>
<blockquote><p>256 x 256 x 3 + 256 x 11 + 25 = 199449.</p></blockquote>
<p>Au final, j&#8217;espère que cet article vous a plu et vous a un peu retourner le cerveau, car s&#8217;en était bien l&#8217;objectif. Vous ne verrez plus la commande ping de la même manière désormais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/10/les-mysteres-de-la-commande-ping/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Terminologie Xen</title>
		<link>http://www.antoinebenkemoun.fr/2009/09/terminologie-xen/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/09/terminologie-xen/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 13:48:41 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Xen]]></category>
		<category><![CDATA[Classification]]></category>
		<category><![CDATA[Explication]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=541</guid>
		<description><![CDATA[Après une longue série d&#8217;articles plutôt théoriques sur la virtualisation (Anneaux système et  Popek &#38; Goldberg), je vais revenir sur le projet Xen afin de pouvoir toucher un public plus large. J&#8217;ai déjà eu l&#8217;occasion de faire un article sur le projet Xen. Si vous souhaitez avoir un aperçu de ce projet, je vous invite [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-99" title="Xen_logo" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/06/Xen_logo.png" alt="Xen_logo" width="230" height="102" />Après une longue série d&#8217;articles plutôt théoriques sur la virtualisation (<a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/">Anneaux</a> <a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection-systeme-dans-le-cas-du-64-bit/">système</a> et  <a href="http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation/">Popek</a> &amp;<a href="http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation-suite/"> Goldberg</a>), je vais revenir sur le projet Xen afin de pouvoir toucher un public plus large. J&#8217;ai déjà eu l&#8217;occasion de faire un article sur le <a href="http://www.antoinebenkemoun.fr/2009/06/cest-quoi-xen/">projet Xen</a>. Si vous souhaitez avoir un aperçu de ce projet, je vous invite à relire l&#8217;<a href="http://www.antoinebenkemoun.fr/2009/06/cest-quoi-xen/">article en question</a>.</p>
<p>Par le biais de ce billet, je souhaite faire un point sur tous les termes qui sont utilisés très fréquemment lorsque nous sommes amenés à parler du projet Xen. J&#8217;ai essayé de faire une première liste. Si jamais vous en voyez d&#8217;autre, n&#8217;hésitez pas à me le faire remarquer et je les rajouterais ici.</p>
<p><strong>Domaine &#8211; </strong>Un domaine est une machine virtuelle. Le projet Xen a choisi de s&#8217;affranchir de la notion de machine virtuelle car cela avait tendance à renvoyer vers les techniques conventionnelles de virtualisation totale.</p>
<ul>
<li>Domaine privilégié ou dom0 : Le domaine 0 qui correspond au système d&#8217;exploitation installé initialement sur le matériel physique. Ce domaine dispose de tous les outils pour gérer les paramètres de l&#8217;hyperviseur et l&#8217;état des autres domaines</li>
<li>Domaine non privilégié ou domU : Il s&#8217;agit d&#8217;un domaine standard qui correspond à la définition conventionnelle de la machine virtuelle mais transposée dans le monde de la paravirtualisation.</li>
</ul>
<p><strong>Hyperviseur &#8211; </strong>L&#8217;hyperviseur est la première interface entre le matériel et les couches applicatives. Il n&#8217;est pas positionné par dessus un système d&#8217;exploitation hôte. VMWare utilise le terme d&#8217;hyperviseur alors qu&#8217;il s&#8217;agit d&#8217;une application inclue dans un système d&#8217;exploitation hôte. Je n&#8217;utiliserais que la définition de l&#8217;hyperviseur au sens de Xen sur ce blog.</p>
<p><strong>PV &#8211; </strong>Il s&#8217;agit là de l&#8217;abréviation de paravirtualisation. Il sera souvent évoqué la notion de &laquo;&nbsp;domaine PV&nbsp;&raquo; ce qui correspond à un domaine interfacé avec l&#8217;hyperviseur via l&#8217;API Xen.</p>
<p><strong>HVM (Hardware Virtual Machine) &#8211; </strong>Le HVM est l&#8217;appellation de la virtualisation matérielle assistée dans le projet Xen. Le projet Xen est donc capable de faire de la paravirtualisation et de la virtualisation matérielle assistée. Typiquement, le HVM permet d&#8217;exécuter des domaines Windows. Le module de virtualisation matérielle assistée est une version modifiée de QEMU.</p>
<p><strong>VIF (Virtual Interface) &#8211; </strong>Une VIF est une interface réseau virtuelle par opposition aux interfaces réseau physiques. Ces interfaces servent à mettre à disposition une interface réseau aux domaines. Les interfaces virtuelles seront ensuite reliées par divers méthodes (Pont, NAT, Routage) aux interfaces physiques.</p>
<p><strong>XM (Xen Management) &#8211; </strong>Xen Management est le jeu d&#8217;outils qui permettent de passer des commandes à l&#8217;hyperviseur au niveau du dom0. Il permet notamment d&#8217;exécuter, de mettre en pause et de couper les différents domaines présents sur la machine. Pour plus d&#8217;informations, n&#8217;hésitez pas à saisir la commande &laquo;&nbsp;xm help&nbsp;&raquo;.</p>
<p><strong>GPLPV &#8211; </strong>Les drivers GPLPV sont les drivers qui permettent d&#8217;ajouter des extensions de paravirtualisation à des domaines HVM. L&#8217;objectif de ces drivers est d&#8217;améliorer les performances des domaines HVM. Les drivers GPLPV sont comparables aux VMWare Tools.</p>
<p>Au final, je pense avoir fait un petit tour des termes les plus utilisés dans les ressources évoquant le projet Xen. J&#8217;espère que ce billet permettra à quelques personnes de mieux comprendre le projet Xen et de, pourquoi pas, se lancer dans une installation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/09/terminologie-xen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La théorie de Popek et Goldberg : les pré-requis de la virtualisation (suite)</title>
		<link>http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation-suite/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation-suite/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 14:10:16 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=530</guid>
		<description><![CDATA[Ce billet fait suite au billet précédent sur la théorie de Popek et Goldberg ainsi que la mise dans le contexte historique de cette théorie.
Nous avons vu précédemment les trois contraintes imposés au VMM par leur théorie. Pour rappel, le VMM (Virtual Machine Monitor) est la couche applicative de virtualisation.  L&#8217;objectif de leur théorie est [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-536" title="img-ressources-processeur-psd-aqua16-1365.jpg" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/09/img-ressources-processeur-psd-aqua16-1365.jpg-300x300.png" alt="img-ressources-processeur-psd-aqua16-1365.jpg" width="168" height="168" />Ce billet fait suite au <a href="http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation/">billet précédent</a> sur la théorie de Popek et Goldberg ainsi que la mise dans le contexte historique de cette théorie.</p>
<p>Nous avons vu précédemment les trois contraintes imposés au VMM par leur théorie. Pour rappel, le VMM (<a href="http://en.wikipedia.org/wiki/Virtual_machine_monitor">Virtual Machine Monitor</a>) est la couche applicative de virtualisation.  L&#8217;objectif de leur théorie est d&#8217;établir les pré-requis nécessaires à la virtualisation. Les trois contraintes servent de base à ces pré-requis et sont en quelque sorte les pré-requis élémentaires. La suite de leur papier s&#8217;attache à énoncer des règles plus spécifiques quand à ces pré-requis.</p>
<h3>Trois groupes d&#8217;instructions processeur</h3>
<p>Ils ont tout d&#8217;abord distingué trois groupes d&#8217;instructions processeur. Leur théorie étant plutôt générique, ces instructions ne sont pas mentionnées nominativement. Elles sont évoqués par leur comportement. Le processeur dispose de deux modes d&#8217;exécution : le mode utilisateur et le mode privilégié. Les instructions &laquo;&nbsp;utilisateur&nbsp;&raquo; sont les instructions classiques de calcul alors que les instructions &laquo;&nbsp;privilégiées&nbsp;&raquo; sont les instructions de manipulation de données.</p>
<p>Le premier groupe d&#8217;instructions processeur est le groupe des <strong>instructions privilégiées</strong>. Ces instructions nécessitent donc que le processeur soit en mode privilégié pour être exécuté. Si ce n&#8217;est pas le cas, elles sont &laquo;&nbsp;piégées&nbsp;&raquo; (de l&#8217;anglais trap) par le système afin d&#8217;être traités par le VMM. Le &laquo;&nbsp;piège&nbsp;&raquo; consiste en un changement de contexte et un traitement de l&#8217;instruction par le VMM qui décidera de la suite à donner à cette instruction. Il peut soit l&#8217;ignorer soit émuler son fonctionnement.</p>
<p>Le second groupe d&#8217;instructions processeur est le groupe des <strong>instructions sensibles à la configuration</strong>. Ces instructions qui va modifier la configuration du système physique. Ce groupe inclut les instructions visant à à modifier la quantité de mémoire disponible à un processus ou celles visant à changer le mode du processeur sans être &laquo;&nbsp;piégées&nbsp;&raquo;.</p>
<p>Le troisième groupe d&#8217;instructions processeur est le groupe des <strong>instructions sensible au comportement</strong>. Il s&#8217;agit des instructions dont le comportement est impacté par la localisation son exécution. Ce groupe inclut les instructions visant à lire une zone de mémoire vive spécifique ou à se déplacer dans la mémoire vive.</p>
<h3><strong>Les trois théorèmes</strong></h3>
<p>Après avoir posé tout ces pré-requis, ils énoncent ensuite le coeur de leur théorie, à savoir les théorèmes. Le premier théorème porte sur la possibilité de virtualisation une architecture processeur. Le second théorème porte sur la possibilité de faire de virtualisation récursive, à savoir faire fonctionner plusieurs machines virtuelles dans une machine virtuelle. Le troisième porte sur la possibilité d&#8217;exécuter des HVM (Hybrid Virtual Machine) sur une architecture processeur. Un HVM au sens de Popek &amp; Goldberg est une VM pour laquelle une majorité d&#8217;instructions sont interprétées par le VMM.</p>
<p>Le premier théorème énonce que pour qu&#8217;une architecture processeur soit virtualisable il faut que les instructions sensibles fassent parti des instructions privilégiés.</p>
<blockquote><p><em>For any conventional third generation computer, a virtual machine monitor may be constructed if the set of sensitive instructions for that computer is a subset of the set of privileged instructions.</em></p></blockquote>
<p>L&#8217;architecture la plus répandue actuellement ne répond pas à ce théorème, il y a quelques instructions qui posent problème d&#8217;où la nécessité d&#8217;utiliser les techniques de virtualisation que nous connaissons aujourd&#8217;hui.</p>
<p>Le second théorème énonce qu&#8217;il est possible de faire de la virtualisation récursive sur une architecture processeur si elle répond au premier théorème et qu&#8217;un VMM sans dépendance de temps peut être élaboré.</p>
<blockquote><p><em>A conventional third generation computer is recursively virtualizable if it is : virtualizable and a VMM without any timing dependencies can be constructed for it.</em></p></blockquote>
<p>Le troisième théorème énonce  qu&#8217;un HVM est réalisable si les instructions sensibles exécutables en mode utilisateur font partie des instructions privilégiées.</p>
<blockquote><p><em>A hybrid virtual machine monitor may be constructed for any conventional third generation machine in which the set of user sensitive instructions are a subset of the set of privileged instructions.</em></p></blockquote>
<p>Au final, je pense avoir fait le tour de la théorie de Popek et Goldberg. Je suis conscient que ce sujet est assez compliqué à appréhender. Je ne pense pas avoir été d&#8217;une clarté légendaire mais j&#8217;espère avoir clarifié quelque peu cette théorie. Si vous souhaitez en savoir plus sur cette théorie, je vous invite à lire le <a href="http://www.princeton.edu/~rblee/ELE572Papers/Fall04Readings/secureOS/popek_virtualizable.pdf">document initial</a> (maitrise de l&#8217;anglais requise).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation-suite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La théorie de Popek et Goldberg : les pré-requis de la virtualisation</title>
		<link>http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 13:18:12 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=499</guid>
		<description><![CDATA[Après avoir parlé en long et en large des anneaux de protection système, je souhaite parler un peu de la théorie de la virtualisation. Je suis conscient que vous êtes surement plus habitués à voir des billets plus concrets sur les blogs à travers le net. Cependant, ce sujet m&#8217;intéresse beaucoup et je pense qu&#8217;il [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir parlé en <a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection-systeme-dans-le-cas-du-64-bit/">long </a>et en <a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/">large</a> des anneaux de protection système, je souhaite parler un peu de la théorie de la virtualisation. Je suis conscient que vous êtes surement plus habitués à voir des billets plus concrets sur les blogs à travers le net. Cependant, ce sujet m&#8217;intéresse beaucoup et je pense qu&#8217;il pourrait intéresser certains d&#8217;entre vous. Il est vrai que l&#8217;utilité de ce type de billet n&#8217;est pas tout à fait immédiate. Je reviendrais sur des billets plus concrets par la suite.</p>
<h3>La naissance de la virtualisation</h3>
<p>Tout d&#8217;abord, la virtualisation est un concept ancien à l&#8217;échelle de l&#8217;informatique. Ce n&#8217;est pas VMWare qui a inventé la virtualisation en 1999 avec leurs applications. La virtualisation totale n&#8217;est pas non plus le premier type de virtualisation. La virtualisation est un concept qui date d&#8217;au moins 1970, année à laquelle vous n&#8217;étiez (probablement) pas né.  A cette époque est arrivé la révolution des ordinateurs IBM System/360 qui étaient exceptionnels par le fait qu&#8217;ils étaient compatibles à l&#8217;intérieur d&#8217;un même gamme. Un System/360 ressemble à la photo suivante :</p>
<p><img class="size-full wp-image-504  alignleft" title="2423PH2065C" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/09/2423PH2065C.jpg" alt="2423PH2065C" width="176" height="220" /></p>
<p>A cette époque, la virtualisation se faisait de manière matérielle avec un cloisonnement électronique des divers composants applicatifs. Ce type de virtualisation semble toujours exister aujourd&#8217;hui dans certains mainframes.</p>
<h3>Popek et Goldberg</h3>
<p>Popek et Goldberg sont deux chercheurs en informatique de cette époque. Ils ont souhaité formuler les pré-requis nécessaires à la virtualisation de manière formelle. Ils définissent plusieurs termes que l&#8217;ont connait toujours aujourd&#8217;hui. Une &laquo;&nbsp;VM&nbsp;&raquo; est une &laquo;&nbsp;Virtual Machine&nbsp;&raquo; ou machine virtuelle. Un VMM est un &laquo;&nbsp;Virtual Machine Monitor&nbsp;&raquo; ou moniteur de machine virtuel. Ce dernier correspond à la couche de virtualisation. Ce terme est peu utilisé mais il est possible de le retrouver occasionnellement.</p>
<h3>Trois contraintes imposées au VMM</h3>
<p>Ils ont tout d&#8217;abord défini trois critères que doivent remplir les systèmes de virtualisation afin de pouvoir être considéré en tant que tel. Ces critères serviront par la suite à définir les théorèmes de leur théorie.</p>
<p>Le premier critère est le critère &laquo;&nbsp;<strong>équivalence</strong>». Ce critère implique qu&#8217;une application quelconque doit s&#8217;exécuter de la même manière qu&#8217;elle soit exécuté au dessus d&#8217;un VMM ou d&#8217;une machine physique. Ceci est nuancé par la disponibilité des ressources physiques qui peuvent modifier la temporalité de l&#8217;exécution d&#8217;un programme.</p>
<blockquote><p><em>Any program run under the VMM should exhibit an effect identical with that demonstrated if the program had been run on the original machine directly, with the possible exception of differences caused by the availibility of system resources and differences caused by timing dependencies.</em></p></blockquote>
<p>Le second critère est le critère &laquo;&nbsp;<strong>efficacité</strong>». Ce critère indique qu&#8217;une part majoritaire d&#8217;instructions soit exécutée par le processeur directement sans intervention du VMM. Ce critère exclut donc les émulateurs et les techniques de virtualisation totale. La virtualisation matérielle assistée permet de répondre plus correctement à ce critère.</p>
<blockquote><p><em>The second characteristic of a virtual machine monitor is efficiency. It demands that a statiscally dominant subset of the virtual processor&#8217;s instructions be executed directly by the real processor, with no software intervention by the VMM.</em></p></blockquote>
<p>Le troisième critère est le critère  &laquo;&nbsp;<strong>contrôle de ressources</strong>». Ce critère indique que le VMM doit avoir le contrôle exclusif des ressources à partager. N&#8217;importe quelle application doit donc passer par la VMM pour pouvoir accès à une ressource partagée.</p>
<blockquote><p><em>The VMM is said to have complete control of these resources if it is not possible for a program running under it in the created environment to access any resource not explicitly allocated and it is possible under certain circumstances for the VMM to regain control of resources already allocated.</em></p></blockquote>
<p>Ces trois critères servent de base à la suite de leur papiers énonçant leurs théories. Nous verrons dans un prochain billet la suite des théorèmes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/09/la-theorie-de-popek-et-goldberg-les-pre-requis-de-la-virtualisation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Les anneaux de protection système dans le cas du 64-bit</title>
		<link>http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection-systeme-dans-le-cas-du-64-bit/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection-systeme-dans-le-cas-du-64-bit/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 07:08:38 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Explication]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=495</guid>
		<description><![CDATA[Dans le billet précédent, j&#8217;ai eu l&#8217;occasion de vous présenter les anneaux de protections système et leur utilité dans le cas de la virtualisation. Je vais continuer avec ce billet évoquant les spécificités du 64-bit.
Si vous avez lu mon précédent billet sur la virtualisation matérielle assistée, vous avez dû remarquer que je parlais de l&#8217;ajout [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-461" title="800px-Olympic_Rings.svg" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/08/800px-Olympic_Rings.svg.jpg" alt="800px-Olympic_Rings.svg" width="225" height="109" />Dans le <a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/">billet précédent</a>, j&#8217;ai eu l&#8217;occasion de vous présenter les anneaux de protections système et leur utilité dans le cas de la virtualisation. Je vais continuer avec ce billet évoquant les spécificités du 64-bit.</p>
<p>Si vous avez lu mon précédent billet sur la <a href="http://www.antoinebenkemoun.fr/2009/07/la-virtualisation-materiel-assistee/">virtualisation matérielle assistée</a>, vous avez dû remarquer que je parlais de l&#8217;ajout de l&#8217;anneau &laquo;&nbsp;-1&#8243;.  Sauf qu&#8217;un précédent billet sur les <a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/">anneaux de protection système</a> n&#8217;évoquait que les anneaux de 0 à 3.</p>
<p>L&#8217;architecture historique, à savoir, l&#8217;architecture x86-32 dispose effectivement de 4 anneaux numérotés de 0 à 3. Cependant seuls deux anneaux étaient utilisés : un pour le système d&#8217;exploitation et un pour les applications. Lorsqu&#8217;AMD et Intel ont refondu l&#8217;architecture x86 pour passer au 64-bit, ils ont décidé de supprimer les anneaux 1 et 2. Il ne resta donc plus que les anneaux 0 et 3.</p>
<p>Ceci n&#8217;a pas créé de problème particulier car ces anneaux n&#8217;étaient pas utilisés dans les systèmes d&#8217;exploitation. La virtualisation est arrivée relativement peu de temps après et avait pour habitude d&#8217;utiliser un anneau supplémentaire afin de cloisonner l&#8217;hyperviseur, le système d&#8217;exploitation et les applications. Les solutions de virtualisation se sont donc retrouvées avec deux anneaux alors qu&#8217;il était plus simple et plus sécurisé d&#8217;en utiliser trois. Afin de résoudre cette problématique, dans le cas du projet <a href="http://www.antoinebenkemoun.fr/2009/06/cest-quoi-xen/">Xen</a>, l&#8217;anneau 3 a été mutualisé pour les applications et les systèmes d&#8217;exploitation. Il a été préféré de cloisonner seul l&#8217;hyperviseur. Cette disposition donne le schéma suivant :</p>
<p style="text-align: center;"><img class="size-full wp-image-484 aligncenter" title="Rings64bit" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/08/Image-1.png" alt="Rings64bit" width="313" height="296" /></p>
<p>Par la suite, AMD et Intel se sont rapidement rendus compte de l&#8217;importance que commençait à prendre la virtualisation. Ils ont donc décidé d&#8217;inclure dans leurs processeurs des instructions de virtualisation facilitant les opérations liées à cette technique. Ces extensions ont rendu possible la <a href="http://www.antoinebenkemoun.fr/2009/07/la-virtualisation-materiel-assistee/">virtualisation matérielle assistée</a> comme je l&#8217;ai évoqué précédemment. En même temps, il a été ajouté un anneau &laquo;&nbsp;-1&#8243; qui permet à la <a href="http://www.antoinebenkemoun.fr/2009/08/la-paravirtualisation/">paravirtualisation</a> d&#8217;éviter la mutualisation de l&#8217;anneau 3. Ceci a permis de revenir à une disposition plus propre des composants applicatifs parmi les anneaux de protection système. Le schéma ci-dessous illustre la nouvelle disposition.</p>
<p style="text-align: center;"><img class="size-full wp-image-486 aligncenter" title="Rings64bitImproved" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/08/Image-2.png" alt="Rings64bitImproved" width="311" height="289" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection-systeme-dans-le-cas-du-64-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les anneaux de protection système</title>
		<link>http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/</link>
		<comments>http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 12:12:32 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=453</guid>
		<description><![CDATA[La série d&#8217;articles sur la détection d&#8217;intrusion m&#8217;aura permis de faire une petite coupure dans la série d&#8217;articles sur la virtualisation. Je vais donc reprendre les articles sur la virtualisation. Pour rappel, la plupart des ces articles sur la virtualisation reprennent le contenu de l&#8217;AC que j&#8217;ai effectué avec Romain Hinfray. Ces articles me permettent [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-461" title="800px-Olympic_Rings.svg" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/08/800px-Olympic_Rings.svg.jpg" alt="800px-Olympic_Rings.svg" width="225" height="109" />La série d&#8217;articles sur la détection d&#8217;intrusion m&#8217;aura permis de faire une petite coupure dans la série d&#8217;articles sur la virtualisation. Je vais donc reprendre les articles sur la virtualisation. Pour rappel, la plupart des ces articles sur la virtualisation reprennent le contenu de l&#8217;<a href="http://www.antoinebenkemoun.fr/projets-xen/">AC</a> que j&#8217;ai effectué avec Romain Hinfray. Ces articles me permettent de prendre un peu de recul par rapport à cette <a href="http://www.antoinebenkemoun.fr/projets-xen/">AC</a> et de compléter avec de nouvelles connaissances.</p>
<p>Avant de pouvoir continuer sur la virtualisation, je souhaite faire un article qui servira de pré-requis à la suite. Je vais parler des anneaux de protection (ou rings pour les anglophones). Cette notion n&#8217;est pas seulement utile en virtualisation mais plus largement en systèmes d&#8217;exploitation.</p>
<h3>Principe des anneaux de protection</h3>
<p>Vous avez surement entendu parlé de &laquo;&nbsp;Rings&nbsp;&raquo; ou d&#8217;anneaux si vous avez déjà fait un peu de sécurité des systèmes d&#8217;exploitation, de la virtualisation ou de l&#8217;électronique informatique. On parlera ici d&#8217;anneau de protection afin d&#8217;éviter les termes anglophones, nous parlons en Français tout de même. Comme vous commencez sans doute à vous en douter, nous serons ici sur du &laquo;&nbsp;bas niveau&nbsp;&raquo; au niveau des systèmes d&#8217;exploitation.</p>
<p>Nous étudierons tout d&#8217;abord l&#8217;utilité des anneaux de protection. Comme leur nom l&#8217;indique, ils ont pour objectif de fournir une fonction de protection. Cette protection s&#8217;applique sur les divers composants applicatifs du système d&#8217;exploitation. L&#8217;objectif va être d&#8217;empêcher divers composants applicatifs d&#8217;un système d&#8217;exploitation de se modifier entre eux. Vous comprendrez donc qu&#8217;une modification d&#8217;un composant applicatif par un autre est synonyme de faille de sécurité.</p>
<p>Les composants qui vont nous intéresser plus particulièrement dans le cadre d&#8217;un système d&#8217;exploitation sont le noyau et les applications. Autant il est tout à fait envisageable que le noyau puisse apporter des modifications aux données dynamiques d&#8217;une application, l&#8217;inverse l&#8217;est beaucoup moins. Ces données dynamiques sont les données stockées en mémoire vive. La mémoire vive est systématiquement amenée à contenir le programme lui-même ainsi que les données qu&#8217;il traite. Vous comprenez donc bien l&#8217;intérêt d&#8217;une protection ou plutôt d&#8217;un cloisonnement.</p>
<h3>Application aux systèmes x86-32</h3>
<p>Dans les systèmes x86-32, il existe 4 anneaux de protection numérotés de 0 à 3. Dans la quasi-totalité des systèmes d&#8217;exploitation sans virtualisation, seuls les anneaux 0 et 3 sont utilisés. L&#8217;anneau le plus privilégié est l&#8217;anneau 0 qui contient le noyau du système d&#8217;exploitation. L&#8217;anneau le moins privilégié est l&#8217;anneau 3 qui contient les applications et leurs données dynamiques. Les deux autres anneaux ne sont pas utilisés. Ils l&#8217;ont été dans OS/2 ou bien Netware pour y placer différents pilotes. Le schéma ci-dessous reprend la répartition des composants applicatifs dans un système d&#8217;exploitation moderne.</p>
<p style="text-align: center;"><img class="size-full wp-image-458 aligncenter" title="rings" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/08/rings.jpg" alt="rings" width="494" height="270" /></p>
<h3>Application à la paravirtualisation</h3>
<p>Dans le cadre de la paravirtualisation, le système d&#8217;exploitation ne sera pas le premier intermédiaire du matériel mais ce sera l&#8217;hyperviseur. Pour des raisons de sécurité, il sera nécessaire de cloisonner le système d&#8217;exploitation et l&#8217;hyperviseur. Dans ce cas-là, il sera fait usage de l&#8217;anneau 1. Nous placerons donc l&#8217;hyperviseur dans l&#8217;anneau 0 et le système d&#8217;exploitation dans l&#8217;anneau 1. Les applications restent bien au chaud dans l&#8217;anneau 3.</p>
<h3>Implémentation des anneaux de protection</h3>
<p>Maintenant que je vous ai expliqué tout ceci, l&#8217;utilité et l&#8217;application des anneaux de protection semble clair. Il manque cependant un élément clé de la compréhension de ce concept : l&#8217;implémentation des anneaux de protection. Comment se concrétisent les anneaux de protection ? Où se trouvent-ils dans la nature ?</p>
<p>Les anneaux de protection sont implémentés au niveau de la mémoire vive. Une zone de mémoire vive se voit attribuer une localisation dans un anneau par le système d&#8217;exploitation. Un programme contenu dans une zone mémoire attribuée à l&#8217;anneau 3 ne pourra pas aller modifier une zone mémoire attribuée à l&#8217;anneau 0.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
