{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sujet 4 : Estimation de la latence et de la capacité d’une connexion à partir de mesures asymétriques" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On commence par déclarer les bibliothèques utilisés :\n", "\n", "Note : `urllib.request` n'y est pas car elle n'est utilisée que dans le cas où on doit télécharger les données." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import re\n", "import gzip\n", "import time\n", "import pandas\n", "import io\n", "import os\n", "import datetime" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connexion courte à l'intérieur d'un campus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On commence par récupérer les données à étudier :" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Les données sont déjà présentes en local.\n" ] } ], "source": [ "def telecharger_fichier_si_necessaire(data_url):\n", "\n", " # Extrait le nom du fichier à partir de l'URL\n", " data_file = data_url[(data_url.rindex(\"/\")+1):]\n", "\n", " # Vérification de l'extention\n", " if data_file[-7:] != \".log.gz\":\n", " raise Exception(\"Le fichier nom de fichier \"+data_file+\" ne finit pas par \\\".log.gz\\\" !\")\n", "\n", " if not os.access(data_file, os.R_OK):\n", " import urllib.request\n", " print(\"Les données n'existent pas en local, on les télécharges.\")\n", " urllib.request.urlretrieve(data_url, data_file)\n", " if os.access(data_file, os.R_OK):\n", " print(\"Fichier récupéré.\")\n", " else:\n", " raise Exception(\"Le fichier n'a pas pu être récupéré !\")\n", " else:\n", " print(\"Les données sont déjà présentes en local.\")\n", "\n", "telecharger_fichier_si_necessaire(\"http://mescal.imag.fr/membres/arnaud.legrand/teaching/2014/RICM4_EP_ping/liglab2.log.gz\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On définit la fonction qui va lire chaque ligne pour en extraire les données. La ligne retournée sera formatée en CSV.\n", "\n", "Comme ce qui nous intéresse est le temps mis pour latence (ou \"ping\") il faut impérativement que celle ci soit présente pour que la ligne soit reconnue, pour les lignes dans ce cas on retournera `Ǹone`.\n", "\n", "Si la ligne est totalement illisible on soulèvera une exception afin d'avertir l'utilisateur qu'il y a des lignes dont le format est illisible par le programme. Ceci est préférable au fait de retourner `Ǹone` car si c'était le cas on risquerait de masquer des données utiles, par exemple si `ping` avait retourné des données en secondes plutôt qu'en millisecondes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1421761682.052172,665,22.5\n", "\n", "None\n", "\n", "Exception (attendue) : La ligne \"[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 s\" n'est pas dans le format attendu.\n" ] } ], "source": [ "extractDataFromLineRegExp = re.compile(\"^\\[([0-9\\.]+)\\] ([0-9]+) bytes[^:]*: icmp_seq=[0-9]+ ttl=[0-9]+( time=([0-9\\.]+) ms)?$\")\n", "def extractDataFromLine(line):\n", " match = extractDataFromLineRegExp.match(line)\n", " if match and match[4]:\n", " return match[1]+\",\"+match[2]+\",\"+match[4]+\"\\n\"\n", " elif match:\n", " return None\n", " else:\n", " raise Exception(\"La ligne \\\"\"+line+\"\\\" n'est pas dans le format attendu.\")\n", "\n", "# Quelques essais\n", "print(extractDataFromLine(\"[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 ms\")) # Le retour à la ligne est inclus dans ce qui est retourné\n", "print(extractDataFromLine(\"[1421773281.582445] 13 bytes from stackoverflow.com (198.252.206.140): icmp_seq=1 ttl=50\"))\n", "print()\n", "try:\n", " print(extractDataFromLine(\"[1421761682.052172] 665 bytes from lig-publig.imag.fr (129.88.11.7): icmp_seq=1 ttl=60 time=22.5 s\"))\n", " print(\"On devrait avoir une exception ici.\")\n", "except Exception as e:\n", " print(\"Exception (attendue) : \"+e.args[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lit les données du fichier, utilise la fonction `extractDataFromLine` définit précédemment pour extraire les données et les placer dans une variables `csv_data` qui contiendra les données au format CSV.\n", "\n", "J'ai dans un premier temps essayé de ne pas passer par une variable intermédiaire et ajouter les données directement dans le DataFrame mais c'était extrêmement lent. Il aurait aussi été possible de passer par un fichier intermédiaire. En cas de données plus imposantes cela aurait été nécessaire." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lu 44413 lignes en 0.187 sec\n" ] } ], "source": [ "def convertit_fichier_en_csv(data_file):\n", " nb = 0\n", " start_time = time.time()\n", " data = '\"date\",\"size\",\"time\"\\n' # La première ligne du CSV à les noms de champs\n", " with gzip.open(data_file, 'rb') as file:\n", " for line in file:\n", " line_data = extractDataFromLine(line.decode('utf-8').strip())\n", " if line_data:\n", " data += line_data\n", " nb += 1\n", "\n", " print (\"Lu %d lignes en %.3f sec\" % (nb, time.time() - start_time))\n", " return data\n", "\n", "csv_data = convertit_fichier_en_csv(\"liglab2.log.gz\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Traduit le tableau du format CSV en temps que DataFrame pandas. Comme on lit depuis le contenu d'une variable on utilise `io.StringIO` qui permet de lire une variable comme on lit un fichier." ] }, { "cell_type": "code", "execution_count": 5, "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", "
datesizetime
01.421762e+0966522.50
11.421762e+09137321.20
21.421762e+0926221.20
31.421762e+09110723.30
41.421762e+0911281.41
51.421762e+0948921.90
61.421762e+09175978.70
71.421762e+09114625.10
81.421762e+0988424.00
91.421762e+09142219.50
101.421762e+09118018.00
111.421762e+0999918.80
121.421762e+09102024.30
131.421762e+09713.45
141.421762e+09345.85
151.421762e+0918432.31
161.421762e+094071.14
171.421762e+093561.10
181.421762e+0915112.18
191.421762e+095871.27
201.421762e+098091.33
211.421762e+0913641.51
221.421762e+0911531.44
231.421762e+098531.30
241.421762e+0915102.17
251.421762e+091231.21
261.421762e+0919662.20
271.421762e+099331.34
281.421762e+099221.42
291.421762e+09241.12
............
440061.421771e+09177228.80
440071.421771e+09411.14
440081.421771e+0919442.32
440091.421771e+094001.98
440101.421771e+092263.01
440111.421771e+094667.45
440121.421771e+0935013.50
440131.421771e+09182945.90
440141.421771e+09195458.50
440151.421771e+0910741.45
440161.421771e+09461.11
440171.421771e+0918442.26
440181.421771e+096451.24
440191.421771e+094441.25
440201.421771e+0919402.46
440211.421771e+0914111.47
440221.421771e+09491.21
440231.421771e+094201.55
440241.421771e+092271.22
440251.421771e+099471.34
440261.421771e+0919602.43
440271.421771e+095311.19
440281.421771e+093741.14
440291.421771e+0915032.19
440301.421771e+095721.29
440311.421771e+0913381.47
440321.421771e+0915157.02
440331.421771e+0918752.33
440341.421771e+0910061.61
440351.421771e+0912731.35
\n", "

44036 rows × 3 columns

\n", "
" ], "text/plain": [ " date size time\n", "0 1.421762e+09 665 22.50\n", "1 1.421762e+09 1373 21.20\n", "2 1.421762e+09 262 21.20\n", "3 1.421762e+09 1107 23.30\n", "4 1.421762e+09 1128 1.41\n", "5 1.421762e+09 489 21.90\n", "6 1.421762e+09 1759 78.70\n", "7 1.421762e+09 1146 25.10\n", "8 1.421762e+09 884 24.00\n", "9 1.421762e+09 1422 19.50\n", "10 1.421762e+09 1180 18.00\n", "11 1.421762e+09 999 18.80\n", "12 1.421762e+09 1020 24.30\n", "13 1.421762e+09 71 3.45\n", "14 1.421762e+09 34 5.85\n", "15 1.421762e+09 1843 2.31\n", "16 1.421762e+09 407 1.14\n", "17 1.421762e+09 356 1.10\n", "18 1.421762e+09 1511 2.18\n", "19 1.421762e+09 587 1.27\n", "20 1.421762e+09 809 1.33\n", "21 1.421762e+09 1364 1.51\n", "22 1.421762e+09 1153 1.44\n", "23 1.421762e+09 853 1.30\n", "24 1.421762e+09 1510 2.17\n", "25 1.421762e+09 123 1.21\n", "26 1.421762e+09 1966 2.20\n", "27 1.421762e+09 933 1.34\n", "28 1.421762e+09 922 1.42\n", "29 1.421762e+09 24 1.12\n", "... ... ... ...\n", "44006 1.421771e+09 1772 28.80\n", "44007 1.421771e+09 41 1.14\n", "44008 1.421771e+09 1944 2.32\n", "44009 1.421771e+09 400 1.98\n", "44010 1.421771e+09 226 3.01\n", "44011 1.421771e+09 466 7.45\n", "44012 1.421771e+09 350 13.50\n", "44013 1.421771e+09 1829 45.90\n", "44014 1.421771e+09 1954 58.50\n", "44015 1.421771e+09 1074 1.45\n", "44016 1.421771e+09 46 1.11\n", "44017 1.421771e+09 1844 2.26\n", "44018 1.421771e+09 645 1.24\n", "44019 1.421771e+09 444 1.25\n", "44020 1.421771e+09 1940 2.46\n", "44021 1.421771e+09 1411 1.47\n", "44022 1.421771e+09 49 1.21\n", "44023 1.421771e+09 420 1.55\n", "44024 1.421771e+09 227 1.22\n", "44025 1.421771e+09 947 1.34\n", "44026 1.421771e+09 1960 2.43\n", "44027 1.421771e+09 531 1.19\n", "44028 1.421771e+09 374 1.14\n", "44029 1.421771e+09 1503 2.19\n", "44030 1.421771e+09 572 1.29\n", "44031 1.421771e+09 1338 1.47\n", "44032 1.421771e+09 1515 7.02\n", "44033 1.421771e+09 1875 2.33\n", "44034 1.421771e+09 1006 1.61\n", "44035 1.421771e+09 1273 1.35\n", "\n", "[44036 rows x 3 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw_data = pandas.read_csv(io.StringIO(csv_data))\n", "# csv_data = None # Libère la mémoire\n", "raw_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Premiers constats sur les données" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "raw_data['time'].plot(style='*')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On remarque quelques points avec une latence nettement plus importante que d'habitude.\n", "\n", "Sinon en histogramme (attention l'échelle est logarithmique) :" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "raw_data['time'].hist(log=True, bins=50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On remarque bien que la majorité des requêtes ont une réponse quasi immédiate. Beaucoup ont une réponse dans les 30 ms. Les durées de 70-80 ms semble être surprenamment courantes. Il n'y a que très peu de réponses dont la durée est supérieure à 90ms." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Y a t'il une variabilité par heure ou par jour de la semaine ?\n", "\n", "Comme il s'agit d'un campus on peut s'attendre à une variabilité des performances due aux activités. On peut supposer que le réseau soit plus chargé durant les jours ouvrées et aux heures de travail." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def timestamp_vers_heure(timestamp):\n", " str_time = datetime.datetime.fromtimestamp(timestamp).strftime('%H:%M:%S')\n", " parts = str_time.split(':')\n", " return float(parts[0]) + (float(parts[1]) / 60.0) + (float(parts[0]) / 3600.0)\n", "\n", "raw_data['heure'] = [timestamp_vers_heure(ts) for ts in raw_data['date']]\n", "raw_data.plot(x='heure', y='time', style='*')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il semblerait que seuls quelques heures dans l'après midi soit présentes. Les données ont été prises juste sur quelques heures ou plusieurs jours aux mêmes heures ? Il aurait fallu vérifier la durée des l'observation." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20/01/2015 13:48:02\n", "20/01/2015 16:26:26\n" ] } ], "source": [ "print(datetime.datetime.fromtimestamp(raw_data['date'].min()).strftime('%d/%m/%Y %H:%M:%S'))\n", "print(datetime.datetime.fromtimestamp(raw_data['date'].max()).strftime('%d/%m/%Y %H:%M:%S'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les données ne sont présente que pour une petite tranche horaire durant une seule journée. Il s'agit d'un mardi donc jour ouvré mais je ne penses pas que l'on puisse faire des statistiques liés à la variation de charge réseau. Les données ne montrent pas de fortes variations qui pourrait être expliqué par un usage très différent du réseau à un moment donné." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Temps de transmission en fonction de la taille des messages.\n" ] } ], "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 }