 Ok, donc je pense que l'on peut commencer. Bonjour tout le monde, merci d'avoir regardé moi aujourd'hui. Mon nom est Sylvain, je suis en train de travailler à Prédat, comme ingénieur. Et dans cette présentation, nous allons parler de Skydive, qui est un réaliste naturelle. Donc, nous allons voir sur l'agenda. Alors, je vais commencer par un peu de votre vue, donner un peu de contexte. Ensuite, je vais vous montrer un demo. Nous allons parler un peu de l'architecture. Et puis, pourquoi Skydive et AO, c'est une plateforme oublier. Nous allons parler de la maire. Je vais vous donner des liens. Et ce sera le temps pour une session Q&A. Alors, nous allons commencer par votre overview et le contexte. Donc, nous savons que le réseau n'est pas aujourd'hui plus un signe statique. Il y a beaucoup de moyens pour configurer votre réseau. Il y a beaucoup d'automation-tools, comme on le sait par exemple, et vous avez un SDN, et vous pouvez avoir une solution de multiple SDN. Vous pouvez avoir un SDN afin d'aider votre équipement physique ou vous pouvez avoir un SDN afin d'aider votre équipement virtuel, et vous pouvez avoir les deux, bien sûr. Cela fait beaucoup de complexité. Et depuis que nous parlons de la maire, cela signifie que vous devez l'ajouter fréquemment. Et cela signifie que vous devez faire un CICD afin d'aider votre workload naturel et votre plateforme SDN. Cela signifie que vous avez aussi des solutions de multiple overlays. Et vous pouvez avoir un mélange entre elles. Si vous parlez de l'opponent statique, vous pouvez avoir un emploi de l'opponent statique avec une solution SDN et vous pouvez avoir un emploi de l'opponent statique avec une autre solution SDN. Donc, il y a une solution pour cela. C'est-à-dire que, afin d'aider votre infrastructure ou d'aider votre infrastructure, ils vous permettent d'aider votre vendeur. Et vous êtes retournée avec la toute façon d'aider l'infrastructure, c'est-à-dire d'aider l'hôpital, l'hôpital, l'hôpital, etc. Donc, c'est pourquoi nous avons commencé à penser sur la solution et la utilisation que nous voulions adresser. Donc, ce que nous voulions c'est de trouver la topologie dans une technologie anagnose. Nous voulions donc de renseigner sur une solution SDN mais de pouvoir parler de la solution SDN si nécessaire. Nous voulions avoir un tool pour visualiser ce que nous avons trouvé. Nous voulions faire le monitoring et nous voulions faire les analyses de l'académie et les analyses de la trafic et, peut-être, les utilisateurs et les utilisateurs. Nous voulions faire des analyses live et nous voulions recorder tous les événements qui s'occupe sur la networks afin de faire des analyses post-monteins. Pourquoi ? Parce que, souvent, quand un utilisateur crée une ressource naturelle comme la porte d'un VM et il y a un problème, le utilisateur délète la ressource et puis, vous avez perdu l'information de l'affaire. Donc, c'était l'un des outils de la utilisation. Et puis, sur ceci, nous voulions faire des analyses, pour pouvoir interagir avec des outils externes afin d'ajouter plus de valeur et, basiquement, faire des validations. Donc, ce qu'est Skadev aujourd'hui ? Skadev est un problème de topologie dissuadé qui signifie qu'on a un moyen de découvrir la topologie, la plupart d'eux. Il supporte des analyses historiques avec un minimum d'intrusion. Je parle de topologie discovery et, au moins, c'est un de nos goals. C'est-à-dire, d'avoir un minimum d'intrusion. Nous avons un moyen d'appliquer les visuels ou les intérêts naturels pour des intérêts logiques comme l'objet de l'opinion ou l'objet de la communauté, ce qui signifie qu'on peut appliquer une interface physique à une interface logique dans l'opinion ou la porte. Nous avons un moyen d'appliquer une paquette pour appliquer une paquette de paquette ou une porte logique et d'autres. Nous collons les métriques pour ça et nous pouvons protéger les actions si nous avons vu quelque chose de spécifique. Pour valider la trafication, nous avons un générateur de paquette pour que vous puissiez générer la trafication et vous pouvez valider que la paquette soit correcte pour vous. Je commence avec un demo parce que je ne suis pas fou et je ne veux pas avoir de défaut naturel. Donc le contexte pour ce demo c'est un déployement d'open stack un deux nodes il y a un contrôler full et un node compute donc on commence. C'est ce que vous avez quand vous commencez le Skydive WebUI basiquement vous voyez un tour qui est un switch topo et vous avez deux nodes, deux host deux hypervisor, dev1 et dev2 donc si vous cliquez sur un node il explique le node et vous verrez qu'il y a plein de interfaces basiquement ce que vous avez sur le host tous les interfaces, les bridges, les spécifiques et vous pouvez cliquer sur chaque node et vous verrez sur le bon panel la metadata si vous cliquez sur le node host vous avez des informations et vous pouvez également obtenir le cpu donc c'est utile pour cpu pinning par exemple et vous pouvez voir le socket c'est-à-dire toutes les connexions qui ont été seen par le host et vous avez le type de virtualisation et si vous cliquez sur un interface vous avez d'autres informations comme mtu, IPs et tout vous pouvez obtenir les câbles aussi vous pouvez cliquer sur les features basiquement vous parlez d'offloading donc vous verrez les capacités aussi si vous voulez si vous parlez de matrix vous pouvez obtenir les matrices et vous pouvez sélectionner ce que vous voulez donc c'est toutes les matrices que nous collectons pour une interface et vous pouvez filtrer si vous voulez nous collectons une table routière aussi donc vous avez toutes les tables routières et c'est vrai pour toutes les interfaces si vous cliquez sur une spécifique interface neutre vous recevrez plus d'informations parce que si Skydive est agnostic pour le controller nous avons un moyen d'avoir des connecteurs pour obtenir plus d'informations pour une interface spécifique donc oui c'est ce que nous faisons nous découvrons la interface et ensuite nous demandons à Neutron d'avoir plus d'informations donc si vous voyez sur le right panel nous avons plus d'informations, nous avons la VGIM ID et nous avons une spécifique Neutron section et la Network ID et la Tonant ID donc c'est ce que nous faisons les mappings entre la interface physique et la interface virtuelle et depuis que depuis que c'est une interface UVS nous avons plus de matrices de UVS donc vous pouvez expliquer tous les choses, vous recevrez plus d'informations donc ce view est un peu complexe mais nous avons un moyen pour filtrer pour voir seulement l'infrastructure donc c'est utilisé interne une langue spécifique, une langue grime une langue bien connue une langue spécifique mais vous pouvez mettre une spécifique filtration donc si vous voulez profiter un filtré pré-defined afin d'avoir des informations spécifiques vous pouvez le définir en utilisant un filtré pré-filter ou si l'utilisateur peut le faire en utilisant un filtré pré-filter donc ici nous allons voir seulement la langue spécifique donc nous avons deux langues spécifiques pour le jour 1 non vous pouvez faire un autre filtre comme je veux voir seulement l'interface avec l'upstate donc ici si j'expand je vais obtenir le complet view mais sans l'interface donc maintenant nous avons découvert la typologie nous pouvons faire un peu d'interfaces donc ce que nous allons faire nous allons créer, valider que l'interface soit correcte entre deux interfaces donc ici je vais prendre deux interfaces l'un qui est dans la langue spécifique de la langue spécifique et l'autre qui sera le tap de la langue spécifique juste près du tap de la langue spécifique donc je sélectionne deux nodes donc tout est dilaté pour le passé puis je sélectionne un filtré parce que je veux voir seulement la paquette je vais demander de garder 10 paquettes donc tout va être contacté dans un flow dans Skydive donc pas avec les payloads mais si je me demande je peux garder 10 paquettes si je veux c'est la paquette c'est ce que je vais faire et nous avons plus d'options comme vous pouvez défragmenter vous pouvez lever la paquette donc la paquette a commencé comme vous pouvez le voir un petit red dot près du node et puis nous allons injecter la paquette entre les deux nodes donc ici la paquette est faite parce que c'est la paquette qui vient de la neutre donc je vais couper et passer je vais changer la paquette parce que c'est la paquette qui n'est pas utilisée par l'interface de la paquette je vais générer 5 paquettes puis je injecte et je clique sur le node dans le pass et si on clique sur les flots nous verrons que nous avons la paquette ICMP mais seulement 5 paquettes et le autre est empty et vous pouvez voir qu'on a plein de informations et si vous cliquez sur le bouton vous allez avoir un file de pick-up parce que j'ai recrédit 10 paquettes 10 paquettes et vous allez avoir une réelle paquette donc c'est un gros complexe pour acheter ce que nous allons vérifier si nous évoquons la paquette ICMP nous recevrons l'information que l'on expecte c'est-à-dire que la paquette sera correctement validée donc nous allons réinjecter la paquette nous allons changer l'idée d'un autre flot qui est terminé nous devons reflerer il y a un autre bouton nous devons reflerer et puis nous avons un autre flot avec 5 paquettes et 5 paquettes donc tout fonctionne et vous pouvez voir que vous avez la RTT qui est aussi répartie et si vous voulez downloader la paquette vous recevrez 10 paquettes donc vous pouvez utiliser plusieurs étapes mais il y a un moyen de le faire dans quelques clics nous avons le concept de workflows donc c'est un moyen de script skydive afin d'automater ce qu'il fait internement et je vais vous donner un autre exemple juste après c'est implémenté dans skydive mais ici je vais cliquer sur celui-ci qui est sur la connectivité entre deux notes c'est exactement ce que j'ai fait juste avant sélectionner deux notes puis cliquer sur l'exécute et ça va faire le travail pour moi c'est-à-dire faire exactement ce que j'ai fait juste avant donc nous devons attendre un peu afin d'assurer que nous n'avons pas de temps et puis nous avons un état qui est vrai, c'est-à-dire que nous avons la connectivité et nous avons 5 paquettes, 5 paquettes donc nous allons faire l'opposite nous allons retirer la roule et nous allons faire la même chose donc maintenant le état est fausse mais nous avons 5 paquettes 1, 1, 0 après donc maintenant comme je l'ai dit, vous pouvez avoir un environnement nesté comme une Kubernetes sur l'opposite donc nous avons commencé deux VMs et ce que nous allons faire nous allons commencer skydive dans les VMs, comme un réel déploiement et nous avons dans les VMs, nous avons un déploiement de Kubernetes donc nous avons commencé deux agents un par VM et Skydive, le analyzer je vais parler de ce component juste après mais le command analyzer qui gère toute l'information a vu deux plus de notes et nous pouvons expliquer tout et vous verrez que vous avez beaucoup plus de containers il y a un lien entre les tabs des VMs si vous cliquez sur le host c'est un guest vous pouvez expliquer c'est un déploiement de Flannel c'est un bridge CNI vous pouvez expliquer un espace pour voir les détails et vous verrez que vous avez des détails de Kubernetes Docker donc ici, dans ce panel vous avez tous les metadata qui sont disponibles pour Docker ce que nous allons faire nous allons voir si nous pouvons capturer la trafic pour un protocole ici, nous avons un déploiement de guest donc c'est basiquement un Redis plus un PHP un PHP front-end nous allons créer une capture ici, nous allons évoquer l'application interne utilisée par Skydive pour sélectionner toutes les interfaces pour sélectionner le bridge CNI donc je peux évoquer ma expression c'est basé sur la filtration donc je vais juste sélectionner que je veux sélectionner le bridge CNI et ensuite je vais demander de sélectionner tout connecté à la CNI donc les nodes sont évoqués je vais entrer le port de Redis et afin de vérifier quelque chose je vais commencer quelques captures dans le passé où je suspecte que je vais voir cette trafication juste pour dire que Skydive respecte les flows c'est-à-dire les paquets et il supporte le tunneling donc il est capable d'extracter l'original flow d'un tunnel VXLAN d'un tunnel GNV d'un tunnel GRE et si je clique sur les flows je peux évoquer une expression comme je l'ai dit, c'est la langue et je peux sélectionner afin de voir seulement les flows avec le port utilisé par Redis et ensuite je filtre ce que je n'ai pas demandé et si je sélectionne les flows je vais voir où ce genre de flows ont été évoqués donc on utilise une idée de trafication et ici on peut dire qu'on a une idée parentie c'est-à-dire que ce paquet belongs à un autre flow qui pourrait être un tunnel pour exemple donc c'était pour le demo c'était pour un overview juste pour mentionner que tout ce que vous voyez dans ce demo est disponible dans la ligne de commande donc vous pouvez faire tout dans la ligne de commande ou l'appli donc nous allons voir un peu ce que l'on a fait c'est une binary single donc vous n'avez pas les binaries et vous êtes prêt mais internement vous avez deux types de components l'un est l'analyser qui gère tout le structure qui est reposé par les agents et les agents où les probes, les probes topologiques et les probes de flows sont démarrées bien sûr nous avons un web UI et si vous voulez créer des alertes afin de être triggered par quelque chose il y a le de l'alting engine qui s'occupe de l'analyser nous soutenons les clustering donc il y a un mécanisme de réplication entre les analyseurs et les autres il y a une TCD pour maintenir la configuration et vous pouvez rentrer au Skyday sans avoir un datastore mais si vous voulez faire des analyses post-mortem ou des analyses historiques vous pourriez déployer un datastore c'est une élastique même si vous soutenez un autre datastore mais l'élastique est utilisé en parlant de probes donc nous soutenons plusieurs probes donc nous avons deux types de probes topologie et de flows donc pour la topologie il y a beaucoup de choses dans le protocole ou le mécanisme nous soutenons l'ASDB et l'open flow donc c'est-à-dire quelque chose qui n'a pas été montré dans le demo mais vous pouvez introspecter les rues de flow dans un bridge de flow et vous pouvez naviguer dans les tables et les rues de flow nous soutenons l'LDP nous avons un connecteur pour un neutral, l'open control et ainsi l'information sur le socket est une autre nous l'avons vu dans le demo mais je vais expliquer nous avons plusieurs manières de capturer les flows l'intéressant c'est l'EBPF qui est la solution de l'espoir dans le carnet et si vous voulez dpk1 est aussi intéressant parce que ce que vous voulez faire c'est de commencer un agent Skydive pour monitor le trafic un grand nombre de trafics donc vous commencez un agent avec un DPDK probe pour transformer le trafic pour l'agent pour obtenir le trafic et la mapping donc pourquoi Skydive est un open platform et je vais vous donner quelques exemples pour ça donc internally, c'est Skydive donc c'est un graph engine dans Skydive qui est complètement distribué qui soutient des réquestes et basiquement pour un agent un agent est un bunch de probe publié pour le graph engine et ensuite vous pouvez s'inscrire au graph afin d'être triggered par l'information et c'est ce que c'est fait internally dans Skydive donc basiquement on a un agent publié dans l'information et on a un analyzer souscrivant pour la publication et bien sûr, depuis que c'est open vous pouvez faire la même chose c'est à dire que vous pouvez s'inscrire au graph pour des informations ou des événements nous avons un library Python récemment on a publié un javascript 1 qui est assez utile si vous voulez vous donner votre propre web UI ou quelque chose comme ça nous avons un Ansible module library donc si vous voulez le livrer et je vais vous montrer ça juste après pour publier au Skydive Skydive workflows comme j'ai expliqué juste avant durant le demo et nous avons un graph and app data source plug-in si vous voulez graphiser quelque chose donc on va prendre un exemple avec le Ansible donc c'est juste un exemple pour vous montrer que vous pouvez mettre tout ce que vous voulez dans Skydive, ce n'est pas nécessairement basé sur la chaine network mais c'est peut-être quelque chose d'autre ici je prends un exemple grâce à Ansible je vais récupérer la information de la VM, c'est-à-dire de Nova et je vais mettre ça dans Skydive avec un lien entre le host et le node que je vais créer pour ça donc c'est ça la première partie est de gâter les facts puis générer le node où je vais publier la metadata de Nova et finalement en faisant un lien entre les deux nodes et en faisant ça, c'est ce que vous avez donc le node 1 est le host et depuis que c'est la VM vous pouvez attaquer le node qui est créé donc c'est le QB1 VM et sur la droite dans la section de service vous verrez toutes les metadata qui sont venus de Ansible donc si vous voulez mettre une information safe une information fabrique ou quelque chose si vous voulez mettre un network Ansible pour mettre une information fabrique dans Skydive, c'est la solution un autre exemple de ce que vous pouvez faire avec l'API on a construit un tiny script qui est construit d'autres types de topologies donc ce n'est pas encore une quantité naturelle mais c'est plus de l'application et ce que nous faisons, on interroge avec Skydive pour récupérer information socket et information connexion pour faire un map entre l'application et le network utilisé donc on utilise les processus et puis c'est ce que vous avez donc c'est une grosse picture mais basiquement, les boxes urbains sont les processus et puis vous avez des liens entre eux pour montrer quelle kind de connectivité vous avez et basiquement, j'ai commencé sur le déploiement sur le déploiement de Dimo et ici la droite la milieu est la queue de Rabit donc on peut voir que tout est connecté et sur le haut la gauche la droite c'est la cubanité et c'est un peu bizarre mais vous pouvez re-injecter ce que vous extractez dans Skydive et ça vous donnera une autre topologie, c'est juste un extract mais vous avez une application topologie, c'est-à-dire quelle application vous parlez avec quelle application donc ce que j'utilise dans le déploiement c'est un javascript API donc le whole skydive API est exposé dans javascript et le but de ça c'est d'être capable d'évaluer un script de validation pour une session de trabalage ou d'automater quelque chose vous pouvez l'enlever dans le CLI donc si vous avez un système CI et vous voulez valider quelque chose automatiquement vous pouvez le faire comme je l'ai fait juste avant donc c'est ce que ça ressemble c'est un script javascript invédé dans un file yaml c'est la partie yaml qui est à propos des paramètres c'est deux nodes, c'est-à-dire deux interfaces c'est ce que j'ai utilisé durant le déploiement donc c'est la connectivité et ensuite vous pouvez voir que ça crée un capteur et ça crée un package injection les interfaces sur le gauche sur le web UI sont automatiquement générées par le workflow donc vous pouvez définitivement faire votre propre et c'est un peu de la graphana plug-in donc basiquement vous pouvez utiliser exactement la même langue partout, ici c'est en utilisant les langues grimmées et comme je l'ai dit vous pouvez voir ce qu'il y a dans les tunnels vous pouvez avoir le contexte de la trafic, comme dans les tunnels ou quelque chose comme ça donc vous pouvez construire votre propre dashboard donc je vais parler du roadmap un peu donc c'est un roadmap et c'est pas exhaustif mais nous allons travailler sur le web UI parce que comme vous l'avez vu c'est assez complexe et les nodes flottent autour et nous avons une autre implementation de ça donc qui est plus statique ou plus utilisable et nous allons donner un moyen pour que les utilisateurs créent leur propre dashboard donc pour voir quelque chose très spécifique sur le probe nous allons soutenir SNAT GINAT nous avons vraiment quelque chose qui est assez utilisable nous allons donner un vpp probe donc celui-ci est développé la même chose pour l'SIOV et nous avons des contributaires qui travaillent sur le probe afin d'avoir des informations networking mais selon les workloads afin d'avoir des latencies par exemple nous allons donner des workflows mais comme je vous l'ai dit vous pouvez mettre votre maison mais sur le site de l'aéros vous allez donner plus un transport multi-protocol et un masque pink pour valider la connectivité dans un clic pour un peu de poste donc comment commencer avec SkyLive il y a plusieurs moyens comme je vous l'ai dit et c'est ok nous avons un playbook donc si vous voulez déployer SkyLive, c'est possible et vous pouvez déployer SkyLive en utilisant des packages, des containers nous avons une intégration tripole donc vous pouvez définitivement utiliser celui-ci par contre nous supportons l'authentication Thanks to Kingston et nous avons un mécanisme airbag docker compose, Kubernetes, DevStack et dans quelques weeks nous serons intégrés avec Red Hat OSP14, Aztec Preview si vous voulez apprendre plus sur SkyLive nous avons un site github repository et un peu de documentations vous pouvez nous atteindre sur l'IRC et bien sûr, les contributions sont plus d'incompréhensibles il peut être utilisé des cases, des codes, etc et je pense que c'est tout si vous avez des questions non, pas le WebUI nous savons que ce n'est pas grave donc pour le WebUI c'est pourquoi nous allons travailler sur l'autre qui est déjà prêt mais nous devons tester si nous avons commencé à travailler nous avons fait le déploiement avec 10.000 containers donc SkyLive fonctionne proprement mais le WebUI n'est pas utilisé mais vous pouvez faire la capture vous pouvez faire la validation vous pouvez faire beaucoup de choses mais pas le WebUI ou il y a une autre solution le WebUI est disponible par host donc c'est un moyen d'être prêt sur l'issue avec la vue globale mais c'est quelque chose que nous allons fixer la capture la capture de l'asset de l'asset de l'asset oui non, c'est quelque chose oui, c'est pourquoi nous avons plusieurs moyens de capturer les packets parce que certains de eux sont sur les samplings c'est vrai pour l'asset de l'asset mais certains autres sont sur la capture donc nous avons un portmai qui n'est pas spécifique ici mais pour l'OBS vous avez deux moyens de capturer donc vous pouvez utiliser la capture portmai et l'asset de l'asset de l'asset est aussi fonctionnel pour la base de l'asset de l'asset si vous voulez pointer l'asset de l'asset de l'asset de l'asset de l'asset c'est possible il y a une question ok, merci