{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Estimation de la latence et de la capacité d’une connexion à partir de mesures asymétriques" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Un modèle simple et fréquemment utilisé pour décrire la performance d'une connexion de réseau consiste à supposer que le temps d'envoi T pour un message dépend principalement de sa taille S (nombre d'octets) et de deux grandeurs propres à la connexion : la latence L (en secondes) et la capacité C (en octets/seconde). La relation entre ces quatre quantités est ___T(S) = L + S/C___. Ce modèle néglige un grand nombre de détails. D'une part, L et C dépendent bien sûr du protocole de communication choisi mais aussi dans une certaine mesure de S. D'autre part, la mesure de T(S) comporte en général une forte composante aléatoire. Nous nous intéressons ici au temps moyen qu'il faut pour envoyer un message d'une taille donnée." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous allons estimer L et C à partir d'une série d'observations de T pour des valeurs différentes de S. Notre analyse commence avec la lectures des données brutes, disponibles pour deux connexions différentes, qui ont été obtenues avec l'outil ping." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les deux fichiers contiennent la sortie brute de l'outil ping qui a été exécuté dans une boucle en variant de façon aléatoire la taille du message. Chaque ligne a la forme suivante:\n", "\n", "__[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 ms__\n", "\n", "Au début, entre crochet, nous trouvons la date à laquelle la mesure a été prise, exprimée en secondes depuis le 1er janvier 1970. La taille du message en octets est donnée juste après, suivie par le nom de la machine cible et son adresse IP, qui sont normalement identiques pour toutes les lignes à l'intérieur d'un jeu de données. À la fin de la ligne, nous trouvons le temps d'envoi (aller-retour) en millisecondes. Les autres indications, icmp_seq et ttl, n'ont pas d'importance pour notre analyse" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1er jeu de données" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous commencons par travailler sur le 1er jeu de données qui examine une connexion courte à l'intérieur d'un campus." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous lisons le fichiers et récupérons les données intérésantes : la date (convertie de secondes à année-mois-jour), la taille des messages, la machine cible et les adresses IP. Nous gardons aussi le temps de transmission, si celui-ci n'est pas présent la ligne n'est pas gardée. Les données sont ensuite triées en fonction de la date." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
taillecibleIPtemps
date
2015-01-20 13:48:02.052172665lig-publig.imag.fr129.88.11.722.5
2015-01-20 13:48:02.2773151373lig-publig.imag.fr129.88.11.721.2
2015-01-20 13:48:02.502054262lig-publig.imag.fr129.88.11.721.2
2015-01-20 13:48:02.7292571107lig-publig.imag.fr129.88.11.723.3
2015-01-20 13:48:02.9346481128lig-publig.imag.fr129.88.11.71.41
2015-01-20 13:48:03.160397489lig-publig.imag.fr129.88.11.721.9
2015-01-20 13:48:03.4430551759lig-publig.imag.fr129.88.11.778.7
2015-01-20 13:48:03.6721571146lig-publig.imag.fr129.88.11.725.1
2015-01-20 13:48:03.899933884lig-publig.imag.fr129.88.11.724.0
2015-01-20 13:48:04.1226871422lig-publig.imag.fr129.88.11.719.5
2015-01-20 13:48:04.3441351180lig-publig.imag.fr129.88.11.718.0
2015-01-20 13:48:04.566271999lig-publig.imag.fr129.88.11.718.8
2015-01-20 13:48:04.9985041020lig-publig.imag.fr129.88.11.724.3
2015-01-20 13:48:05.20517271lig-publig.imag.fr129.88.11.73.45
2015-01-20 13:48:05.41410634lig-publig.imag.fr129.88.11.75.85
2015-01-20 13:48:05.6201171843lig-publig.imag.fr129.88.11.72.31
2015-01-20 13:48:05.824949407lig-publig.imag.fr129.88.11.71.14
2015-01-20 13:48:06.029177356lig-publig.imag.fr129.88.11.71.10
2015-01-20 13:48:06.2344641511lig-publig.imag.fr129.88.11.72.18
2015-01-20 13:48:06.438772587lig-publig.imag.fr129.88.11.71.27
2015-01-20 13:48:06.643208809lig-publig.imag.fr129.88.11.71.33
2015-01-20 13:48:06.8483231364lig-publig.imag.fr129.88.11.71.51
2015-01-20 13:48:07.0534001153lig-publig.imag.fr129.88.11.71.44
2015-01-20 13:48:07.257704853lig-publig.imag.fr129.88.11.71.30
2015-01-20 13:48:07.4632751510lig-publig.imag.fr129.88.11.72.17
2015-01-20 13:48:07.668423123lig-publig.imag.fr129.88.11.71.21
2015-01-20 13:48:07.8742301966lig-publig.imag.fr129.88.11.72.20
2015-01-20 13:48:08.078667933lig-publig.imag.fr129.88.11.71.34
2015-01-20 13:48:08.283655922lig-publig.imag.fr129.88.11.71.42
2015-01-20 13:48:08.48868824lig-publig.imag.fr129.88.11.71.12
...............
2015-01-20 16:26:20.7437151772lig-publig.imag.fr129.88.11.728.8
2015-01-20 16:26:20.94905341lig-publig.imag.fr129.88.11.71.14
2015-01-20 16:26:21.1556851944lig-publig.imag.fr129.88.11.72.32
2015-01-20 16:26:21.362095400lig-publig.imag.fr129.88.11.71.98
2015-01-20 16:26:21.569409226lig-publig.imag.fr129.88.11.73.01
2015-01-20 16:26:21.780805466lig-publig.imag.fr129.88.11.77.45
2015-01-20 16:26:21.998869350lig-publig.imag.fr129.88.11.713.5
2015-01-20 16:26:22.2489691829lig-publig.imag.fr129.88.11.745.9
2015-01-20 16:26:22.5123861954lig-publig.imag.fr129.88.11.758.5
2015-01-20 16:26:22.7179611074lig-publig.imag.fr129.88.11.71.45
2015-01-20 16:26:22.92329246lig-publig.imag.fr129.88.11.71.11
2015-01-20 16:26:23.1299651844lig-publig.imag.fr129.88.11.72.26
2015-01-20 16:26:23.335449645lig-publig.imag.fr129.88.11.71.24
2015-01-20 16:26:23.540901444lig-publig.imag.fr129.88.11.71.25
2015-01-20 16:26:23.7479831940lig-publig.imag.fr129.88.11.72.46
2015-01-20 16:26:23.9540991411lig-publig.imag.fr129.88.11.71.47
2015-01-20 16:26:24.15987949lig-publig.imag.fr129.88.11.71.21
2015-01-20 16:26:24.365815420lig-publig.imag.fr129.88.11.71.55
2015-01-20 16:26:24.571516227lig-publig.imag.fr129.88.11.71.22
2015-01-20 16:26:24.777325947lig-publig.imag.fr129.88.11.71.34
2015-01-20 16:26:24.9839051960lig-publig.imag.fr129.88.11.72.43
2015-01-20 16:26:25.188976531lig-publig.imag.fr129.88.11.71.19
2015-01-20 16:26:25.394275374lig-publig.imag.fr129.88.11.71.14
2015-01-20 16:26:25.6007451503lig-publig.imag.fr129.88.11.72.19
2015-01-20 16:26:25.805877572lig-publig.imag.fr129.88.11.71.29
2015-01-20 16:26:26.0119101338lig-publig.imag.fr129.88.11.71.47
2015-01-20 16:26:26.2227291515lig-publig.imag.fr129.88.11.77.02
2015-01-20 16:26:26.4290071875lig-publig.imag.fr129.88.11.72.33
2015-01-20 16:26:26.6347471006lig-publig.imag.fr129.88.11.71.61
2015-01-20 16:26:26.8402221273lig-publig.imag.fr129.88.11.71.35
\n", "

44036 rows × 4 columns

\n", "
" ], "text/plain": [ " taille cible IP temps\n", "date \n", "2015-01-20 13:48:02.052172 665 lig-publig.imag.fr 129.88.11.7 22.5\n", "2015-01-20 13:48:02.277315 1373 lig-publig.imag.fr 129.88.11.7 21.2\n", "2015-01-20 13:48:02.502054 262 lig-publig.imag.fr 129.88.11.7 21.2\n", "2015-01-20 13:48:02.729257 1107 lig-publig.imag.fr 129.88.11.7 23.3\n", "2015-01-20 13:48:02.934648 1128 lig-publig.imag.fr 129.88.11.7 1.41\n", "2015-01-20 13:48:03.160397 489 lig-publig.imag.fr 129.88.11.7 21.9\n", "2015-01-20 13:48:03.443055 1759 lig-publig.imag.fr 129.88.11.7 78.7\n", "2015-01-20 13:48:03.672157 1146 lig-publig.imag.fr 129.88.11.7 25.1\n", "2015-01-20 13:48:03.899933 884 lig-publig.imag.fr 129.88.11.7 24.0\n", "2015-01-20 13:48:04.122687 1422 lig-publig.imag.fr 129.88.11.7 19.5\n", "2015-01-20 13:48:04.344135 1180 lig-publig.imag.fr 129.88.11.7 18.0\n", "2015-01-20 13:48:04.566271 999 lig-publig.imag.fr 129.88.11.7 18.8\n", "2015-01-20 13:48:04.998504 1020 lig-publig.imag.fr 129.88.11.7 24.3\n", "2015-01-20 13:48:05.205172 71 lig-publig.imag.fr 129.88.11.7 3.45\n", "2015-01-20 13:48:05.414106 34 lig-publig.imag.fr 129.88.11.7 5.85\n", "2015-01-20 13:48:05.620117 1843 lig-publig.imag.fr 129.88.11.7 2.31\n", "2015-01-20 13:48:05.824949 407 lig-publig.imag.fr 129.88.11.7 1.14\n", "2015-01-20 13:48:06.029177 356 lig-publig.imag.fr 129.88.11.7 1.10\n", "2015-01-20 13:48:06.234464 1511 lig-publig.imag.fr 129.88.11.7 2.18\n", "2015-01-20 13:48:06.438772 587 lig-publig.imag.fr 129.88.11.7 1.27\n", "2015-01-20 13:48:06.643208 809 lig-publig.imag.fr 129.88.11.7 1.33\n", "2015-01-20 13:48:06.848323 1364 lig-publig.imag.fr 129.88.11.7 1.51\n", "2015-01-20 13:48:07.053400 1153 lig-publig.imag.fr 129.88.11.7 1.44\n", "2015-01-20 13:48:07.257704 853 lig-publig.imag.fr 129.88.11.7 1.30\n", "2015-01-20 13:48:07.463275 1510 lig-publig.imag.fr 129.88.11.7 2.17\n", "2015-01-20 13:48:07.668423 123 lig-publig.imag.fr 129.88.11.7 1.21\n", "2015-01-20 13:48:07.874230 1966 lig-publig.imag.fr 129.88.11.7 2.20\n", "2015-01-20 13:48:08.078667 933 lig-publig.imag.fr 129.88.11.7 1.34\n", "2015-01-20 13:48:08.283655 922 lig-publig.imag.fr 129.88.11.7 1.42\n", "2015-01-20 13:48:08.488688 24 lig-publig.imag.fr 129.88.11.7 1.12\n", "... ... ... ... ...\n", "2015-01-20 16:26:20.743715 1772 lig-publig.imag.fr 129.88.11.7 28.8\n", "2015-01-20 16:26:20.949053 41 lig-publig.imag.fr 129.88.11.7 1.14\n", "2015-01-20 16:26:21.155685 1944 lig-publig.imag.fr 129.88.11.7 2.32\n", "2015-01-20 16:26:21.362095 400 lig-publig.imag.fr 129.88.11.7 1.98\n", "2015-01-20 16:26:21.569409 226 lig-publig.imag.fr 129.88.11.7 3.01\n", "2015-01-20 16:26:21.780805 466 lig-publig.imag.fr 129.88.11.7 7.45\n", "2015-01-20 16:26:21.998869 350 lig-publig.imag.fr 129.88.11.7 13.5\n", "2015-01-20 16:26:22.248969 1829 lig-publig.imag.fr 129.88.11.7 45.9\n", "2015-01-20 16:26:22.512386 1954 lig-publig.imag.fr 129.88.11.7 58.5\n", "2015-01-20 16:26:22.717961 1074 lig-publig.imag.fr 129.88.11.7 1.45\n", "2015-01-20 16:26:22.923292 46 lig-publig.imag.fr 129.88.11.7 1.11\n", "2015-01-20 16:26:23.129965 1844 lig-publig.imag.fr 129.88.11.7 2.26\n", "2015-01-20 16:26:23.335449 645 lig-publig.imag.fr 129.88.11.7 1.24\n", "2015-01-20 16:26:23.540901 444 lig-publig.imag.fr 129.88.11.7 1.25\n", "2015-01-20 16:26:23.747983 1940 lig-publig.imag.fr 129.88.11.7 2.46\n", "2015-01-20 16:26:23.954099 1411 lig-publig.imag.fr 129.88.11.7 1.47\n", "2015-01-20 16:26:24.159879 49 lig-publig.imag.fr 129.88.11.7 1.21\n", "2015-01-20 16:26:24.365815 420 lig-publig.imag.fr 129.88.11.7 1.55\n", "2015-01-20 16:26:24.571516 227 lig-publig.imag.fr 129.88.11.7 1.22\n", "2015-01-20 16:26:24.777325 947 lig-publig.imag.fr 129.88.11.7 1.34\n", "2015-01-20 16:26:24.983905 1960 lig-publig.imag.fr 129.88.11.7 2.43\n", "2015-01-20 16:26:25.188976 531 lig-publig.imag.fr 129.88.11.7 1.19\n", "2015-01-20 16:26:25.394275 374 lig-publig.imag.fr 129.88.11.7 1.14\n", "2015-01-20 16:26:25.600745 1503 lig-publig.imag.fr 129.88.11.7 2.19\n", "2015-01-20 16:26:25.805877 572 lig-publig.imag.fr 129.88.11.7 1.29\n", "2015-01-20 16:26:26.011910 1338 lig-publig.imag.fr 129.88.11.7 1.47\n", "2015-01-20 16:26:26.222729 1515 lig-publig.imag.fr 129.88.11.7 7.02\n", "2015-01-20 16:26:26.429007 1875 lig-publig.imag.fr 129.88.11.7 2.33\n", "2015-01-20 16:26:26.634747 1006 lig-publig.imag.fr 129.88.11.7 1.61\n", "2015-01-20 16:26:26.840222 1273 lig-publig.imag.fr 129.88.11.7 1.35\n", "\n", "[44036 rows x 4 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fichier_1 = open(\"liglab2.log\").readlines()\n", "fichier_1 = [l for l in fichier_1 if 'time' in l]\n", "raw_data = [l.split(' ') for l in fichier_1]\n", "data = [ [d[0][1:-1], int(d[1]), d[4], d[5][1:-2], d[8].split('=')[1]] for d in raw_data]\n", "data = pd.DataFrame(data, columns=['date', 'taille', 'cible', 'IP', 'temps'])\n", "data['date'] = pd.to_datetime(data['date'], unit='s')\n", "sorted_data = data.set_index('date').sort_index()\n", "sorted_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous vérfions que toutes les données proviennents de la même machine cible. Ici pas de problème." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "lig-publig.imag.fr 44036\n", "Name: cible, dtype: int64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_data['cible'].value_counts()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "129.88.11.7 44036\n", "Name: IP, dtype: int64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_data['IP'].value_counts()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }