As many countries and ICP providers show a tendency to optimize their "internal" data access by applying tools to control or monitor users, the overall network condition deteriorates and performance is reduced up to significant levels. This situation leads to considerable increases in the cost for companies who want to provide applications to end users. Our research has shown that the Internet speed - not only in China - varies more than expected on a global scale and quite often, the Internet does not use optimized routes leading to temporary or permanently slow access to some applications or for a group of users. GrandeNet can optimize up to 80% of the connectivity of certain servers by using Re6st and maintaining optimized and stable routes between all connected servers.
Re6st is a multiprotocol random mesh generator that uses Babel routing protocol to discover optimizal routes between each point in the mesh. It supports IPv6 and IPv4 with RINA support coming soon. It is used commercially by VIFIB distributed cloud provider helping to solve the current lack of reliability of Internet connectivity for distributed enterprise applications: bugs in routers, packet inspection that breaks TCP protocol, government filters filtering too much, etc. Without re6st, it would have been impossible to deploy critical business applications used by large companies (Mitsubishi, SANEF, Aide et Action, etc.) on a decentralized cloud. It would also be impossible to manage the deployment of distributed cloud in Brazil, China or Ivory Coast where the Internet is even less reliable.
IPython Notebook is a web-based interactive computational environment for creating Executable Notebooks with Embeeded Python Code. IPython Notebook is largely used by researchers to produce and share their scientific work. We chose to use IPython Notebook for this article to provide a transparent walkthrough of what we are doing.
This article is fully reproducible by importing this notebook on your IPython Notebook Instance.
In order to execute the this notebook we need some well-known python libraries, specifically, panda, numpy, scipy and matplotlib. Below are the imports required to initialize the necessary libraries.
%pylab inline
import sys
from matplotlib import pyplot
import matplotlib.pyplot as plt
#from mpl_toolkits.basemap import Basemap
from IPython.display import display, clear_output
from IPython.core.display import HTML
import pandas as pd
import numpy as np
from pandas import rolling_median
np.set_printoptions(threshold="nan")
pd.set_option('display.max_rows', 2000)
from pandas import Series, DataFrame, Panel
Populating the interactive namespace from numpy and matplotlib
Next, we'll define the core code - written as methods which will perform the Data Collection and the Calculation of the results for this article. If you are not interested in Code, you can move directly to the next section of this article.
import urllib2
def load_json(url, average="internet_ipv4", packet_lost="internet_ipv4_packet_lost"):
""" Download JSON and normalize the data by:
- Replace failed by a number '0', so the column is a float and not string
- Replace 'average' and packet_lost by another name
for help concat 2 numpy array w/o recreate it.
- Remove latest empty line.
"""
req = urllib2.Request(url)
response = urllib2.urlopen(req)
content = response.read()
return '[%s]' % content\
.replace('"failed"', "0")\
.replace('"average"', '"%s"' % average)\
.replace('"packet_lost"', '"%s"' % packet_lost)\
.replace("\n", ",")[:-1]
def load_test(id, date_id):
""" Load Test results from Distributed Monitoring Tool
and transform into DataFrames """
# Load JSON for ICMPv6
ping6_as_jsonstring = load_json(
log_dict[id]["grandenet_ipv6"] % date_id,
average="grandenet_ipv6", packet_lost="grandenet_ipv6_packet_lost")
# Load JSON for ICMPv4
ping_as_jsonstring = load_json(
log_dict[id]["internet_ipv4"] % date_id,
average="internet_ipv4", packet_lost="internet_ipv4_packet_lost")
return pd.read_json(ping6_as_jsonstring, convert_dates=["time"]), \
pd.read_json(ping_as_jsonstring, convert_dates=["time"])
def get_computer_list(dframeA, dframeB ):
""" Extract all computer names at the DataFrames """
return list(set([ computer_name[0] for computer_name in dframeA[["computer_name"]].as_matrix()] +
[ computer_name[0] for computer_name in dframeB[["computer_name"]].as_matrix()]))
def get_computer_destination_label(dframeA):
""" Determinate the Label Name for the computer which are receiving the ping"""
return getComputerLabel([computer_name[0] for computer_name in dframeA[["name_or_ip"]].as_matrix()][0])
def getComputerLabel(computer_name):
""" Translate hostname, ip addresses into meaningfull names for better understanting"""
return server_label.get(computer_name, computer_name)
# Initiallization function which are going to be used for
# collect the logs and transform them on Data Frames.
def plot_ping_comparation(df_ping6, df_ping):
""" Function to load, plot and compare 2 Data Frames
"""
computer_list = get_computer_list(df_ping, df_ping6)
computer_destination_label = get_computer_destination_label(df_ping6)
measured_average = []
packet_lost = []
for computer_name in computer_list:
if getComputerLabel(computer_name) == computer_destination_label:
continue
df6 = pd.DataFrame(df_ping6[df_ping6["computer_name"] == computer_name][df_ping6["grandenet_ipv6"] > 0][["time", "grandenet_ipv6"]])
df4 = pd.DataFrame(df_ping[df_ping["computer_name"] == computer_name][df_ping["internet_ipv4"] > 0][["time", "internet_ipv4"]])
# Use Moving average in order to eliminate noise spikes on the chart and measurement.
df6['grandenet_ipv6'] = rolling_median(df6['grandenet_ipv6'], window=3, center=True)
df4['internet_ipv4'] = rolling_median(df4['internet_ipv4'], window=3, center=True)
label = "'%s' to '%s'" % (getComputerLabel(computer_name), computer_destination_label)
if 0 in [len(df6), len(df4)]:
print "Found one empty array for %s" % label
continue
df = pd.DataFrame(pd.concat([df6, df4]))
if SHOW_ALL_CHARTS:
df4.plot(x="time", title=label + " (lower is better)",
sort_columns=["time"], figsize=(20,6))
df6.plot(x="time", title=label + " (lower is better)",
sort_columns=["time"], color='r', figsize=(20,6))
df.plot(x="time", title=label + " (lower is better)",
marker='o', color=["b", "r"], figsize=(20,6))
# Ignore 0 entries as it represents a full failure (so no average).
ipv6_mean = df6["grandenet_ipv6"].mean()
ipv4_mean = df4["internet_ipv4"].mean()
grandenet_ipv6_packet_lost = df_ping6[df_ping6["computer_name"] == computer_name]["grandenet_ipv6_packet_lost"].mean()
internet_ipv4_packet_lost = df_ping[df_ping["computer_name"] == computer_name]["internet_ipv4_packet_lost"].mean()
if ipv6_mean < ipv4_mean:
improvement_ratio = float(ipv4_mean - ipv6_mean)/ipv4_mean
state = "OPTIMIZED in %sms (%.2f%%)" % ((ipv4_mean - ipv6_mean), improvement_ratio*100)
elif ipv6_mean < (ipv4_mean + max(20, ipv4_mean*0.15)):
state = "OK (in acceptable range %s < %s < %s)" % (ipv4_mean, ipv6_mean, (ipv4_mean + max(20, ipv4_mean*0.15)))
else:
state = "BAD (%sms slower)" % (ipv6_mean - ipv4_mean)
measured_average.append({"name" : "'%s' to '%s'" % (getComputerLabel(computer_name), computer_destination_label),
"grandenet_ipv6": ipv6_mean,
"internet_ipv4": ipv4_mean,
"state": state})
if grandenet_ipv6_packet_lost < internet_ipv4_packet_lost:
loss_state = "OPTIMIZED (Better Packet Lost rate)"
elif grandenet_ipv6_packet_lost == internet_ipv4_packet_lost:
loss_state = "OK (Same Packet Lost rate)"
elif (grandenet_ipv6_packet_lost - internet_ipv4_packet_lost) < 1:
loss_state = "OK (less them 1% diference is considered same)"
else:
loss_state = "BAD (Worst Packet Lost rate)"
packet_lost.append({"name" : "'%s' to '%s'" % (getComputerLabel(computer_name), computer_destination_label),
"grandenet_ipv6_packet_lost": grandenet_ipv6_packet_lost,
"internet_ipv4_packet_lost": internet_ipv4_packet_lost,
"state": loss_state})
return pd.DataFrame(measured_average), pd.DataFrame(packet_lost)
The core of GrandeNet Infrastructure is based on servers distributed on multiples cloud providers (Amazon, Qincloud, OVH, Rackspace, UCloud...) as well as standalone machines distributed on companies offices and/or people's home. Customers may add their servers located on their premises or even at their homes to be used as their main production servers.
This hybrid and heterogenious infrastrucuture of GrandeNet uses SlapOS to manage and monitor all distributed servers around the globe.
In this article we used a small set of servers (12) with public IPv4 running SlapOS Distributed Monitoring. Each server tries to contact (using ICMP Protocol) all others 12 servers using IPv4 and IPv6 addresses. Tests are performed 10 times (10 pings) every 10 minutes and we get the average and packet loss for test.
The image bellow ilustrates the tests with 3 servers:
Below we initialize the location for each servers' logs along with labels to improve the readability of the charts and results.
server_label = {
'i-j0dshts2': "Guanghouz - Qincloud",
'10-13-16-6': "Guanghouz - UCloud",
'i-wbs0d67i' : "Hongkong - Qincloud 1",
'i-vutfghrs': "Hongkong - Qincloud 0",
'i-hf0f7ocn': "Beijing - Qincloud",
'vps212661.ovh.net': "Strasbourg - OVH",
'ip-172-31-30-97': "Singapour - Amazon",
'ip-172-31-6-206': "Tokyo - Amazon",
'ip-172-31-8-66' : "Virginia - Amazon",
'ip-172-31-7-155': "US West - Amazon",
'cloud-server-grandenet' : "Hongkong - Rackspace",
'COMP-9': 'US West - Amazon',
'COMP-8': 'Singapour - Amazon',
'COMP-7': 'Tokyo - Amazon',
'COMP-6': 'Hongkong - Qincloud 1',
'COMP-4': 'Hongkong - Qincloud 0',
'COMP-2': 'Beijing - Qincloud',
'COMP-3': 'Guanghouz - Qincloud',
'COMP-10': 'Guanghouz - UCloud',
'COMP-11': 'Strasbourg - OVH',
'COMP-12': 'Virginia - Amazon',
"COMP-13": 'Beauharnois - OVH',
"frontend0.grandenet.cn": "Beijing - Qincloud",
"2401:5180::1": "Beijing - Qincloud",
"frontend1.grandenet.cn": "Guanghouz - Qincloud",
"2401:5180:0:6::1": "Guanghouz - Qincloud",
"2401:5180:0:9::1" : "Hongkong - Qincloud 0",
"frontend3.grandenet.cn" : "Hongkong - Qincloud 0",
"2401:5180:0:8::1" : "Hongkong - Rackspace",
"frontend4.grandenet.cn" : "Hongkong - Rackspace",
"2401:5180:0:7::1": "Hongkong - Qincloud 1",
"frontend5.grandenet.cn": "Hongkong - Qincloud 1",
"2401:5180:0:c::1": "Tokyo - Amazon",
"frontend7.grandenet.cn": "Tokyo - Amazon",
"2401:5180:0:d::1": "Singapour - Amazon",
"frontend6.grandenet.cn": "Singapour - Amazon",
"2401:5180:0:10::1": "US West - Amazon",
"frontend8.grandenet.cn": "US West - Amazon",
"2401:5180:0:13::1": "Guanghouz - UCloud",
"frontend9.grandenet.cn": "Guanghouz - UCloud",
"2401:5180:0:16::1": "Strasbourg - OVH",
"frontend10.grandenet.cn": "Strasbourg - OVH",
"2401:5180:0:15::1": "Virginia - Amazon",
"frontend11.grandenet.cn": "Virginia - Amazon",
"2401:5180:0:17::1": "Beauharnois - OVH",
"frontend12.grandenet.cn": "Beauharnois - OVH",
}
log_dict = {
"Hongkong - Qincloud 0": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-314/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-314/ping/log.%s.log",
},
"Virginia - Amazon": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-322/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-322/ping/log.%s.log",
},
"Strasbourg - OVH": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-321/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-321/ping/log.%s.log",
},
"Guanghouz - UCloud": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-320/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-320/ping/log.%s.log",
},
"Tokyo - Amazon": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-317/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-317/ping/log.%s.log",
},
"US West - Amazon": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-319/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-319/ping/log.%s.log",
},
"Singapour - Amazon": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-318/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-318/ping/log.%s.log",
},
"Hongkong - Qincloud 1": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-316/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-316/ping/log.%s.log",
},
"Guanghouz - Qincloud": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-313/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-313/ping/log.%s.log",
},
"Beijing - Qincloud": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-312/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-312/ping/log.%s.log",
},
"Hongkong - Rackspace": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-315/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-315/ping/log.%s.log",
},
"Beauharnois - OVH": {
"grandenet_ipv6": "https://softinst303.node.grandenet.cn/SOFTINST-625/ping6/log.%s.log",
"internet_ipv4": "https://softinst303.node.grandenet.cn/SOFTINST-625/ping/log.%s.log",
}
}
We also limit the scope of this article to the tests performed on a certain date range, showed below by the variable "DAY".
# Define here if you want more or less charts verbosity. Show all charts can
# make this report quite big.
SHOW_ALL_CHARTS = False
# Generate Report for the Jan, 28, 2016
DAY = "20160128"
In order to produce results for this article, we use the methods defined above, crawl the logs and turn them into dataframes. These dataframes contain the test results for the indicated period (DAY above).
hq0_df_ping6, hq0_df_ping = load_test(id = "Hongkong - Qincloud 0", date_id=DAY)
va_df_ping6, va_df_ping = load_test(id = "Virginia - Amazon", date_id=DAY)
gu_df_ping6, gu_df_ping = load_test(id = "Guanghouz - UCloud", date_id=DAY)
sa_df_ping6, sa_df_ping = load_test(id = "Singapour - Amazon", date_id=DAY)
hq1_df_ping6, hq1_df_ping = load_test(id = "Hongkong - Qincloud 1", date_id=DAY)
hr_df_ping6, hr_df_ping = load_test(id = "Hongkong - Rackspace", date_id=DAY)
wa_df_ping6, wa_df_ping = load_test(id = "US West - Amazon", date_id=DAY)
go_df_ping6, go_df_ping = load_test(id = "Strasbourg - OVH", date_id=DAY)
ta_df_ping6, ta_df_ping = load_test(id = "Tokyo - Amazon", date_id=DAY)
gq_df_ping6, gq_df_ping = load_test(id = "Guanghouz - Qincloud", date_id=DAY)
bq_df_ping6, bq_df_ping = load_test(id = "Beijing - Qincloud", date_id=DAY)
bho_df_ping6, bho_df_ping = load_test(id = "Beauharnois - OVH", date_id=DAY)
Using the dataframes we can plot a comparison of the response time (in miliseconds) between using Internet IPv4 and Grandenet IPv6. As we are using ICMP Protocol to measure the response time, the charts below use the name "ping" for IPv4 and ping6 for IPv6 and highlight the differences between the Internet IPv4 and the IPv6.
hq0_average_dataframe, hq0_packetloss_dataframe = plot_ping_comparation(hq0_df_ping6, hq0_df_ping)
/srv/slapgrid/slappart8/srv/runner/software/9a8d67b31671ba36ac107c65a141c073/develop-eggs/pandas-0.16.2-py2.7-linux-x86_64.egg/pandas/core/frame.py:1825: UserWarning: Boolean Series key will be reindexed to match DataFrame index. "DataFrame index.", UserWarning)
va_average_dataframe, va_packetloss_dataframe = plot_ping_comparation(va_df_ping6, va_df_ping)
go_average_dataframe, go_packetloss_dataframe = plot_ping_comparation(go_df_ping6, go_df_ping)
gu_average_dataframe, gu_packetloss_dataframe = plot_ping_comparation(gu_df_ping6, gu_df_ping)
ta_average_dataframe, ta_packetloss_dataframe = plot_ping_comparation(ta_df_ping6, ta_df_ping)
sa_average_dataframe, sa_packetloss_dataframe = plot_ping_comparation(sa_df_ping6, sa_df_ping)
hq1_average_dataframe, hq1_packetloss_dataframe = plot_ping_comparation(hq1_df_ping6, hq1_df_ping)
gq_average_dataframe, gq_packetloss_dataframe = plot_ping_comparation(gq_df_ping6, gq_df_ping)
bq_average_dataframe, bq_packetloss_dataframe = plot_ping_comparation(bq_df_ping6, bq_df_ping)
wa_average_dataframe, wa_packetloss_dataframe = plot_ping_comparation(wa_df_ping6, wa_df_ping)
hr_average_dataframe, hr_packetloss_dataframe = plot_ping_comparation(hr_df_ping6, hr_df_ping)
bho_average_dataframe, bho_packetloss_dataframe = plot_ping_comparation(bho_df_ping6, bho_df_ping)
It is well-know that latency has a direct influence on performance of Web Applications. By comparing the averages of ping responses on IPv4 and IPv6, you may notice significant improvements between the servers.
By using Grandenet, we can consider 3 states for a connection between 2 servers:
These states acknowledge the fact that re6st may increase a ping response by 20ms in the worst case, which is 2 servers being really far apart having a direct connection.
An optimal scenario is to get all servers on OPTIMIZED or OK states while testing each other. The table below contains a list of all connection between servers previously mentioned. You can notice that not only connections involving a Chinese Server got optimized, but connection between Japan to Singapur, Japan to Honkong, US to Hongkong and others were optimized as well.
df_average_statistic = pd.concat([go_average_dataframe, hr_average_dataframe,
bho_average_dataframe,bq_average_dataframe,
gq_average_dataframe, va_average_dataframe,
hq0_average_dataframe, gu_average_dataframe,
ta_average_dataframe, sa_average_dataframe,
hq1_average_dataframe, wa_average_dataframe],
ignore_index=True)
df_average_statistic
grandenet_ipv6 | internet_ipv4 | name | state | |
---|---|---|---|---|
0 | 230.769642 | 227.776942 | 'Beijing - Qincloud' to 'Strasbourg - OVH' | OK (in acceptable range 227.776942149 < 230.76... |
1 | 207.231196 | 199.779662 | 'Singapour - Amazon' to 'Strasbourg - OVH' | OK (in acceptable range 199.779661871 < 207.23... |
2 | 234.477413 | 343.148734 | 'Hongkong - Qincloud 1' to 'Strasbourg - OVH' | OPTIMIZED in 108.671320769ms (31.67%) |
3 | 235.069314 | 344.405986 | 'Hongkong - Qincloud 0' to 'Strasbourg - OVH' | OPTIMIZED in 109.336671743ms (31.75%) |
4 | 159.144745 | 160.710180 | 'US West - Amazon' to 'Strasbourg - OVH' | OPTIMIZED in 1.56543533057ms (0.97%) |
5 | 121.403561 | 121.298650 | 'Virginia - Amazon' to 'Strasbourg - OVH' | OK (in acceptable range 121.29865 < 121.403561... |
6 | 246.411341 | 356.375993 | 'Guanghouz - Qincloud' to 'Strasbourg - OVH' | OPTIMIZED in 109.964652226ms (30.86%) |
7 | 90.044151 | 90.002443 | 'Beauharnois - OVH' to 'Strasbourg - OVH' | OK (in acceptable range 90.0024428571 < 90.044... |
8 | 254.088217 | 372.031417 | 'Guanghouz - UCloud' to 'Strasbourg - OVH' | OPTIMIZED in 117.943199875ms (31.70%) |
9 | 247.874190 | 325.955576 | 'Hongkong - Rackspace' to 'Strasbourg - OVH' | OPTIMIZED in 78.0813857585ms (23.95%) |
10 | 266.606167 | 278.157007 | 'Tokyo - Amazon' to 'Strasbourg - OVH' | OPTIMIZED in 11.5508405276ms (4.15%) |
11 | 243.557295 | 325.525186 | 'Strasbourg - OVH' to 'Hongkong - Rackspace' | OPTIMIZED in 81.9678907503ms (25.18%) |
12 | 41.762925 | 39.811375 | 'Beijing - Qincloud' to 'Hongkong - Rackspace' | OK (in acceptable range 39.811375 < 41.762925 ... |
13 | 38.099014 | 34.921950 | 'Singapour - Amazon' to 'Hongkong - Rackspace' | OK (in acceptable range 34.9219496403 < 38.099... |
14 | 2.153391 | 1.995842 | 'Hongkong - Qincloud 1' to 'Hongkong - Rackspace' | OK (in acceptable range 1.99584172662 < 2.1533... |
15 | 2.160094 | 1.965309 | 'Hongkong - Qincloud 0' to 'Hongkong - Rackspace' | OK (in acceptable range 1.96530935252 < 2.1600... |
16 | 164.382985 | 157.351396 | 'US West - Amazon' to 'Hongkong - Rackspace' | OK (in acceptable range 157.351395683 < 164.38... |
17 | 211.392151 | 229.954993 | 'Virginia - Amazon' to 'Hongkong - Rackspace' | OPTIMIZED in 18.562841778ms (8.07%) |
18 | 8.568826 | 8.248223 | 'Guanghouz - Qincloud' to 'Hongkong - Rackspace' | OK (in acceptable range 8.24822302158 < 8.5688... |
19 | 229.472014 | 428.977350 | 'Beauharnois - OVH' to 'Hongkong - Rackspace' | OPTIMIZED in 199.505335612ms (46.51%) |
20 | 12.660536 | 7.320137 | 'Guanghouz - UCloud' to 'Hongkong - Rackspace' | OK (in acceptable range 7.32013669065 < 12.660... |
21 | 56.437174 | 71.705446 | 'Tokyo - Amazon' to 'Hongkong - Rackspace' | OPTIMIZED in 15.2682721301ms (21.29%) |
22 | 90.059710 | 89.985175 | 'Strasbourg - OVH' to 'Beauharnois - OVH' | OK (in acceptable range 89.9851751825 < 90.059... |
23 | 254.805042 | 288.993650 | 'Beijing - Qincloud' to 'Beauharnois - OVH' | OPTIMIZED in 34.1886079832ms (11.83%) |
24 | 247.255138 | 269.330863 | 'Singapour - Amazon' to 'Beauharnois - OVH' | OPTIMIZED in 22.0757256282ms (8.20%) |
25 | 224.304181 | 251.024281 | 'Hongkong - Qincloud 1' to 'Beauharnois - OVH' | OPTIMIZED in 26.7200994161ms (10.64%) |
26 | 226.983348 | 284.750353 | 'Hongkong - Qincloud 0' to 'Beauharnois - OVH' | OPTIMIZED in 57.7670046919ms (20.29%) |
27 | 70.884467 | 70.894246 | 'US West - Amazon' to 'Beauharnois - OVH' | OPTIMIZED in 0.00977922352695ms (0.01%) |
28 | 43.673137 | 42.949250 | 'Virginia - Amazon' to 'Beauharnois - OVH' | OK (in acceptable range 42.94925 < 43.67313669... |
29 | 232.296942 | 329.106576 | 'Guanghouz - Qincloud' to 'Beauharnois - OVH' | OPTIMIZED in 96.8096335106ms (29.42%) |
30 | 237.192766 | 385.034875 | 'Guanghouz - UCloud' to 'Beauharnois - OVH' | OPTIMIZED in 147.842108577ms (38.40%) |
31 | 228.411906 | 423.219410 | 'Hongkong - Rackspace' to 'Beauharnois - OVH' | OPTIMIZED in 194.807504275ms (46.03%) |
32 | 177.716043 | 184.348388 | 'Tokyo - Amazon' to 'Beauharnois - OVH' | OPTIMIZED in 6.63234501095ms (3.60%) |
33 | 240.231168 | 235.254507 | 'Strasbourg - OVH' to 'Beijing - Qincloud' | OK (in acceptable range 235.254507143 < 240.23... |
34 | 76.299868 | 70.598232 | 'Singapour - Amazon' to 'Beijing - Qincloud' | OK (in acceptable range 70.5982318841 < 76.299... |
35 | 39.032730 | 41.159784 | 'Hongkong - Qincloud 1' to 'Beijing - Qincloud' | OPTIMIZED in 2.12705424565ms (5.17%) |
36 | 44.635572 | 43.729914 | 'Hongkong - Qincloud 0' to 'Beijing - Qincloud' | OK (in acceptable range 43.7299136691 < 44.635... |
37 | 191.950588 | 172.012237 | 'US West - Amazon' to 'Beijing - Qincloud' | OK (in acceptable range 172.012237037 < 191.95... |
38 | 239.912219 | 236.548706 | 'Virginia - Amazon' to 'Beijing - Qincloud' | OK (in acceptable range 236.548705882 < 239.91... |
39 | 46.273000 | 47.747281 | 'Guanghouz - Qincloud' to 'Beijing - Qincloud' | OPTIMIZED in 1.47428057554ms (3.09%) |
40 | 261.261261 | 301.428700 | 'Beauharnois - OVH' to 'Beijing - Qincloud' | OPTIMIZED in 40.1674391304ms (13.33%) |
41 | 43.210993 | 52.811683 | 'Guanghouz - UCloud' to 'Beijing - Qincloud' | OPTIMIZED in 9.60069069961ms (18.18%) |
42 | 42.063942 | 41.977022 | 'Hongkong - Rackspace' to 'Beijing - Qincloud' | OK (in acceptable range 41.9770215827 < 42.063... |
43 | 96.826109 | 135.557187 | 'Tokyo - Amazon' to 'Beijing - Qincloud' | OPTIMIZED in 38.7310783547ms (28.57%) |
44 | 253.286304 | 348.142114 | 'Strasbourg - OVH' to 'Guanghouz - Qincloud' | OPTIMIZED in 94.8558099379ms (27.25%) |
45 | 45.542403 | 47.665650 | 'Beijing - Qincloud' to 'Guanghouz - Qincloud' | OPTIMIZED in 2.12324663866ms (4.45%) |
46 | 46.796123 | 193.877259 | 'Singapour - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED in 147.081135804ms (75.86%) |
47 | 11.600123 | 28.864662 | 'Hongkong - Qincloud 1' to 'Guanghouz - Qincloud' | OPTIMIZED in 17.2645386821ms (59.81%) |
48 | 14.198486 | 37.674871 | 'Hongkong - Qincloud 0' to 'Guanghouz - Qincloud' | OPTIMIZED in 23.4763849964ms (62.31%) |
49 | 173.533544 | 292.845978 | 'US West - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED in 119.3124343ms (40.74%) |
50 | 220.941986 | 294.773657 | 'Virginia - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED in 73.8316716356ms (25.05%) |
51 | 236.891568 | 361.344309 | 'Beauharnois - OVH' to 'Guanghouz - Qincloud' | OPTIMIZED in 124.452741007ms (34.44%) |
52 | 5.721768 | 5.410108 | 'Guanghouz - UCloud' to 'Guanghouz - Qincloud' | OK (in acceptable range 5.41010791367 < 5.7217... |
53 | 8.664124 | 8.320640 | 'Hongkong - Rackspace' to 'Guanghouz - Qincloud' | OK (in acceptable range 8.32064028777 < 8.6641... |
54 | 70.081956 | 131.256727 | 'Tokyo - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED in 61.1747704143ms (46.61%) |
55 | 121.487640 | 121.247236 | 'Strasbourg - OVH' to 'Virginia - Amazon' | OK (in acceptable range 121.247235714 < 121.48... |
56 | 240.120950 | 230.511413 | 'Beijing - Qincloud' to 'Virginia - Amazon' | OK (in acceptable range 230.511413223 < 240.12... |
57 | 222.681261 | 223.468777 | 'Singapour - Amazon' to 'Virginia - Amazon' | OPTIMIZED in 0.787516108852ms (0.35%) |
58 | 209.687812 | 210.714964 | 'Hongkong - Qincloud 1' to 'Virginia - Amazon' | OPTIMIZED in 1.02715243457ms (0.49%) |
59 | 206.991920 | 218.024158 | 'Hongkong - Qincloud 0' to 'Virginia - Amazon' | OPTIMIZED in 11.0322379835ms (5.06%) |
60 | 76.374496 | 84.404000 | 'US West - Amazon' to 'Virginia - Amazon' | OPTIMIZED in 8.02950364964ms (9.51%) |
61 | 220.761130 | 238.426374 | 'Guanghouz - Qincloud' to 'Virginia - Amazon' | OPTIMIZED in 17.6652436659ms (7.41%) |
62 | 43.641381 | 42.894914 | 'Beauharnois - OVH' to 'Virginia - Amazon' | OK (in acceptable range 42.8949142857 < 43.641... |
63 | 225.314246 | 389.168935 | 'Guanghouz - UCloud' to 'Virginia - Amazon' | OPTIMIZED in 163.854688875ms (42.10%) |
64 | 211.599536 | 229.980266 | 'Hongkong - Rackspace' to 'Virginia - Amazon' | OPTIMIZED in 18.3807299552ms (7.99%) |
65 | 152.523601 | 152.000986 | 'Tokyo - Amazon' to 'Virginia - Amazon' | OK (in acceptable range 152.000985612 < 152.52... |
66 | 239.363849 | 347.087293 | 'Strasbourg - OVH' to 'Hongkong - Qincloud 0' | OPTIMIZED in 107.723443936ms (31.04%) |
67 | 45.002513 | 41.264050 | 'Beijing - Qincloud' to 'Hongkong - Qincloud 0' | OK (in acceptable range 41.26405 < 45.00251260... |
68 | 36.321246 | 35.532187 | 'Singapour - Amazon' to 'Hongkong - Qincloud 0' | OK (in acceptable range 35.5321870504 < 36.321... |
69 | 0.837732 | 0.606295 | 'Hongkong - Qincloud 1' to 'Hongkong - Qinclou... | OK (in acceptable range 0.606294964029 < 0.837... |
70 | 160.017212 | 169.572899 | 'US West - Amazon' to 'Hongkong - Qincloud 0' | OPTIMIZED in 9.55568760174ms (5.64%) |
71 | 207.156094 | 218.038657 | 'Virginia - Amazon' to 'Hongkong - Qincloud 0' | OPTIMIZED in 10.8825636177ms (4.99%) |
72 | 14.436101 | 36.616367 | 'Guanghouz - Qincloud' to 'Hongkong - Qincloud 0' | OPTIMIZED in 22.1802654572ms (60.57%) |
73 | 229.083065 | 283.335871 | 'Beauharnois - OVH' to 'Hongkong - Qincloud 0' | OPTIMIZED in 54.2528066804ms (19.15%) |
74 | 19.104543 | 63.614424 | 'Guanghouz - UCloud' to 'Hongkong - Qincloud 0' | OPTIMIZED in 44.5098809822ms (69.97%) |
75 | 2.138971 | 1.951871 | 'Hongkong - Rackspace' to 'Hongkong - Qincloud 0' | OK (in acceptable range 1.9518705036 < 2.13897... |
76 | 53.963688 | 51.621165 | 'Tokyo - Amazon' to 'Hongkong - Qincloud 0' | OK (in acceptable range 51.6211654676 < 53.963... |
77 | 255.833453 | 365.678857 | 'Strasbourg - OVH' to 'Guanghouz - UCloud' | OPTIMIZED in 109.845403905ms (30.04%) |
78 | 43.109625 | 52.778208 | 'Beijing - Qincloud' to 'Guanghouz - UCloud' | OPTIMIZED in 9.66858333333ms (18.32%) |
79 | 52.838234 | 227.743525 | 'Singapour - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED in 174.905291603ms (76.80%) |
80 | 15.742594 | 69.543173 | 'Hongkong - Qincloud 1' to 'Guanghouz - UCloud' | OPTIMIZED in 53.800578459ms (77.36%) |
81 | 20.123913 | 66.334302 | 'Hongkong - Qincloud 0' to 'Guanghouz - UCloud' | OPTIMIZED in 46.2103891148ms (69.66%) |
82 | 178.273566 | 342.378604 | 'US West - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED in 164.10503814ms (47.93%) |
83 | 225.984885 | 382.897636 | 'Virginia - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED in 156.912750822ms (40.98%) |
84 | 5.724739 | 5.426122 | 'Guanghouz - Qincloud' to 'Guanghouz - UCloud' | OK (in acceptable range 5.42612230216 < 5.7247... |
85 | 242.619297 | 421.211616 | 'Beauharnois - OVH' to 'Guanghouz - UCloud' | OPTIMIZED in 178.592318841ms (42.40%) |
86 | 14.407255 | 7.411892 | 'Hongkong - Rackspace' to 'Guanghouz - UCloud' | OK (in acceptable range 7.41189208633 < 14.407... |
87 | 71.360387 | 121.463964 | 'Tokyo - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED in 50.1035771675ms (41.25%) |
88 | 266.439424 | 278.120979 | 'Strasbourg - OVH' to 'Tokyo - Amazon' | OPTIMIZED in 11.681554111ms (4.20%) |
89 | 95.726546 | 130.562108 | 'Beijing - Qincloud' to 'Tokyo - Amazon' | OPTIMIZED in 34.8355621148ms (26.68%) |
90 | 74.860529 | 74.136101 | 'Singapour - Amazon' to 'Tokyo - Amazon' | OK (in acceptable range 74.1361007194 < 74.860... |
91 | 57.655964 | 57.372640 | 'Hongkong - Qincloud 1' to 'Tokyo - Amazon' | OK (in acceptable range 57.3726402878 < 57.655... |
92 | 54.828377 | 51.194863 | 'Hongkong - Qincloud 0' to 'Tokyo - Amazon' | OK (in acceptable range 51.1948633094 < 54.828... |
93 | 108.687358 | 105.628540 | 'US West - Amazon' to 'Tokyo - Amazon' | OK (in acceptable range 105.628539568 < 108.68... |
94 | 152.578827 | 152.403857 | 'Virginia - Amazon' to 'Tokyo - Amazon' | OK (in acceptable range 152.403857143 < 152.57... |
95 | 70.801558 | 147.181209 | 'Guanghouz - Qincloud' to 'Tokyo - Amazon' | OPTIMIZED in 76.3796506621ms (51.89%) |
96 | 178.120978 | 184.354986 | 'Beauharnois - OVH' to 'Tokyo - Amazon' | OPTIMIZED in 6.23400729702ms (3.38%) |
97 | 74.521449 | 139.606777 | 'Guanghouz - UCloud' to 'Tokyo - Amazon' | OPTIMIZED in 65.0853277031ms (46.62%) |
98 | 55.151833 | 73.062180 | 'Hongkong - Rackspace' to 'Tokyo - Amazon' | OPTIMIZED in 17.9103465228ms (24.51%) |
99 | 205.582540 | 199.781236 | 'Strasbourg - OVH' to 'Singapour - Amazon' | OK (in acceptable range 199.781235714 < 205.58... |
100 | 76.846342 | 70.112595 | 'Beijing - Qincloud' to 'Singapour - Amazon' | OK (in acceptable range 70.1125950413 < 76.846... |
101 | 36.377196 | 35.139094 | 'Hongkong - Qincloud 1' to 'Singapour - Amazon' | OK (in acceptable range 35.1390935252 < 36.377... |
102 | 36.252500 | 35.560604 | 'Hongkong - Qincloud 0' to 'Singapour - Amazon' | OK (in acceptable range 35.5606043165 < 36.252... |
103 | 176.300474 | 175.301252 | 'US West - Amazon' to 'Singapour - Amazon' | OK (in acceptable range 175.301251799 < 176.30... |
104 | 222.421165 | 223.566721 | 'Virginia - Amazon' to 'Singapour - Amazon' | OPTIMIZED in 1.14555596095ms (0.51%) |
105 | 45.856601 | 184.241842 | 'Guanghouz - Qincloud' to 'Singapour - Amazon' | OPTIMIZED in 138.385240277ms (75.11%) |
106 | 247.191863 | 269.351136 | 'Beauharnois - OVH' to 'Singapour - Amazon' | OPTIMIZED in 22.1592724049ms (8.23%) |
107 | 50.988957 | 215.262813 | 'Guanghouz - UCloud' to 'Singapour - Amazon' | OPTIMIZED in 164.273856428ms (76.31%) |
108 | 38.258377 | 34.939712 | 'Hongkong - Rackspace' to 'Singapour - Amazon' | OK (in acceptable range 34.9397122302 < 38.258... |
109 | 74.865471 | 74.137086 | 'Tokyo - Amazon' to 'Singapour - Amazon' | OK (in acceptable range 74.1370863309 < 74.865... |
110 | 238.208804 | 345.964200 | 'Strasbourg - OVH' to 'Hongkong - Qincloud 1' | OPTIMIZED in 107.755395652ms (31.15%) |
111 | 38.542218 | 38.900467 | 'Beijing - Qincloud' to 'Hongkong - Qincloud 1' | OPTIMIZED in 0.358248179272ms (0.92%) |
112 | 36.307116 | 35.202827 | 'Singapour - Amazon' to 'Hongkong - Qincloud 1' | OK (in acceptable range 35.2028273381 < 36.307... |
113 | 1.923449 | 0.613331 | 'Hongkong - Qincloud 0' to 'Hongkong - Qinclou... | OK (in acceptable range 0.613330935252 < 1.923... |
114 | 158.409131 | 163.004000 | 'US West - Amazon' to 'Hongkong - Qincloud 1' | OPTIMIZED in 4.59486861314ms (2.82%) |
115 | 209.810568 | 210.780729 | 'Virginia - Amazon' to 'Hongkong - Qincloud 1' | OPTIMIZED in 0.970160226105ms (0.46%) |
116 | 13.477819 | 30.705424 | 'Guanghouz - Qincloud' to 'Hongkong - Qincloud 1' | OPTIMIZED in 17.2276056199ms (56.11%) |
117 | 229.279568 | 254.174107 | 'Beauharnois - OVH' to 'Hongkong - Qincloud 1' | OPTIMIZED in 24.8945387975ms (9.79%) |
118 | 17.851478 | 72.304719 | 'Guanghouz - UCloud' to 'Hongkong - Qincloud 1' | OPTIMIZED in 54.4532411636ms (75.31%) |
119 | 2.133971 | 1.995446 | 'Hongkong - Rackspace' to 'Hongkong - Qincloud 1' | OK (in acceptable range 1.99544604317 < 2.1339... |
120 | 57.729732 | 57.445885 | 'Tokyo - Amazon' to 'Hongkong - Qincloud 1' | OK (in acceptable range 57.4458848921 < 57.729... |
121 | 160.735741 | 160.635750 | 'Strasbourg - OVH' to 'US West - Amazon' | OK (in acceptable range 160.63575 < 160.735741... |
122 | 187.261408 | 169.855325 | 'Beijing - Qincloud' to 'US West - Amazon' | OK (in acceptable range 169.855325 < 187.26140... |
123 | 176.315312 | 175.277662 | 'Singapour - Amazon' to 'US West - Amazon' | OK (in acceptable range 175.277661871 < 176.31... |
124 | 156.863964 | 162.888799 | 'Hongkong - Qincloud 1' to 'US West - Amazon' | OPTIMIZED in 6.02483479304ms (3.70%) |
125 | 160.903761 | 169.578547 | 'Hongkong - Qincloud 0' to 'US West - Amazon' | OPTIMIZED in 8.67478589302ms (5.12%) |
126 | 76.815309 | 83.863021 | 'Virginia - Amazon' to 'US West - Amazon' | OPTIMIZED in 7.04771207605ms (8.40%) |
127 | 172.103768 | 284.596410 | 'Guanghouz - Qincloud' to 'US West - Amazon' | OPTIMIZED in 112.492641956ms (39.53%) |
128 | 70.823345 | 70.792993 | 'Beauharnois - OVH' to 'US West - Amazon' | OK (in acceptable range 70.7929928571 < 70.823... |
129 | 174.915174 | 359.936719 | 'Guanghouz - UCloud' to 'US West - Amazon' | OPTIMIZED in 185.021545511ms (51.40%) |
130 | 163.996109 | 157.283007 | 'Hongkong - Rackspace' to 'US West - Amazon' | OK (in acceptable range 157.283007194 < 163.99... |
131 | 108.594942 | 105.582734 | 'Tokyo - Amazon' to 'US West - Amazon' | OK (in acceptable range 105.582733813 < 108.59... |
df_packetlost_statistic = pd.concat([go_packetloss_dataframe, hr_packetloss_dataframe,
bho_packetloss_dataframe, bq_packetloss_dataframe,
gq_packetloss_dataframe, va_packetloss_dataframe,
hq0_packetloss_dataframe, gu_packetloss_dataframe,
ta_packetloss_dataframe, sa_packetloss_dataframe,
hq1_packetloss_dataframe, wa_packetloss_dataframe
], ignore_index=True)
df_packetlost_statistic
grandenet_ipv6_packet_lost | internet_ipv4_packet_lost | name | state | |
---|---|---|---|---|
0 | 1.147541 | 2.601626 | 'Beijing - Qincloud' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
1 | 0.000000 | 0.851064 | 'Singapour - Amazon' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
2 | 0.071429 | 0.127660 | 'Hongkong - Qincloud 1' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
3 | 0.785714 | 0.212766 | 'Hongkong - Qincloud 0' to 'Strasbourg - OVH' | OK (less them 1% diference is considered same) |
4 | 0.215827 | 0.070922 | 'US West - Amazon' to 'Strasbourg - OVH' | OK (less them 1% diference is considered same) |
5 | 0.000000 | 0.000000 | 'Virginia - Amazon' to 'Strasbourg - OVH' | OK (Same Packet Lost rate) |
6 | 0.214286 | 18.652482 | 'Guanghouz - Qincloud' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
7 | 0.070922 | 0.281690 | 'Beauharnois - OVH' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
8 | 0.785714 | 26.659574 | 'Guanghouz - UCloud' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
9 | 1.357143 | 1.631206 | 'Hongkong - Rackspace' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
10 | 0.071429 | 0.283688 | 'Tokyo - Amazon' to 'Strasbourg - OVH' | OPTIMIZED (Better Packet Lost rate) |
11 | 0.141844 | 1.549296 | 'Strasbourg - OVH' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
12 | 0.163934 | 0.327869 | 'Beijing - Qincloud' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
13 | 0.000000 | 0.780142 | 'Singapour - Amazon' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
14 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 1' to 'Hongkong - Rackspace' | OK (Same Packet Lost rate) |
15 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 0' to 'Hongkong - Rackspace' | OK (Same Packet Lost rate) |
16 | 2.517986 | 0.851064 | 'US West - Amazon' to 'Hongkong - Rackspace' | BAD (Worst Packet Lost rate) |
17 | 1.276596 | 0.000000 | 'Virginia - Amazon' to 'Hongkong - Rackspace' | BAD (Worst Packet Lost rate) |
18 | 0.000000 | 0.141844 | 'Guanghouz - Qincloud' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
19 | 1.134752 | 1.760563 | 'Beauharnois - OVH' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
20 | 0.071429 | 1.063830 | 'Guanghouz - UCloud' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
21 | 0.000000 | 2.198582 | 'Tokyo - Amazon' to 'Hongkong - Rackspace' | OPTIMIZED (Better Packet Lost rate) |
22 | 0.780142 | 0.049296 | 'Strasbourg - OVH' to 'Beauharnois - OVH' | OK (less them 1% diference is considered same) |
23 | 1.074380 | 0.573770 | 'Beijing - Qincloud' to 'Beauharnois - OVH' | OK (less them 1% diference is considered same) |
24 | 0.000000 | 0.212766 | 'Singapour - Amazon' to 'Beauharnois - OVH' | OPTIMIZED (Better Packet Lost rate) |
25 | 0.000000 | 0.141844 | 'Hongkong - Qincloud 1' to 'Beauharnois - OVH' | OPTIMIZED (Better Packet Lost rate) |
26 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 0' to 'Beauharnois - OVH' | OK (Same Packet Lost rate) |
27 | 0.143885 | 0.000000 | 'US West - Amazon' to 'Beauharnois - OVH' | OK (less them 1% diference is considered same) |
28 | 0.000000 | 0.000000 | 'Virginia - Amazon' to 'Beauharnois - OVH' | OK (Same Packet Lost rate) |
29 | 0.214286 | 10.092199 | 'Guanghouz - Qincloud' to 'Beauharnois - OVH' | OPTIMIZED (Better Packet Lost rate) |
30 | 1.071429 | 18.078014 | 'Guanghouz - UCloud' to 'Beauharnois - OVH' | OPTIMIZED (Better Packet Lost rate) |
31 | 0.857143 | 1.638298 | 'Hongkong - Rackspace' to 'Beauharnois - OVH' | OPTIMIZED (Better Packet Lost rate) |
32 | 0.000000 | 0.141844 | 'Tokyo - Amazon' to 'Beauharnois - OVH' | OPTIMIZED (Better Packet Lost rate) |
33 | 3.475177 | 3.450704 | 'Strasbourg - OVH' to 'Beijing - Qincloud' | OK (less them 1% diference is considered same) |
34 | 1.928571 | 3.049645 | 'Singapour - Amazon' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
35 | 1.857143 | 2.127660 | 'Hongkong - Qincloud 1' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
36 | 0.857143 | 1.560284 | 'Hongkong - Qincloud 0' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
37 | 1.438849 | 3.404255 | 'US West - Amazon' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
38 | 3.120567 | 6.478873 | 'Virginia - Amazon' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
39 | 0.000000 | 0.425532 | 'Guanghouz - Qincloud' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
40 | 1.985816 | 3.197183 | 'Beauharnois - OVH' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
41 | 0.000000 | 0.212766 | 'Guanghouz - UCloud' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
42 | 0.142857 | 0.709220 | 'Hongkong - Rackspace' to 'Beijing - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
43 | 1.357143 | 0.765957 | 'Tokyo - Amazon' to 'Beijing - Qincloud' | OK (less them 1% diference is considered same) |
44 | 1.347518 | 24.443662 | 'Strasbourg - OVH' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
45 | 0.000000 | 0.000000 | 'Beijing - Qincloud' to 'Guanghouz - Qincloud' | OK (Same Packet Lost rate) |
46 | 0.214286 | 0.212766 | 'Singapour - Amazon' to 'Guanghouz - Qincloud' | OK (less them 1% diference is considered same) |
47 | 0.214286 | 1.134752 | 'Hongkong - Qincloud 1' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
48 | 0.642857 | 1.134752 | 'Hongkong - Qincloud 0' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
49 | 2.086331 | 14.014184 | 'US West - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
50 | 1.134752 | 10.464789 | 'Virginia - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
51 | 0.354610 | 22.147887 | 'Beauharnois - OVH' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
52 | 0.142857 | 0.070922 | 'Guanghouz - UCloud' to 'Guanghouz - Qincloud' | OK (less them 1% diference is considered same) |
53 | 0.714286 | 0.000000 | 'Hongkong - Rackspace' to 'Guanghouz - Qincloud' | OK (less them 1% diference is considered same) |
54 | 1.000000 | 8.865248 | 'Tokyo - Amazon' to 'Guanghouz - Qincloud' | OPTIMIZED (Better Packet Lost rate) |
55 | 0.070922 | 0.000000 | 'Strasbourg - OVH' to 'Virginia - Amazon' | OK (less them 1% diference is considered same) |
56 | 0.491803 | 0.975610 | 'Beijing - Qincloud' to 'Virginia - Amazon' | OPTIMIZED (Better Packet Lost rate) |
57 | 0.000000 | 0.070922 | 'Singapour - Amazon' to 'Virginia - Amazon' | OPTIMIZED (Better Packet Lost rate) |
58 | 0.000000 | 2.553191 | 'Hongkong - Qincloud 1' to 'Virginia - Amazon' | OPTIMIZED (Better Packet Lost rate) |
59 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 0' to 'Virginia - Amazon' | OK (Same Packet Lost rate) |
60 | 0.000000 | 0.000000 | 'US West - Amazon' to 'Virginia - Amazon' | OK (Same Packet Lost rate) |
61 | 0.071429 | 0.992908 | 'Guanghouz - Qincloud' to 'Virginia - Amazon' | OPTIMIZED (Better Packet Lost rate) |
62 | 0.000000 | 0.000000 | 'Beauharnois - OVH' to 'Virginia - Amazon' | OK (Same Packet Lost rate) |
63 | 0.357143 | 21.652482 | 'Guanghouz - UCloud' to 'Virginia - Amazon' | OPTIMIZED (Better Packet Lost rate) |
64 | 0.571429 | 0.070922 | 'Hongkong - Rackspace' to 'Virginia - Amazon' | OK (less them 1% diference is considered same) |
65 | 0.000000 | 0.000000 | 'Tokyo - Amazon' to 'Virginia - Amazon' | OK (Same Packet Lost rate) |
66 | 1.631206 | 0.774648 | 'Strasbourg - OVH' to 'Hongkong - Qincloud 0' | OK (less them 1% diference is considered same) |
67 | 0.330579 | 0.983607 | 'Beijing - Qincloud' to 'Hongkong - Qincloud 0' | OPTIMIZED (Better Packet Lost rate) |
68 | 0.000000 | 0.000000 | 'Singapour - Amazon' to 'Hongkong - Qincloud 0' | OK (Same Packet Lost rate) |
69 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 1' to 'Hongkong - Qinclou... | OK (Same Packet Lost rate) |
70 | 0.575540 | 0.000000 | 'US West - Amazon' to 'Hongkong - Qincloud 0' | OK (less them 1% diference is considered same) |
71 | 0.000000 | 0.000000 | 'Virginia - Amazon' to 'Hongkong - Qincloud 0' | OK (Same Packet Lost rate) |
72 | 0.857143 | 0.851064 | 'Guanghouz - Qincloud' to 'Hongkong - Qincloud 0' | OK (less them 1% diference is considered same) |
73 | 0.000000 | 0.492958 | 'Beauharnois - OVH' to 'Hongkong - Qincloud 0' | OPTIMIZED (Better Packet Lost rate) |
74 | 0.142857 | 4.680851 | 'Guanghouz - UCloud' to 'Hongkong - Qincloud 0' | OPTIMIZED (Better Packet Lost rate) |
75 | 0.000000 | 0.000000 | 'Hongkong - Rackspace' to 'Hongkong - Qincloud 0' | OK (Same Packet Lost rate) |
76 | 0.000000 | 0.141844 | 'Tokyo - Amazon' to 'Hongkong - Qincloud 0' | OPTIMIZED (Better Packet Lost rate) |
77 | 0.709220 | 17.605634 | 'Strasbourg - OVH' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
78 | 0.000000 | 0.409836 | 'Beijing - Qincloud' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
79 | 0.785714 | 0.709220 | 'Singapour - Amazon' to 'Guanghouz - UCloud' | OK (less them 1% diference is considered same) |
80 | 0.357143 | 2.808511 | 'Hongkong - Qincloud 1' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
81 | 0.071429 | 4.326241 | 'Hongkong - Qincloud 0' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
82 | 3.237410 | 21.588652 | 'US West - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
83 | 0.780142 | 23.556338 | 'Virginia - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
84 | 0.000000 | 0.000000 | 'Guanghouz - Qincloud' to 'Guanghouz - UCloud' | OK (Same Packet Lost rate) |
85 | 3.191489 | 20.669014 | 'Beauharnois - OVH' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
86 | 0.928571 | 1.560284 | 'Hongkong - Rackspace' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
87 | 0.857143 | 8.297872 | 'Tokyo - Amazon' to 'Guanghouz - UCloud' | OPTIMIZED (Better Packet Lost rate) |
88 | 0.070922 | 0.352113 | 'Strasbourg - OVH' to 'Tokyo - Amazon' | OPTIMIZED (Better Packet Lost rate) |
89 | 0.826446 | 0.327869 | 'Beijing - Qincloud' to 'Tokyo - Amazon' | OK (less them 1% diference is considered same) |
90 | 0.000000 | 0.000000 | 'Singapour - Amazon' to 'Tokyo - Amazon' | OK (Same Packet Lost rate) |
91 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 1' to 'Tokyo - Amazon' | OK (Same Packet Lost rate) |
92 | 0.142857 | 0.141844 | 'Hongkong - Qincloud 0' to 'Tokyo - Amazon' | OK (less them 1% diference is considered same) |
93 | 0.000000 | 0.000000 | 'US West - Amazon' to 'Tokyo - Amazon' | OK (Same Packet Lost rate) |
94 | 0.000000 | 0.000000 | 'Virginia - Amazon' to 'Tokyo - Amazon' | OK (Same Packet Lost rate) |
95 | 0.214286 | 10.567376 | 'Guanghouz - Qincloud' to 'Tokyo - Amazon' | OPTIMIZED (Better Packet Lost rate) |
96 | 0.070922 | 0.211268 | 'Beauharnois - OVH' to 'Tokyo - Amazon' | OPTIMIZED (Better Packet Lost rate) |
97 | 0.785714 | 9.716312 | 'Guanghouz - UCloud' to 'Tokyo - Amazon' | OPTIMIZED (Better Packet Lost rate) |
98 | 0.000000 | 2.553191 | 'Hongkong - Rackspace' to 'Tokyo - Amazon' | OPTIMIZED (Better Packet Lost rate) |
99 | 0.212766 | 0.985915 | 'Strasbourg - OVH' to 'Singapour - Amazon' | OPTIMIZED (Better Packet Lost rate) |
100 | 0.245902 | 1.056911 | 'Beijing - Qincloud' to 'Singapour - Amazon' | OPTIMIZED (Better Packet Lost rate) |
101 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 1' to 'Singapour - Amazon' | OK (Same Packet Lost rate) |
102 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 0' to 'Singapour - Amazon' | OK (Same Packet Lost rate) |
103 | 0.000000 | 0.000000 | 'US West - Amazon' to 'Singapour - Amazon' | OK (Same Packet Lost rate) |
104 | 0.000000 | 0.000000 | 'Virginia - Amazon' to 'Singapour - Amazon' | OK (Same Packet Lost rate) |
105 | 0.214286 | 0.141844 | 'Guanghouz - Qincloud' to 'Singapour - Amazon' | OK (less them 1% diference is considered same) |
106 | 0.070922 | 0.140845 | 'Beauharnois - OVH' to 'Singapour - Amazon' | OPTIMIZED (Better Packet Lost rate) |
107 | 0.071429 | 0.638298 | 'Guanghouz - UCloud' to 'Singapour - Amazon' | OPTIMIZED (Better Packet Lost rate) |
108 | 0.000000 | 1.347518 | 'Hongkong - Rackspace' to 'Singapour - Amazon' | OPTIMIZED (Better Packet Lost rate) |
109 | 0.000000 | 0.000000 | 'Tokyo - Amazon' to 'Singapour - Amazon' | OK (Same Packet Lost rate) |
110 | 1.134752 | 0.492958 | 'Strasbourg - OVH' to 'Hongkong - Qincloud 1' | OK (less them 1% diference is considered same) |
111 | 0.991736 | 1.229508 | 'Beijing - Qincloud' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
112 | 0.071429 | 0.000000 | 'Singapour - Amazon' to 'Hongkong - Qincloud 1' | OK (less them 1% diference is considered same) |
113 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 0' to 'Hongkong - Qinclou... | OK (Same Packet Lost rate) |
114 | 0.000000 | 0.000000 | 'US West - Amazon' to 'Hongkong - Qincloud 1' | OK (Same Packet Lost rate) |
115 | 0.000000 | 2.957746 | 'Virginia - Amazon' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
116 | 0.285714 | 0.780142 | 'Guanghouz - Qincloud' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
117 | 0.070922 | 0.633803 | 'Beauharnois - OVH' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
118 | 0.000000 | 1.631206 | 'Guanghouz - UCloud' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
119 | 0.000000 | 0.070922 | 'Hongkong - Rackspace' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
120 | 0.000000 | 0.070922 | 'Tokyo - Amazon' to 'Hongkong - Qincloud 1' | OPTIMIZED (Better Packet Lost rate) |
121 | 0.141844 | 0.000000 | 'Strasbourg - OVH' to 'US West - Amazon' | OK (less them 1% diference is considered same) |
122 | 0.491803 | 0.327869 | 'Beijing - Qincloud' to 'US West - Amazon' | OK (less them 1% diference is considered same) |
123 | 0.000000 | 0.000000 | 'Singapour - Amazon' to 'US West - Amazon' | OK (Same Packet Lost rate) |
124 | 0.000000 | 0.000000 | 'Hongkong - Qincloud 1' to 'US West - Amazon' | OK (Same Packet Lost rate) |
125 | 0.928571 | 0.000000 | 'Hongkong - Qincloud 0' to 'US West - Amazon' | OK (less them 1% diference is considered same) |
126 | 0.070922 | 0.000000 | 'Virginia - Amazon' to 'US West - Amazon' | OK (less them 1% diference is considered same) |
127 | 1.642857 | 16.439716 | 'Guanghouz - Qincloud' to 'US West - Amazon' | OPTIMIZED (Better Packet Lost rate) |
128 | 0.000000 | 0.140845 | 'Beauharnois - OVH' to 'US West - Amazon' | OPTIMIZED (Better Packet Lost rate) |
129 | 1.785714 | 23.531915 | 'Guanghouz - UCloud' to 'US West - Amazon' | OPTIMIZED (Better Packet Lost rate) |
130 | 3.357143 | 0.921986 | 'Hongkong - Rackspace' to 'US West - Amazon' | BAD (Worst Packet Lost rate) |
131 | 0.000000 | 0.000000 | 'Tokyo - Amazon' to 'US West - Amazon' | OK (Same Packet Lost rate) |
Even our high expectations couldn't match the results obtained with our Monitoring experiment, we could still observe that GrandeNet globally reduced the Latency between 15% to 30% and Packet loss to lower then 1% (5-10 times better usually) for a group of computers if compared with standard IPv4.
Considering all individual links between monitored servers and ping response (latency), between 50% and 70% of connections were optimized through use of GrandeNet with packet loss being lowered on 45% to 65% of all connections.
GrandeNet still doesn't use a fully connected mesh configuration, so we also observed that a small portion of connections decreases in quality when using GrandeNet IPv6. However, this issue can be resolved through monitoring by creating additional direct tunnels between the servers that show standard IPv4 to be faster. By creating these direct tunnels, we thus stabilise the mesh because it will only include optimised or same speed links (our additional direct tunnels) on GrandeNet.
# Global Average result
ipv4_mean = df_average_statistic["internet_ipv4"].mean()
ipv6_mean = df_average_statistic["grandenet_ipv6"].mean()
display("IPv4 Final Average from all links: %.2fms" % ipv4_mean)
display("IPv6 Final Average from all links: %.2fms" % ipv6_mean)
if ipv4_mean > ipv6_mean:
display("Grandent Optimized the network Globally in %.2f%% in average for each ping response." % \
(((ipv4_mean - ipv6_mean)/ipv4_mean)*100))
elif ipv4_mean == ipv6_mean:
display("<h1>No Optimisation found.</h1>")
elif ipv4_mean < ipv6_mean:
display("Grandenet is making things worst in %sms, please review the configuration." % (ipv6_mean - ipv4_mean))
'IPv4 Final Average from all links: 161.75ms'
'IPv6 Final Average from all links: 127.46ms'
'Grandent Optimized the network Globally in 21.20% in average for each ping response.'
# Number of optimisations
total = len(df_average_statistic)
optimized = len(df_average_statistic[df_average_statistic["internet_ipv4"] > df_average_statistic["grandenet_ipv6"]])
worst = len(df_average_statistic[
df_average_statistic.apply(lambda x: x["internet_ipv4"] < x["grandenet_ipv6"] - max(20, x["internet_ipv4"]*0.1), axis=1)])
display("Total Number of Links tested: %s" % total)
display("Number of Optimized Links: %s (%.2f%%)" % (optimized, (float(optimized)/total)*100))
display("Number of links which becomes worst: %s (%.2f%%)" % (worst, (float(worst)/total)*100))
display("Number of links which unchanged : %s (%.2f%%)" % ((total-(optimized+worst)), (float(total-(optimized+worst))/total)*100))
'Total Number of Links tested: 132'
'Number of Optimized Links: 78 (59.09%)'
'Number of links which becomes worst: 0 (0.00%)'
'Number of links which unchanged : 54 (40.91%)'
ipv4_package_lost_rate = df_packetlost_statistic["internet_ipv4_packet_lost"].mean()
ipv6_package_lost_rate = df_packetlost_statistic["grandenet_ipv6_packet_lost"].mean()
display("Average of Packet Lost Rate per link using Internet (IPv4): %.2f%%" % ipv4_package_lost_rate)
display("Average of Packet Lost Rate per link using Grandenet (IPv6): %.2f%%" % ipv6_package_lost_rate)
if ipv4_package_lost_rate > ipv6_package_lost_rate:
display("Grandent Optimized the network Globally in %.2f%% less packet lost in average, it is %.2f times better." % \
(ipv4_package_lost_rate - ipv6_package_lost_rate, (float(ipv4_package_lost_rate/ipv6_package_lost_rate))))
elif ipv4_package_lost_rate == ipv6_package_lost_rate:
display("No Optimisation found.")
elif ipv4_package_lost_rate < ipv6_package_lost_rate:
display("Grandenet is making things worst in %.2f%% , please review the configuration." % (ipv6_package_lost_rate - ipv4_package_lost_rate))
'Average of Packet Lost Rate per link using Internet (IPv4): 3.12%'
'Average of Packet Lost Rate per link using Grandenet (IPv6): 0.52%'
'Grandent Optimized the network Globally in 2.61% less packet lost in average, it is 6.05 times better.'
dps = df_packetlost_statistic
total = len(dps)
optimized = len(dps[dps["internet_ipv4_packet_lost"] > dps["grandenet_ipv6_packet_lost"]])
worst = len(dps[(dps["internet_ipv4_packet_lost"] < dps["grandenet_ipv6_packet_lost"])]
[(dps["grandenet_ipv6_packet_lost"] - dps["internet_ipv4_packet_lost"]) > 1])
same = len(dps[(dps["internet_ipv4_packet_lost"] == dps["grandenet_ipv6_packet_lost"])])
same += len(dps[(dps["grandenet_ipv6_packet_lost"] - dps["internet_ipv4_packet_lost"]) < 1]
[(dps["grandenet_ipv6_packet_lost"] > dps["internet_ipv4_packet_lost"])])
display("Total Number of Links tested: %s" % total)
display("Number of Optimized links with less packet lost: %s (%.2f%%)" % (optimized, (float(optimized)/total)*100))
display("Number of links which becomes worst: %s (%.2f%%)" % (worst, (float(worst)/total)*100))
display("Number of links which unchanged : %s (%.2f%%)" % (same, (float(same)/total)*100))
'Total Number of Links tested: 132'
'Number of Optimized links with less packet lost: 75 (56.82%)'
'Number of links which becomes worst: 3 (2.27%)'
'Number of links which unchanged : 54 (40.91%)'