"# Sujet 4 : Estimation de la latence et de la capacité d’une connexion à partir de mesures asymétriques"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"On commence par déclarer les bibliothèques utilisés :\n",
"\n",
...
...
@@ -19,7 +25,10 @@
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
...
...
@@ -36,14 +45,20 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"## Connexion courte à l'intérieur d'un campus"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"On commence par récupérer les données à étudier :"
]
...
...
@@ -51,7 +66,10 @@
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"name": "stdout",
...
...
@@ -87,7 +105,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"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",
...
...
@@ -99,7 +120,10 @@
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"name": "stdout",
...
...
@@ -137,7 +161,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"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",
...
...
@@ -147,13 +174,16 @@
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lu 44413 lignes en 0.189 sec\n"
"Lu 44413 lignes en 0.196 sec\n"
]
}
],
...
...
@@ -177,7 +207,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"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."
]
...
...
@@ -185,7 +218,10 @@
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
...
...
@@ -665,7 +701,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"### Premiers constats sur les données"
]
...
...
@@ -673,12 +712,15 @@
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc560a1f128>"
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3c0b9d8160>"
]
},
"execution_count": 6,
...
...
@@ -704,7 +746,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"On remarque quelques points avec une latence nettement plus importante que d'habitude.\n",
"\n",
...
...
@@ -714,12 +759,15 @@
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc55e9a3ac8>"
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3c09959c18>"
]
},
"execution_count": 7,
...
...
@@ -745,14 +793,20 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"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": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"### Y a t'il une variabilité par heure ou par jour de la semaine ?\n",
"\n",
...
...
@@ -762,12 +816,16 @@
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"metadata": {
"hideCode": false,
"hideOutput": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc55e77ab38>"
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3c097366a0>"
]
},
"execution_count": 8,
...
...
@@ -799,7 +857,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"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."
]
...
...
@@ -807,7 +868,10 @@
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"name": "stdout",
...
...
@@ -825,14 +889,20 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"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": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"### Temps de transmission en fonction de la taille des messages et effet de la segmentation.\n",
"\n",
...
...
@@ -842,12 +912,15 @@
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc55e78f8d0>"
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3c097a3cc0>"
]
},
"execution_count": 10,
...
...
@@ -873,7 +946,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"On voit bien les effets de la segmentation du paquet qui commence un peu avant 1500. C'est visiblement ce qui à été à l'origine de la bizarrerie que j'avais constaté et qui fait qu'il y a une augmentation du nombre de requêtes autour de 70~80 ms par rapport à des durées légèrement plus brèves.\n",
"\n",
...
...
@@ -896,7 +972,10 @@
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
...
...
@@ -1437,7 +1516,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"On regarde les données sélectionnées sous forme de graphique :"
]
...
...
@@ -1445,12 +1527,15 @@
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc55e690160>"
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3c09644940>"
]
},
"execution_count": 12,
...
...
@@ -1476,20 +1561,26 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"Et l'histogramme de répartition des durées :"
"Et l'histogramme de répartition des durées (attention échelle logarithmique) :"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc55e5a0278>"
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3c09534400>"
]
},
"execution_count": 13,
...
...
@@ -1515,7 +1606,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": false,
"hidePrompt": false
},
"source": [
"On remarque bien l'absence du pic vers 70~80 ms que l'on avait avant.\n",
"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.<br/>[2] The condition number is large, 2.02e+04. This might indicate that there are<br/>strong multicollinearity or other numerical problems."