331 lines
118 KiB
Plaintext
331 lines
118 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"import ipaddress\n",
|
|
"\n",
|
|
"import runners\n",
|
|
"from structure import Bridge\n",
|
|
"from structure import SpeedTestServer, RemoteServer, LocalServer\n",
|
|
"from structure import Interface, IpMethod\n",
|
|
"\n",
|
|
"%load_ext dotenv\n",
|
|
"%dotenv"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"ename": "NameError",
|
|
"evalue": "name 'runners' is not defined",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
|
|
"\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)",
|
|
"\u001B[0;32m<ipython-input-2-5781debf60ce>\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m runner = runners.ProxmoxRunner(\n\u001B[0m\u001B[1;32m 2\u001B[0m \u001B[0mhost\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mos\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetenv\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'PROXMOX_HOST'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[0mnode\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mos\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetenv\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'PROXMOX_NODE'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 4\u001B[0m \u001B[0muser\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mos\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetenv\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'PROXMOX_USER'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 5\u001B[0m \u001B[0mtoken_name\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mos\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mgetenv\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'PROXMOX_TOKEN_NAME'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;31mNameError\u001B[0m: name 'runners' is not defined"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"runner = runners.ProxmoxRunner(\n",
|
|
" host=os.getenv('PROXMOX_HOST'),\n",
|
|
" node=os.getenv('PROXMOX_NODE'),\n",
|
|
" user=os.getenv('PROXMOX_USER'),\n",
|
|
" token_name=os.getenv('PROXMOX_TOKEN_NAME'),\n",
|
|
" token_value=os.getenv('PROXMOX_TOKEN_VALUE'),\n",
|
|
"\n",
|
|
" template_id=9000,\n",
|
|
" initial_vm_id=21002,\n",
|
|
"\n",
|
|
" internet_bridge='vmbr2',\n",
|
|
"\n",
|
|
" management_bridge='vmbr4',\n",
|
|
" management_initial_ip=ipaddress.ip_address('10.21.12.2'),\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"g_st = SpeedTestServer([Interface(IpMethod.Auto4)])\n",
|
|
"l_st = SpeedTestServer([Interface(IpMethod.Dhcp4)])\n",
|
|
"\n",
|
|
"rs = RemoteServer([Interface(IpMethod.Auto4)])\n",
|
|
"ls = LocalServer([\n",
|
|
" Interface(IpMethod.Auto4, limit=1),\n",
|
|
" Interface(IpMethod.Auto4, limit=1),\n",
|
|
"], l_st)\n",
|
|
"\n",
|
|
"top_level_bridge = Bridge(*[\n",
|
|
" g_st.get_interfaces()[0],\n",
|
|
" rs.get_interfaces()[0],\n",
|
|
" *ls.get_interfaces()[0:2],\n",
|
|
"])\n",
|
|
"runner.build(top_level_bridge)\n",
|
|
"\n",
|
|
"# Test from the client to the global network via the proxy\n",
|
|
"g_st.server()\n",
|
|
"l_st.client(rs.get_interfaces()[0])\n",
|
|
"\n",
|
|
"# Test from the global network to the client via the proxy\n",
|
|
"g_st.server()\n",
|
|
"l_st.client(rs.get_interfaces()[0])\n",
|
|
"\n",
|
|
"# Clean up\n",
|
|
"runner.teardown()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 60,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from itertools import cycle\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"def plot_iperf_results(data, title, events=None, filename=None, start_at_zero=True):\n",
|
|
" cycol = cycle('brgy')\n",
|
|
"\n",
|
|
" fig = plt.figure()\n",
|
|
" axes = fig.add_axes([0,0,1,1])\n",
|
|
"\n",
|
|
" axes.set_title(title, pad=20.0)\n",
|
|
" axes.set_xlabel('Time (s)')\n",
|
|
" axes.set_ylabel('Throughput (Mbps)')\n",
|
|
"\n",
|
|
" for k, v in data.items():\n",
|
|
" intervals = [x['sum'] for x in v['intervals'] if not x['sum']['omitted']]\n",
|
|
"\n",
|
|
" x_axis = [((x['start'] + x['end'])/2) for x in intervals]\n",
|
|
" y_axis = [x['bits_per_second']/1e6 for x in intervals]\n",
|
|
" axes.plot(x_axis, y_axis, next(cycol), label=k)\n",
|
|
"\n",
|
|
" legend = axes.legend()\n",
|
|
"\n",
|
|
" if start_at_zero:\n",
|
|
" axes.set_ylim(bottom=0)\n",
|
|
" axes.set_xlim(left=0)\n",
|
|
"\n",
|
|
" if events is not None:\n",
|
|
" for k, v in events.items():\n",
|
|
" axes.axvline(k, linestyle='--', color='grey', ymax=0.92)\n",
|
|
" axes.annotate(v, (k, 1.02), xycoords=axes.get_xaxis_transform(), ha='center')\n",
|
|
"\n",
|
|
" if filename is not None:\n",
|
|
" fig.savefig(filename, bbox_extra_artists=(legend,), bbox_inches='tight', pad_inches=0.3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 61,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Manual results\n",
|
|
"# sudo iperf3 -c X.X.X.X -t 30 -O 5 -J\n",
|
|
"\n",
|
|
"import json\n",
|
|
"\n",
|
|
"def load_json_from_file(path):\n",
|
|
" with open(path, 'r') as f:\n",
|
|
" return json.loads(f.read())\n",
|
|
"\n",
|
|
"One1MBStraight = load_json_from_file('manual/One1MBStraight.json')\n",
|
|
"One2MBStraight = load_json_from_file('manual/One2MBStraight.json')\n",
|
|
"\n",
|
|
"Two1MBAggregate = load_json_from_file('manual/Two1MBAggregate.json')\n",
|
|
"Two2MBAggregate = load_json_from_file('manual/Two2MBAggregate.json')\n",
|
|
"\n",
|
|
"One1MBOne2MBAggregate = load_json_from_file('manual/One1MBOne2MBAggregate.json')\n",
|
|
"\n",
|
|
"Two2MBAggregateKillOneRecoverOne = load_json_from_file('manual/Two2MBAggregateKillOneRecoverOne.json')\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 62,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": "<Figure size 432x288 with 1 Axes>",
|
|
"image/png": "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AE4++WT+85//AJCXl8eIESN49NFHyc3d+ljrtdde45xzzinu17ZtWz755BM6depEly5dADj11FOZMmVK8W+OP/54APr161cqSRxxxBE0btyYdu3ascMOO7B06VJef/11ZsyYwZ577kl+fj6vv/46X3zxBe+++y77779/8a0wZWsRylqzZg2rV6/mgAMOqFJMcUuWLKF9+/alug0ePJhWrVrRpEkTunfvzqJFi5g2bRqDBg2iffv25ObmMmLEiFLTKU95yx8o7l7Rch07diyvvvoq06dPL1Uaj3vllVd4+OGHyc/PZ6+99mLlypUsWLCAKVOmMHz4cHJycth555056KCDSv1uhx124Ntvv600fhGJRlaUgKtTUk23Dz/8kNatW5eqFqzMgAED+PDDD2nWrFnxjjqZ9u3b07dvX957772k55PjV7q+8MILTJkyhX/+85/ccMMNfPjhh0kTcVXES5E5OTmlqjcTS5fxfu7Oqaeeyp/+9KdS4/jnP/9ZoxhSjSmuadOmW916kyze2pJ4pXHz5s0rHX7lypWsW7eOLVu2sHHjxq1+4+7ccccdHHrooaW6v/jiixWOd+PGjTRt2rQKkYtIJqkEnAbPPPMMq1atYsqUKfz2t79NWv1bnnHjxlV6wc/69euZNWsWu+++OwBFRUXFF+w8/vjj7LvvvhQVFfH1119z4IEH8uc//5k1a9awbt26UuM5+OCDGT9+fHHyWbVqFV27dmXhwoV89tlnADzyyCPFJc+qGjx4ME899VTxQciqVatYtGgRe++9N1OmTCmuYl+1ahUALVu2ZO3atVuNp1WrVrRp06b4/G5VY+rSpUvSknFZAwYM4K233mLFihUUFhYyceLE4uk0bNiQLVu2JP1dsuVfVkXL9ZxzzuG6665jxIgRxeedEx166KHcc889xdP/9NNP+fHHH9l///154oknKCwsZMmSJbz55pulfvfpp5+mfIW+iGSeEnANDB8+nH322YdPPvmEDh06cP/997NixQrGjBnDfffdR5cuXbjgggu46KLQ5PHtt99Ohw4dWLx4MXl5eZx55plbjfOwww7jwAMPTDq9ESNGkJ+fT79+/TjttNOKz+01b96c999/n549e/LGG28wduxYCgsLOfnkk+nVqxd9+vThwgsvpHXr1qXGd+aZZ7LrrruSl5dH7969efzxx2nSpAl/+9vf+NWvfkWvXr1o0KAB5557brWWT/fu3bn++us55JBDyMvL4+CDDy6uDp4wYQLHH388vXv3Lq6mPeqoo3j22WeLL8JK9NBDD3HppZeSl5fH7NmzGTt2bMpxNG/enN133704+ZVnp512Yty4cRx44IH07t2bfv36ccwxxwBw9tlnF1fpJxt/2eVfVnnL9eGHH6Zhw4acdNJJjBkzhmnTpvHGG2+U+u2ZZ55J9+7d6du3Lz179uScc86hoKCA4447js6dO9O9e3dGjhzJPvvsU/ybpUuX0rRpU37yk5+kvJxEJLPMfavHLNc5/fv39+nTp5fqNn/+fLp16xZRRHVLixYttirdSmnPPvssM2bM4Prrr6/1cdfF5X/LLbew3XbbccYZZ2zVT/8dkcwxsxnu3j9Zv6w4ByxSmeOOO46VK1dGHUbGtG7dmlNOOSXqMESkAkrAWaCulb7qqmRV/rWhLi7/008/PeoQRKQSOgcsIiISASVgERGRCCgBi4iIREAJWEREJAJKwNUUf8hF9+7d6dGjB7fddlulv1FzhBVLZ3OEybg7Bx10ED/88EPapjF9+nQuvPDCKv1m0KBBxG+7GzJkSHHDEyKSXZSAqyk3N5e//vWvzJs3j3fffZe77rqLefPmVfgbNUdYsXQ2R5jMiy++SO/evdluu+1S/k28NadU9e/fv1TrUFV1yimncPfdd1f79yJSdykBV9NOO+1E3759gfAIxW7duvHNN9+oOcI60hzhRx99VDzdvLy8pI3TP/bYY8VPulq4cCE///nPGTFiBN26deOEE05g/fr1xfM9evRo+vbty5NPPpm0ycJnn32WwYMH4+4sWbKELl268N133zF58mSOPPJIILSaNGrUKAYMGECfPn14/vnnAdiwYQPDhg2jW7duHHfccWzYsKE4xqOPPpqJEycm3Q5EZNuWHfcBR9we4cKFC5k1axZ77bWXmiOsI80R3nvvvVx00UWMGDGCzZs3Jy25Tp06tbhtXQgtFt1///0MHDiQUaNGcffddxfHsv322zNz5ky+/fZb9t57762aLDzuuON4+umnueuuu3j55Ze55ppr+MlPflJ8kAJwww03cNBBB/HAAw+wevVqBgwYwJAhQxg/fjzNmjVj/vz5zJkzp/jADqBNmzZs2rSJlStXsv3221e6HYnItkMl4Bpat24dv/zlL7n11luLqzLV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\n"
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plot_iperf_results(\n",
|
|
" {\n",
|
|
" '1x1MBps connection (not proxied)': One1MBStraight,\n",
|
|
" '2x1MBps connections (proxied)': Two1MBAggregate,\n",
|
|
" },\n",
|
|
" 'Proxying adds additional bandwidth',\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 63,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": "<Figure size 432x288 with 1 Axes>",
|
|
"image/png": "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aNCgWr+NHj2aN9980/V90aJFpKamVhvn9ddfZ/Xq1fzwww/MmzePioqKxie+BaoZgK+++mouuugiv8z7oYce4oorrmj09E0NwFVVVQ0av2/fvq5g2hjXXHMNDzzwQKOnV0oFngbgJpg6dSrdunWrNqyqqoqjjjqKJUuWAPCXv/yFv/3tbwCMGTOG+Ph4j/OaMmUKy5Yto7KykqKiIrZu3UpaWprHcYuKioiJiSE0NBSA2NhY/vCHPzBy5EimT5/OgQMHAHjssccYMWIEKSkpnHfeebXmY7PZ+NOf/sSoUaNISUlh4cKFAHz11VeMGTOG0aNHM3fuXMrLywGIj4/n73//O2PHjmX06NFs2rQJgDvuuIO5c+cybdo0hgwZwmOPPeZaxmuvvcaECRNIS0vjqquuwmazAfDpp58yduxYUlNTmT59OllZWTz99NM8/PDDpKWl8d1333HHHXfw4IMPArB69WomTZpESkoKM2fO5NChQ4BVMjBv3jwmTJhAYmIi3333ncdt9u6773LKKacAVonD2WefzSmnnEJCQgK33HKLa7xFixYxevRoRo0axbx58wC49dZbKS0tJS0tjdmzZ9eat7ftP23aNG666SbGjx/Po48+6nG7Ll++nJSUFMrKyiguLmbkyJGsW7eOrKwsV8mKzWbjz3/+M0cddRQpKSk888wzgFWp6rrrriMpKYkTTjiB/fv3u9I0ZcoUvvzyywYHfqVU82m1taDd3XQTrF7t33mmpcEjjzR8urCwMF566SVmzZrFwoUL+fTTT/nll1/qnU5EOOGEE/jss88oKCjgzDPPJDMzs9o4s2fPJjIyki1btvDII4+4AnBxcTHjx4/n4Ycf5q677uLOO+/k8ccfZ8GCBWRmZhIZGUl+fn6tZT777LNkZWWxevVqwsLCyMvLo6ysjEsuuYSvvvqKxMRELrroIp566iluuukmAHr06MGqVat48sknefDBB3nuuecA2LRpE9988w2FhYUkJSVxzTXXsHXrVt566y1++OEHwsPDufbaa3n99dc59dRTueKKK1i6dCmDBw8mLy+Pbt26cfXVVxMbG8uf/vQnwLoRcLroootYuHAhxx57LPPnz+fOO+/kEccOqqqqYtmyZSxevJg777yzWlE+QGZmJl27diUyMtI1bPXq1aSnpxMZGUlSUhLXX389oaGhzJs3j5UrV9K1a1dOOukkPvjgAxYsWMDjjz/Oai8HmbftD1BRUcGKFSsoKysjISHB43Y988wzue222ygtLWXOnDmMGjWKrKws1/yff/55OnfuzPLlyykvL2fy5MmcdNJJpKenk5GRwYYNG9i3bx8jRoxg7ty5AISEhDBs2DB+/fVXxo0bV8eRp5QKFs0BB8DIkSO58MILmTFjBi+88AIRERE+TXfeeefx5ptv8uabb3L++efX+v31119nzZo17NixgwcffJDs7GzAutj+7ne/A2DOnDl8//33AKSkpDB79mxee+01wsJq32t9+eWXXHXVVa7funXrRkZGBoMHDyYxMRGAiy++mKVLl7qmOfvsswEYN25ctSBx+umnExkZSY8ePejVqxf79u3jq6++YuXKlRx11FGkpaXx1VdfsX37dn7++WemTp3q+itMzVKEmgoKCsjPz+fYY49tUJqccnJy6NmzZ7Vh06dPp3PnzkRFRTFixAiys7NZvnw506ZNo2fPnoSFhTF79uxqy/HG2/YHXMPr2q7z58/niy++YMWKFdVy406ff/45r7zyCmlpaUycOJHc3Fy2bNnC0qVLOf/88wkNDaVv374cf/zx1abr1asXe/bsqTf9SqngaBM54MbkVANt7dq1dOnSpVqxYH0mTJjA2rVr6dChg+tC7UnPnj0ZO3Ysv/zyi8fnyc6arp988glLly7lo48+4p577mHt2rUeA3FDOHORoaGh1Yo33XOXzt+MMVx88cXcd9991ebx0UcfNSkNvqbJKTo6utZfbzyl11/caxrHxMTUO35ubi5FRUVUVlZSVlZWaxpjDAsXLuTkk0+uNnzx4sV1zresrIzo6OgGpFwp1Zw0BxwA7733Hnl5eSxdupTrr7/eY/GvNwsWLKi3wk9JSQnp6ekMHToUALvd7qqw88Ybb3DMMcdgt9vZuXMnxx13HPfffz8FBQUUFRVVm8+JJ57IM8884wo+eXl5JCUlkZWVxdatWwF49dVXXTnPhpo+fTrvvPOO6yYkLy+P7OxsJk2axNKlS11F7Hl5eQB07NiRwsLCWvPp3LkzXbt2dT3fbWiaEhMTPeaMa5owYQLffvstBw8exGazsWjRItdywsPDqays9Didp+1fU13b9aqrruIf//gHs2fPdj13dnfyySfz1FNPuZa/efNmiouLmTp1Km+99RY2m42cnBy++eabatNt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s2TJEg4ePEj//v258847Oeuss7j11lv56quvGDBggKs5wpdffpmrr76aQYMGcfTRRwNW0WnNZvVOPfVUr8ubPXs20dHRlJeXe2yO8O6776ZXr16ui/KcOXMoKCjAGOO1OcLNmzeTkpJCeHg4V1xxBdddd52rOUJnhTJ/NEdot9sJDw/niSeeYNKkSa7mCO12O7169eKLL77gjDPOYNasWXz44YeuCmFOzu1XUlLCkCFDePHFF31OR0xMDEOHDmXr1q0MGzbM63juTQ0aYzj99NM566yzALjyyitJSUlh7NixvP7667XmX3P71+TezKP7dn3llVcIDw/nggsuwGaz8Zvf/Iavv/6aIUOGuKa9/PLLycrKYuzYsRhj6NmzJx988AEzZ87k66+/ZsSIEQwcONB1XAHs27eP6Oho+vTp4/N2Uko1L22OsA3Q5gjr9/7777Ny5Uruvvtuv8+7JW7/hx9+mE6dOnHZZZfV+k3PHaWaT13NEWoOWLULM2fOJDc3N9jJaDZdunThwgsvDHYylFJ10ADcBrS03FdLdfnllwdkvi1x+1966aXBToJSqh5aCUsppZQKAg3ASimlVBBoAFZKKaWCQAOwUkopFQQagBvJ+ZKLESNGMHLkyGrvdfZGmyOsWyCbI/TEGMPxxx/P4cOHA7aMFStWcMMNNzRommnTpuH8290JJ5zganhCKdW2aABupLCwMP71r3+xYcMGfv75Z5544gk2bNhQ5zTaHGHdAtkcoSeLFy8mNTWVTp06+TyNszUnX40fP75a61ANdeGFF/Lkk082enqlVMulAbiR4uLiGDt2LGC9QjE5OZndu3drc4QtpDnC9evXu5abkpLisXH6119/3fWmq6ysLIYPH87s2bNJTk5m1qxZlJSUuNZ73rx5jB07lv/85z8emyx8//33mT59OsYYcnJySExMZO/evSxZsoQZM2YAVqtJc+fOZcKECYwZM4YPP/wQgNLSUs477zySk5OZOXMmpaWlrjSeeeaZLFq0yONxoJRq3drE/4C3bLmJoqLVfp1nbGwaCQmP+DRuVlYW6enpTJw4UZsjbCHNET799NPceOONzJ49m4qKCo851x9++KFaoxgZGRk8//zzTJ48mblz5/Lkk0+60tK9e3dWrVrFnj17mDRpUq0mC2fOnMm7777LE088waeffsqdd95Jnz59XDcpAPfc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\n"
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plot_iperf_results(\n",
|
|
" {\n",
|
|
" '1x1MBps connection (not proxied)': One1MBStraight,\n",
|
|
" '2x1MBps connections (proxied)': Two1MBAggregate,\n",
|
|
" '1x2MBps connection (not proxied)': One2MBStraight,\n",
|
|
" '2x2MBps connections (proxied)': Two2MBAggregate,\n",
|
|
" },\n",
|
|
" 'Proxing bandwidth scaling/overhead'\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 64,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": "<Figure size 432x288 with 1 Axes>",
|
|
"image/png": "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\n"
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plot_iperf_results(\n",
|
|
" {\n",
|
|
" '2x1MBps connections (proxied)': Two1MBAggregate,\n",
|
|
" '1x1MBps+1x2MBps connections (proxied)': One1MBOne2MBAggregate,\n",
|
|
" '2x2MBps connections (proxied)': Two2MBAggregate,\n",
|
|
" },\n",
|
|
" 'Imbalanced connections add',\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 65,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": "<Figure size 432x288 with 1 Axes>",
|
|
"image/png": "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cMEFHHDAAUl3kY0fP57evXvTt29fLrjgAsrLywGYNGkSZsZLL71U8dynn34aM+PJJ58EYOTIkfTu3ZuioiIOP/xw7rvvvtRvUES87Yp+LlZtAf/617/m6quvrrj/+eef06NHDzZu3MjIkSM5+OCD8ZgXffe736V169YALF++nBYtWlBUVERhYSHDhg2rmH4wm9x5552UlJRU3D/ppJPYuHFj2t7v3Xff5cILL0zb+gGuv/76SvtrbZYvX16xPy1atIgJEyakqbKGRS1gSUQBXA8TJkxgxowZST9//PjxfPTRRyxatIjS0lLuv//+isf69evH49GhxsBjjz1GYWFhpddPnjyZhQsX8tprr3H11VezY8eOetc/e/bsuMurbldNLeDrrruOp59+miVLlgBw5ZVX8rvf/Y62bdsC0LZtW1577TUANm7cyFdffVXp9YceeigLFy7kvffe47zzzuPmm2+u1zY1RFUD+IUXXqj490mHm2++mSuuuCLp5++sw+wqN910E8cdd9xevw6CfX3lypV88cUXdXp9Y6IAlkQUwPUwfPhw9t9//0rLdu7cyZFHHlkRbNdeey2//vWvgaDlY2aYGUOGDGHlypUVrzv22GN56623KC8vZ+vWrXzyyScUFRXFfd+tW7fSqlUrmjRpAkDr1q352c9+Rp8+fRg9ejRr164F4K677uKII46gf//+nHXWWfXarl27dvLDHx7Jq69W3q4WLVpwxx13cOmll/LCCy+wZcsWxo8fX/G6s846q+KLxdSpUxk3blyN77t582b2228/IOgVOPXUUxk5ciQ9e/bkxhtvBIJj0ieffDKFhYX07duXJ554otp6PvnkE4477jgKCwsZOHAgn376Ke7OL3/5S/r27Uu/fv0qXjd79mxGjhzJ9773PQ477DDGjx9f0WLv1q0bv/3tbxk4cCD9+vXjo48+qqjhggsuYMiQIQwYMIBnnnkm8m+0i6uuuoq+ffvSv39/7r77bu666y5WrVrFqFGjGDVqVMV6161bB8Dtt99O37596du3L3feeScQtBYPP/xwfvSjH9GnTx++/e1vVwyGq+3/dMuWLbz//vsVX95uuOEGzj33XIYOHUrPnj35+9//XrHdxx57LN/5znc44ogjKCsr4/zzz6dfv34MGDCAWbNmAXDqqafyz3/+E4B777234v92woQJFb0zCxYsYMSIEQwaNIgTTjih4kvWggULKCwspLCwkL/85S+V6jzllFMqfeHMRu4ahCW1cPcG/zNo0CCv6sMPP6z4/cor3UeMSO3PlVdWe8u4li1b5n369Km0bPHixX7YYYf5zJkzvaioyLdv317p8R07dviAAQN87ty57u7+0EMP+aWXXuo/+9nP/LnnnvNHHnnEb7jhBj/vvPP8X//6l7u7jxgxwnv16uX9+vXzgoIC/9vf/laxPsAfeeQRd3e/8cYb/dJLL3V3906dOnlZWZm7u3/99dfVaj/vvPN81qxZCbdr586dvnPnTi8pcX/88cXes2f87Ro3bpy3b9/eP/roo4plI0aM8DfeeMP79evnO3fu9OOPP96XLVvmrVq1qniPgoICLyws9B49enjHjh39888/r/g36dixo69bt85LSkq8T58+/vbbb/uTTz7pEydOrHiPjRs3Vqt9yJAhPnXqVHd3Ly0t9W3btvmTTz7pxx13nO/cudOLi4u9a9euvmrVKp81a5bvs88+vmLFCt+1a5cfffTR/uqrr7q7+yGHHOJ33XWXu7v/5S9/8QsvvNDd3a+99lp/+OGHK/5de/bs6Vu3bvV77rnHTz/9dC8vL3d39/Xr11esZ+3atRX1Re/Pnz/f+/bt61u3bvUtW7b4EUcc4e+8844vW7bMmzRp4u+++667u3//+9+veL/a/k9feeUVHzduXMX93/72t96/f38vKSnxtWvXepcuXfzLL7/0WbNmecuWLf2zzz5zd/dbb73Vzz//fHd3X7JkiXft2tVLS0u9uLjYDz30UJ87d6737NmzYpui++aOHTt86NChvmbNGnd3f/zxxyvW069fP58zZ467u1911VWV/k7mzZvnY8eOrVa/+56/7W3btvm2bdviPqcx2LHDHdx/97uwK5EwAfO9hmxTCzgN+vTpw7nnnsvYsWN58MEHaV7latyXXHIJw4cP59hjj620PNpafPzxxzn77LOrrXfy5Mm8//77fPHFF9x66618/vnnAOTl5XHmmWcCcM455zBv3jwA+vfvz/jx43nkkUdo2jQ44+zFF1+kqKiIoqIinn32WSZOnEhRURFHHXVU3G1p0qQJTZo0wQwOPbQPZ5wRf7suvfRSjjzyyGpXrmnSpAnHHHMMjz/+OKWlpXTr1q3S49Eu6E8//ZQ777yTiy66qOKx448/nnbt2tGiRQvGjRvHvHnz6NevHzNnzuTqq6/m1VdfrXau6JYtW/jyyy8rJnEoKCigZcuWzJs3j7PPPpsmTZpw4IEHMmLECN5++20AhgwZQpcuXcjLy6OoqIjly5dXrC/aYh80aFDF8v/85z/ccsstFBUVMXLkSMrKyvjiiy946aWXuPjiiyv+rav2IlQ1b948TjvtNFq1akXr1q0ZN24cr776KgDdu3ev6AGJfe94/6exvvrqKzp06FBp2amnnkqLFi1o3749o0aN4q233qrY7u7du1fUcs455wBw2GGHccghh/Dxxx9z4IEHctNNNzFq1Chuu+22atu0dOlSFi9ezPHHH09RURG///3vWblyJRs3bmTjxo0MHz4cgHPPPbfS6w444ABWrVqV8N+nZcuWtGzZMuFzGrLoFAVqAUtNGu15wLEiPXcNyqJFi2jbti1r1qyptPzGG29k7dq13HvvvdVeM2TIEBYtWkTLli3p1atXjevu0KEDAwcO5M033+SQQw6p9nh0JOnzzz/P3Llzee655/jDH/7AokWLOOGEEzjhhBOAoBtxwoQJjBw5ssb3ih67bNIk+CD88MP425WXl0deXvzvc2eddRannXYaN9xwQ43vA/Cd73yH888/v9p2xN7v1asX77zzDi+88ALXXXcdo0eP5vrrr0+43trkR+fZJPjCEHtMNPpY7HJ356mnnkrrZfKq1hTtgo73fxobxC1atKg2OU28f0eAVq1aJVXLokWLaNeuXdzAdHf69OlTcenAqNoGmZWVldGiluHBCxcuBKjxUExDF/1v0ChoqYlawGkwdepUNmzYwNy5c7n88ssrPozuv/9+XnzxRR577LEaw+qWW26pdSBSSUkJ7777LoceeigAu3fvrjge9+ijj3LMMcewe/duVqxYwahRo/jjH//Ipk2b2Lp1615vS0lJCSUlJeTlwSuvTOXrr6tvV22OPfZYrr322rit+ljz5s2r2CaAmTNnsmHDBkpLS3n66af55je/yapVq2jZsiXnnHMOv/zlL3nnnXcqraNNmzZ06dKFp59+GoDt27dTUlLCscceyxNPPMGuXbtYu3Ytc+fOZciQIXv1bxF1wgkncPfdd1ccK3733XeBoMV+7733VgT1hg0bKmrasmVL3H+Xp59+mpKSErZt28a0adOq9YrESub/9PDDD+eTTz6ptOyZZ56hrKyM9evXM3v2bI488si4tUyePBmAjz/+mC+++ILevXvz1ltv8e9//5t3332XW2+9lWXLllV6Xe/evVm7dm1FAJeXl/PBBx/Qtm1b2rZtW9EbE1131Mcff1zr2QMLFy6sCOHGSC1gqY0CuB7OPvtshg4dytKlS+nSpQsPPPAA69at45prruH++++nV69eXHbZZVx55ZUA/PjHP2b16tUMHTqUoqIibrrppmrrPPHEEysG61Q1fvx4ioqKGDRoEBMmTGDQoEFA0JJ566236Nu3L6+88grXX389u3bt4pxzzqkYVHPFFVckPfI2drv69+/PI488wvr16/jLX67h1lurb1dtzIyrrrqK9u3bV3vs008/rTgN6Ve/+lWlkeFDhgzh9NNPp3///px++ukMHjyYRYsWMWTIEIqKirjxxhu57rrrqq3z4Ycf5q677qJ///4MGzaM4uJiTjvtNPr3709hYSHf+ta3+NOf/kTHjh2Tqr+q3/zmN5SXl9O/f3/69OnDb37zGwAmTpzIwQcfXPE+jz76KAAXXXQRY8aMqfb/OnDgQCZMmMCQIUM46qijmDhxIgMGDKjxfZP5Pz3ssMPYtGlTpcDv378/o0aN4uijj+Y3v/kNnTt3rrbuSy65hN27d9OvXz/OPPNMJk2aBMCPfvQjHnzwQTp37sxtt93GBRdcUOm0subNm/Pkk09y9dVXU1hYSFFREa+//joADz30EJdeeilFRUWVXgMwa9YsTj755Fr+pRs3BbDUxqr+YTREgwcP9qoz4ixZsoTDDz88pIoaltatW9epdZuM6Gjd/fdvzzvvwEEHQadOaXmrSiZNmsT8+fP585//nP43yzJ33HEHbdq0YeLEidxwww20bt2aq666KuyyKmzfvp0RI0Ywb968uMexo3/b0S8BjfWc4fffh8JCePJJOP30sKuRsJjZAncfHO8xtYAlKdHDiJoJq+H7yU9+UukYckPzxRdfcMstt8QN32yiFrDUJrv/AnJEulq/scyCn0x1mEQHiMneKygoqBh1XNvAtzD07NmTnj17hl1G2imApTYKYEko9rQTM7WAJXNiJ3RpjDQKWmrTqAPY3bNu8vaGJna0dl6eroYk6RU7JqVZs2YhVlJ/agFLbRrtMeCCggLWr19fbXSlpFb0coSgAJb08sj1gAsiifX2229XTJbSGCmApTaNtgXcpUsXVq5cWTHv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\n"
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plot_iperf_results(\n",
|
|
" {\n",
|
|
" '1x2MBps+1xYMBps connections (proxied)': Two2MBAggregateKillOneRecoverOne,\n",
|
|
" },\n",
|
|
" 'Killed connection',\n",
|
|
" events={15: 'Y = 0', 40: 'Y = 2'},\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"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.8.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
} |