Description of the on-wire protocol

This commit is contained in:
Martin Fouilleul 2022-06-04 13:14:22 +02:00
parent 544fd5e093
commit 1ffb3750b4
2 changed files with 310 additions and 1 deletions

273
selected/NTP_on_wire.svg Normal file
View File

@ -0,0 +1,273 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1658pt" height="426pt" viewBox="0 0 1658 426" version="1.1"><!--latexit:AAAKO3jalVZbbBRVGP4PnAVaLt2W+32wW2ntdtltubW1SAHLfbls7xfW2dnT3WGn
M8vMWaBtmpwYQnjQ+GKClwSlvIgxioqG+OATGmOUYCHExBiDCVET44M+8uJ/ZqZl
uSnMZHfO/5//+/7/++ecs5vKG7rDo9GbZNp0Gpgxs7Q7dJzZjm6ZPSHV1rI6Wu0h
buW7Q1bqKNO4UwHk9LvJYFk8sZcNs3SrH/TDrJJ227K4IB8F18yeU/Xs2uqa52rD
dZF1G5qf37pjz95Dh3v7jqhs8OhQnhc6QmbBMG7MnVcWXBbqiiciOTbs9OLTT9IZ
0gzVcS6WV8xfsHDR4iVLxTQxXVAREDPETDFLlIjSi8tXrFy1WlnzTKWYLeaIeaJM
lItlYrlYKVYJpTulOszQTdahWYZltw9ZadbBdW6w7rzN1KGUwQaG1IypD+qaylFu
e1rlDGWlVC2Xsa2Cmd4ugb2OVbA11s5O8krwrxvRWFl9w/qOeOLwzm398YQbmMir
GmuLKnhDkIi5Exs3bW7s9WSY6hDr9obM6fIB45ubuuOJA67eIJ0oa9nyQg82wOG2
bmZE8CAStG5z+7y/wFWsN+HOXGjdLnGecePFsradu3ZP2VhMK8dRqsCZIyrEUjHf
KicR6Ic0WKBBAYaAgQkcxwao4ODdBzGIQh59AzCKPhtHujvPYAxKEVvAKIYRKnpz
+J1Bq8/3mmhLTsdFa5jFwI+NSAWqEGNhnI1jmU1x5wsus/Q+jnvU5ZS1DeMz5XMN
oZdDFr3/h5uMfFKc1MJhEDa7GnTUlHc9Up3msxTcrsjKlSJVHBny6JPjNM7bONZc
5GSfFRfjuNplb1V3/nc3UnqlrfmxBfjjP9XJCnIwct9bmfQZ+Ey5/DZ2zXuPNtZ5
AqPCbp57dsStTtbuzUhtlt8nzycVOsgo2S2sTfYk48/IKO5qNjFmTO7hffGD5/eL
BecPiIViSWc80WaZ/GaivaOss6u7B+2EPsJwjQ62GWrGQTuO+6Fya7W3m4JBsUgs
7txvmapm4aLvH/AZxvub0Ey+hIt6h67JParaw+NJ6UxpyWBF0VpPe8t/PN30SH/l
1m1erolMWVaXxw3XsYLWq1WXc7++cUesQMqcgWl34BkwnmuSG9xsWN8WU/AGMVdu
s2O7dovVckMly6ff6k+xjG6Ocj03ksfSCjYb61NP6s463L7DBmsZ5Vldy4WVui1h
ZUtLu62rZsZgY+FSxb8ytpq+P7hoEmvOF0+aDxENTIaW9qdt9YSbe0CpjoaVhhql
rk6pjm2Qw+bHhkWnwqI1zaX9Jp6OfaqpZS27hakODysnnaw+yFvqopENbGhAUfkk
+2iC2Xjcjz0FCpONbjd0ZvIHUXi48qxygknssId9OGGIJx2lReFJrbafZxlXQ09N
E/VoNBfptkK+AGxFA7Y2Gol53UBDjh8I2RhW6iONXgSOGx6OaCyKaHxkRKy+OI+0
/ETFKkzL5tkpAcU9bJhSEHu09kfJ3jjVvfonBzVOgRoeAj2+PleQB1t/r8VyGcsW
R2KeXKnd5TPYYNFaiSHLqM2OFfD1KaFq1FgTGlOqN0T8tj5A1yjpJtvt0tl6JnuP
r9bnyxvDHlsYG4CfBpc1FpO0fvOZmb5vC+MpcPxEMjh/6hf33rFz4XiyCWZBOSyD
ENRAPWyC3bAPDkECT9QxOAWvwFk4B+/B+/ABfAiX4BO4DJ/DFfgCrsLX8A18C9/B
NbgOE3ATbsGPcBt+gz/hb7hLSsg8opBasp40k1YSJx2ki/SQI0QnNhkhY+Q0OUNe
JWfJm+Qt8g75mHxGviRfkWvkJ/Iz+YXcpq10F91D99E4PUgP0x6aojq16TB9mZ6i
p+kZ+hp9nb5Nz9EL9BL9lF6h39Pr9A79i/5D7wbwH19gdqAisDCwIlAZqAqEA5FA
NFBfMqekvGStd2ROI/6/npNw31VS+y8b4dYx-->
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 12.515625 -13.90625 L 7.921875 -15.03125 C 5.703125 -15.5625 4.296875 -17.5 4.296875 -19.578125 C 4.296875 -22.09375 6.234375 -24.28125 9.03125 -24.28125 C 15.03125 -24.28125 15.8125 -18.390625 16.03125 -16.78125 C 16.0625 -16.5625 16.0625 -16.359375 16.453125 -16.359375 C 16.921875 -16.359375 16.921875 -16.53125 16.921875 -17.21875 L 16.921875 -24.421875 C 16.921875 -25.03125 16.921875 -25.28125 16.53125 -25.28125 C 16.28125 -25.28125 16.25 -25.25 16 -24.8125 L 14.734375 -22.765625 C 13.65625 -23.8125 12.1875 -25.28125 9 -25.28125 C 5.015625 -25.28125 2.015625 -22.125 2.015625 -18.328125 C 2.015625 -15.34375 3.90625 -12.734375 6.703125 -11.765625 C 7.09375 -11.625 8.921875 -11.1875 11.4375 -10.578125 C 12.40625 -10.328125 13.484375 -10.078125 14.484375 -8.75 C 15.234375 -7.8125 15.59375 -6.640625 15.59375 -5.453125 C 15.59375 -2.90625 13.8125 -0.328125 10.796875 -0.328125 C 9.75 -0.328125 7.03125 -0.5 5.125 -2.265625 C 3.046875 -4.203125 2.9375 -6.484375 2.90625 -7.78125 C 2.875 -8.140625 2.578125 -8.140625 2.46875 -8.140625 C 2.015625 -8.140625 2.015625 -7.890625 2.015625 -7.25 L 2.015625 -0.078125 C 2.015625 0.53125 2.015625 0.78125 2.40625 0.78125 C 2.65625 0.78125 2.6875 0.71875 2.9375 0.328125 C 2.9375 0.28125 3.046875 0.171875 4.234375 -1.71875 C 5.34375 -0.5 7.640625 0.78125 10.828125 0.78125 C 15.03125 0.78125 17.890625 -2.71875 17.890625 -6.671875 C 17.890625 -10.25 15.53125 -13.203125 12.515625 -13.90625 Z M 12.515625 -13.90625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 4.015625 -9.03125 C 4.234375 -14.375 7.25 -15.28125 8.46875 -15.28125 C 12.15625 -15.28125 12.515625 -10.4375 12.515625 -9.03125 Z M 3.984375 -8.28125 L 13.984375 -8.28125 C 14.78125 -8.28125 14.875 -8.28125 14.875 -9.03125 C 14.875 -12.59375 12.9375 -16.0625 8.46875 -16.0625 C 4.296875 -16.0625 1 -12.375 1 -7.890625 C 1 -3.078125 4.765625 0.390625 8.890625 0.390625 C 13.265625 0.390625 14.875 -3.578125 14.875 -4.265625 C 14.875 -4.625 14.59375 -4.703125 14.421875 -4.703125 C 14.09375 -4.703125 14.015625 -4.484375 13.953125 -4.203125 C 12.6875 -0.5 9.46875 -0.5 9.109375 -0.5 C 7.3125 -0.5 5.875 -1.578125 5.0625 -2.90625 C 3.984375 -4.625 3.984375 -7 3.984375 -8.28125 Z M 3.984375 -8.28125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 5.984375 -11.90625 L 5.984375 -15.84375 L 1 -15.453125 L 1 -14.34375 C 3.515625 -14.34375 3.796875 -14.09375 3.796875 -12.328125 L 3.796875 -2.71875 C 3.796875 -1.109375 3.40625 -1.109375 1 -1.109375 L 1 0 C 2.40625 -0.03125 4.09375 -0.109375 5.09375 -0.109375 C 6.53125 -0.109375 8.21875 -0.109375 9.640625 0 L 9.640625 -1.109375 L 8.890625 -1.109375 C 6.234375 -1.109375 6.171875 -1.5 6.171875 -2.796875 L 6.171875 -8.3125 C 6.171875 -11.875 7.671875 -15.0625 10.40625 -15.0625 C 10.65625 -15.0625 10.71875 -15.0625 10.796875 -15.03125 C 10.6875 -14.984375 9.96875 -14.5625 9.96875 -13.625 C 9.96875 -12.625 10.71875 -12.078125 11.515625 -12.078125 C 12.15625 -12.078125 13.046875 -12.515625 13.046875 -13.65625 C 13.046875 -14.8125 11.9375 -15.84375 10.40625 -15.84375 C 7.78125 -15.84375 6.484375 -13.453125 5.984375 -11.90625 Z M 5.984375 -11.90625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 14.921875 -11.9375 C 15.234375 -12.765625 15.84375 -14.3125 18.21875 -14.34375 L 18.21875 -15.453125 C 17.390625 -15.390625 16.359375 -15.34375 15.53125 -15.34375 C 14.671875 -15.34375 13.015625 -15.421875 12.40625 -15.453125 L 12.40625 -14.34375 C 13.734375 -14.3125 14.125 -13.484375 14.125 -12.796875 C 14.125 -12.484375 14.0625 -12.328125 13.90625 -11.9375 L 10.25 -2.796875 L 6.234375 -12.796875 C 6.03125 -13.265625 6.03125 -13.34375 6.03125 -13.40625 C 6.03125 -14.34375 7.421875 -14.34375 8.0625 -14.34375 L 8.0625 -15.453125 C 7 -15.421875 4.984375 -15.34375 4.15625 -15.34375 C 3.1875 -15.34375 1.75 -15.390625 0.6875 -15.453125 L 0.6875 -14.34375 C 2.9375 -14.34375 3.078125 -14.125 3.546875 -13.015625 L 8.71875 -0.28125 C 8.921875 0.21875 9 0.390625 9.46875 0.390625 C 9.9375 0.390625 10.078125 0.078125 10.21875 -0.28125 Z M 14.921875 -11.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 2.015625 -12.265625 C 2.015625 -4.84375 7.8125 0.78125 14.484375 0.78125 C 20.328125 0.78125 23.84375 -4.203125 23.84375 -8.359375 C 23.84375 -8.71875 23.84375 -8.96875 23.375 -8.96875 C 22.984375 -8.96875 22.984375 -8.75 22.953125 -8.390625 C 22.65625 -3.265625 18.828125 -0.328125 14.921875 -0.328125 C 12.734375 -0.328125 5.703125 -1.546875 5.703125 -12.234375 C 5.703125 -22.953125 12.6875 -24.171875 14.875 -24.171875 C 18.796875 -24.171875 21.984375 -20.90625 22.703125 -15.671875 C 22.765625 -15.171875 22.765625 -15.0625 23.265625 -15.0625 C 23.84375 -15.0625 23.84375 -15.171875 23.84375 -15.921875 L 23.84375 -24.421875 C 23.84375 -25.03125 23.84375 -25.28125 23.453125 -25.28125 C 23.3125 -25.28125 23.171875 -25.28125 22.875 -24.84375 L 21.078125 -22.203125 C 19.765625 -23.484375 17.921875 -25.28125 14.484375 -25.28125 C 7.78125 -25.28125 2.015625 -19.578125 2.015625 -12.265625 Z M 2.015625 -12.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 6.34375 -24.890625 L 1.1875 -24.484375 L 1.1875 -23.375 C 3.6875 -23.375 3.984375 -23.125 3.984375 -21.375 L 3.984375 -2.71875 C 3.984375 -1.109375 3.578125 -1.109375 1.1875 -1.109375 L 1.1875 0 C 2.359375 -0.03125 4.265625 -0.109375 5.15625 -0.109375 C 6.0625 -0.109375 7.8125 -0.03125 9.140625 0 L 9.140625 -1.109375 C 6.734375 -1.109375 6.34375 -1.109375 6.34375 -2.71875 Z M 6.34375 -24.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 6.34375 -15.84375 L 1.328125 -15.453125 L 1.328125 -14.34375 C 3.65625 -14.34375 3.984375 -14.125 3.984375 -12.375 L 3.984375 -2.71875 C 3.984375 -1.109375 3.578125 -1.109375 1.1875 -1.109375 L 1.1875 0 C 2.328125 -0.03125 4.265625 -0.109375 5.125 -0.109375 C 6.390625 -0.109375 7.640625 -0.03125 8.859375 0 L 8.859375 -1.109375 C 6.484375 -1.109375 6.34375 -1.296875 6.34375 -2.6875 Z M 6.484375 -22.09375 C 6.484375 -23.234375 5.59375 -23.984375 4.59375 -23.984375 C 3.484375 -23.984375 2.6875 -23.015625 2.6875 -22.09375 C 2.6875 -21.125 3.484375 -20.1875 4.59375 -20.1875 C 5.59375 -20.1875 6.484375 -20.9375 6.484375 -22.09375 Z M 6.484375 -22.09375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 3.9375 -12.328125 L 3.9375 -2.71875 C 3.9375 -1.109375 3.546875 -1.109375 1.140625 -1.109375 L 1.140625 0 C 2.40625 -0.03125 4.234375 -0.109375 5.203125 -0.109375 C 6.125 -0.109375 8 -0.03125 9.21875 0 L 9.21875 -1.109375 C 6.8125 -1.109375 6.421875 -1.109375 6.421875 -2.71875 L 6.421875 -9.328125 C 6.421875 -13.046875 8.96875 -15.0625 11.265625 -15.0625 C 13.515625 -15.0625 13.90625 -13.125 13.90625 -11.078125 L 13.90625 -2.71875 C 13.90625 -1.109375 13.515625 -1.109375 11.109375 -1.109375 L 11.109375 0 C 12.375 -0.03125 14.203125 -0.109375 15.171875 -0.109375 C 16.09375 -0.109375 17.96875 -0.03125 19.1875 0 L 19.1875 -1.109375 C 17.3125 -1.109375 16.421875 -1.109375 16.390625 -2.1875 L 16.390625 -9.03125 C 16.390625 -12.125 16.390625 -13.234375 15.28125 -14.515625 C 14.78125 -15.125 13.59375 -15.84375 11.515625 -15.84375 C 8.890625 -15.84375 7.203125 -14.3125 6.203125 -12.078125 L 6.203125 -15.84375 L 1.140625 -15.453125 L 1.140625 -14.34375 C 3.65625 -14.34375 3.9375 -14.09375 3.9375 -12.328125 Z M 3.9375 -12.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 6.203125 -14.34375 L 11.328125 -14.34375 L 11.328125 -15.453125 L 6.203125 -15.453125 L 6.203125 -22.046875 L 5.3125 -22.046875 C 5.265625 -19.109375 4.203125 -15.28125 0.6875 -15.125 L 0.6875 -14.34375 L 3.734375 -14.34375 L 3.734375 -4.453125 C 3.734375 -0.03125 7.0625 0.390625 8.359375 0.390625 C 10.90625 0.390625 11.90625 -2.15625 11.90625 -4.453125 L 11.90625 -6.484375 L 11.015625 -6.484375 L 11.015625 -4.515625 C 11.015625 -1.859375 9.9375 -0.5 8.609375 -0.5 C 6.203125 -0.5 6.203125 -3.765625 6.203125 -4.375 Z M 6.203125 -14.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 24.640625 -11.71875 C 25.171875 -11.71875 25.859375 -11.71875 25.859375 -12.4375 C 25.859375 -13.15625 25.171875 -13.15625 24.671875 -13.15625 L 3.1875 -13.15625 C 2.6875 -13.15625 2.015625 -13.15625 2.015625 -12.4375 C 2.015625 -11.71875 2.6875 -11.71875 3.234375 -11.71875 Z M 24.671875 -4.765625 C 25.171875 -4.765625 25.859375 -4.765625 25.859375 -5.484375 C 25.859375 -6.203125 25.171875 -6.203125 24.640625 -6.203125 L 3.234375 -6.203125 C 2.6875 -6.203125 2.015625 -6.203125 2.015625 -5.484375 C 2.015625 -4.765625 2.6875 -4.765625 3.1875 -4.765625 Z M 24.671875 -4.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 14.671875 -8.25 L 24.671875 -8.25 C 25.171875 -8.25 25.859375 -8.25 25.859375 -8.96875 C 25.859375 -9.6875 25.171875 -9.6875 24.671875 -9.6875 L 14.671875 -9.6875 L 14.671875 -19.71875 C 14.671875 -20.21875 14.671875 -20.90625 13.953125 -20.90625 C 13.234375 -20.90625 13.234375 -20.21875 13.234375 -19.71875 L 13.234375 -9.6875 L 3.1875 -9.6875 C 2.6875 -9.6875 2.015625 -9.6875 2.015625 -8.96875 C 2.015625 -8.25 2.6875 -8.25 3.1875 -8.25 L 13.234375 -8.25 L 13.234375 1.796875 C 13.234375 2.296875 13.234375 2.96875 13.953125 2.96875 C 14.671875 2.96875 14.671875 2.296875 14.671875 1.796875 Z M 14.671875 -8.25 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 13.625 -2.1875 L 13.625 4.234375 C 13.625 5.84375 13.234375 5.84375 10.828125 5.84375 L 10.828125 6.953125 C 12.046875 6.921875 13.90625 6.84375 14.84375 6.84375 C 15.8125 6.84375 17.640625 6.921875 18.890625 6.953125 L 18.890625 5.84375 C 16.5 5.84375 16.09375 5.84375 16.09375 4.234375 L 16.09375 -15.84375 L 15.3125 -15.84375 L 13.953125 -12.59375 C 13.484375 -13.59375 12.015625 -15.84375 9.140625 -15.84375 C 4.984375 -15.84375 1.21875 -12.375 1.21875 -7.703125 C 1.21875 -3.234375 4.703125 0.390625 8.859375 0.390625 C 11.375 0.390625 12.84375 -1.140625 13.625 -2.1875 Z M 13.734375 -9.9375 L 13.734375 -4.875 C 13.734375 -3.734375 13.09375 -2.71875 12.296875 -1.859375 C 11.828125 -1.359375 10.6875 -0.390625 9 -0.390625 C 6.390625 -0.390625 4.203125 -3.578125 4.203125 -7.703125 C 4.203125 -11.984375 6.703125 -14.953125 9.359375 -14.953125 C 12.234375 -14.953125 13.734375 -11.828125 13.734375 -9.9375 Z M 13.734375 -9.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 14.015625 -2.828125 L 14.015625 0.390625 L 19.1875 0 L 19.1875 -1.109375 C 16.671875 -1.109375 16.390625 -1.359375 16.390625 -3.125 L 16.390625 -15.84375 L 11.109375 -15.453125 L 11.109375 -14.34375 C 13.625 -14.34375 13.90625 -14.09375 13.90625 -12.328125 L 13.90625 -5.953125 C 13.90625 -2.828125 12.1875 -0.390625 9.578125 -0.390625 C 6.5625 -0.390625 6.421875 -2.078125 6.421875 -3.9375 L 6.421875 -15.84375 L 1.140625 -15.453125 L 1.140625 -14.34375 C 3.9375 -14.34375 3.9375 -14.234375 3.9375 -11.046875 L 3.9375 -5.671875 C 3.9375 -2.875 3.9375 0.390625 9.390625 0.390625 C 11.40625 0.390625 12.984375 -0.609375 14.015625 -2.828125 Z M 14.015625 -2.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 7.453125 -6.953125 C 8.25 -6.8125 11.1875 -6.234375 11.1875 -3.65625 C 11.1875 -1.828125 9.9375 -0.390625 7.140625 -0.390625 C 4.125 -0.390625 2.828125 -2.4375 2.15625 -5.484375 C 2.046875 -5.953125 2.015625 -6.09375 1.65625 -6.09375 C 1.1875 -6.09375 1.1875 -5.84375 1.1875 -5.203125 L 1.1875 -0.46875 C 1.1875 0.140625 1.1875 0.390625 1.578125 0.390625 C 1.75 0.390625 1.796875 0.359375 2.46875 -0.328125 C 2.546875 -0.390625 2.546875 -0.46875 3.1875 -1.140625 C 4.765625 0.359375 6.390625 0.390625 7.140625 0.390625 C 11.265625 0.390625 12.90625 -2.015625 12.90625 -4.59375 C 12.90625 -6.484375 11.828125 -7.5625 11.40625 -8 C 10.21875 -9.140625 8.828125 -9.4375 7.3125 -9.71875 C 5.3125 -10.109375 2.90625 -10.578125 2.90625 -12.65625 C 2.90625 -13.90625 3.84375 -15.390625 6.921875 -15.390625 C 10.859375 -15.390625 11.046875 -12.15625 11.109375 -11.046875 C 11.15625 -10.71875 11.46875 -10.71875 11.546875 -10.71875 C 12.015625 -10.71875 12.015625 -10.90625 12.015625 -11.578125 L 12.015625 -15.203125 C 12.015625 -15.8125 12.015625 -16.0625 11.625 -16.0625 C 11.4375 -16.0625 11.375 -16.0625 10.90625 -15.640625 C 10.796875 -15.484375 10.4375 -15.171875 10.296875 -15.0625 C 8.921875 -16.0625 7.453125 -16.0625 6.921875 -16.0625 C 2.546875 -16.0625 1.1875 -13.65625 1.1875 -11.65625 C 1.1875 -10.40625 1.75 -9.390625 2.71875 -8.609375 C 3.875 -7.671875 4.875 -7.453125 7.453125 -6.953125 Z M 7.453125 -6.953125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 11.875 8.609375 C 11.875 8.5 11.875 8.421875 11.265625 7.8125 C 6.78125 3.296875 5.625 -3.484375 5.625 -8.96875 C 5.625 -15.203125 7 -21.4375 11.40625 -25.921875 C 11.875 -26.359375 11.875 -26.421875 11.875 -26.53125 C 11.875 -26.78125 11.71875 -26.890625 11.515625 -26.890625 C 11.15625 -26.890625 7.921875 -24.453125 5.8125 -19.90625 C 3.984375 -15.953125 3.546875 -11.984375 3.546875 -8.96875 C 3.546875 -6.171875 3.9375 -1.828125 5.921875 2.21875 C 8.0625 6.640625 11.15625 8.96875 11.515625 8.96875 C 11.71875 8.96875 11.875 8.859375 11.875 8.609375 Z M 11.875 8.609375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 10.359375 -8.96875 C 10.359375 -11.765625 9.96875 -16.09375 8 -20.15625 C 5.84375 -24.5625 2.765625 -26.890625 2.40625 -26.890625 C 2.1875 -26.890625 2.046875 -26.75 2.046875 -26.53125 C 2.046875 -26.421875 2.046875 -26.359375 2.71875 -25.71875 C 6.234375 -22.15625 8.28125 -16.453125 8.28125 -8.96875 C 8.28125 -2.828125 6.953125 3.484375 2.515625 8 C 2.046875 8.421875 2.046875 8.5 2.046875 8.609375 C 2.046875 8.828125 2.1875 8.96875 2.40625 8.96875 C 2.765625 8.96875 5.984375 6.53125 8.109375 1.96875 C 9.9375 -1.96875 10.359375 -5.953125 10.359375 -8.96875 Z M 10.359375 -8.96875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 6.171875 -13.484375 L 6.171875 -15.84375 L 1 -15.453125 L 1 -14.34375 C 3.546875 -14.34375 3.796875 -14.125 3.796875 -12.546875 L 3.796875 4.234375 C 3.796875 5.84375 3.40625 5.84375 1 5.84375 L 1 6.953125 C 2.21875 6.921875 4.09375 6.84375 5.015625 6.84375 C 5.984375 6.84375 7.8125 6.921875 9.078125 6.953125 L 9.078125 5.84375 C 6.671875 5.84375 6.28125 5.84375 6.28125 4.234375 L 6.28125 -2.109375 C 6.453125 -1.546875 7.953125 0.390625 10.6875 0.390625 C 14.953125 0.390625 18.6875 -3.125 18.6875 -7.75 C 18.6875 -12.296875 15.203125 -15.84375 11.1875 -15.84375 C 8.390625 -15.84375 6.890625 -14.265625 6.171875 -13.484375 Z M 6.28125 -4.09375 L 6.28125 -12.078125 C 7.3125 -13.90625 9.078125 -14.953125 10.90625 -14.953125 C 13.515625 -14.953125 15.703125 -11.796875 15.703125 -7.75 C 15.703125 -3.40625 13.203125 -0.390625 10.546875 -0.390625 C 9.109375 -0.390625 7.75 -1.109375 6.78125 -2.578125 C 6.28125 -3.328125 6.28125 -3.375 6.28125 -4.09375 Z M 6.28125 -4.09375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 14.875 -12.046875 C 15.8125 -14.3125 17.640625 -14.34375 18.21875 -14.34375 L 18.21875 -15.453125 C 17.390625 -15.390625 16.359375 -15.34375 15.53125 -15.34375 C 14.875 -15.34375 13.203125 -15.421875 12.40625 -15.453125 L 12.40625 -14.34375 C 13.515625 -14.3125 14.09375 -13.703125 14.09375 -12.796875 C 14.09375 -12.4375 14.0625 -12.375 13.875 -11.9375 L 10.25 -3.125 L 6.28125 -12.765625 C 6.125 -13.125 6.0625 -13.265625 6.0625 -13.40625 C 6.0625 -14.34375 7.390625 -14.34375 8.0625 -14.34375 L 8.0625 -15.453125 C 7.140625 -15.421875 4.765625 -15.34375 4.15625 -15.34375 C 3.1875 -15.34375 1.75 -15.390625 0.6875 -15.453125 L 0.6875 -14.34375 C 2.40625 -14.34375 3.078125 -14.34375 3.578125 -13.09375 L 8.96875 0 C 8.78125 0.46875 8.28125 1.65625 8.0625 2.109375 C 7.28125 4.09375 6.28125 6.5625 3.984375 6.5625 C 3.796875 6.5625 2.96875 6.5625 2.296875 5.921875 C 3.40625 5.765625 3.6875 4.984375 3.6875 4.40625 C 3.6875 3.484375 3.015625 2.90625 2.1875 2.90625 C 1.46875 2.90625 0.6875 3.375 0.6875 4.453125 C 0.6875 6.0625 2.1875 7.34375 3.984375 7.34375 C 6.234375 7.34375 7.703125 5.3125 8.578125 3.265625 Z M 14.875 -12.046875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 7.390625 -14.34375 L 10.75 -14.34375 C 11.46875 -14.34375 11.828125 -14.34375 11.828125 -15.0625 C 11.828125 -15.453125 11.46875 -15.453125 10.828125 -15.453125 L 7.671875 -15.453125 C 8.96875 -20.546875 9.140625 -21.265625 9.140625 -21.484375 C 9.140625 -22.09375 8.71875 -22.453125 8.109375 -22.453125 C 8 -22.453125 7 -22.40625 6.671875 -21.15625 L 5.265625 -15.453125 L 1.90625 -15.453125 C 1.1875 -15.453125 0.828125 -15.453125 0.828125 -14.78125 C 0.828125 -14.34375 1.109375 -14.34375 1.828125 -14.34375 L 4.984375 -14.34375 C 2.40625 -4.15625 2.265625 -3.546875 2.265625 -2.90625 C 2.265625 -0.96875 3.625 0.390625 5.5625 0.390625 C 9.21875 0.390625 11.265625 -4.84375 11.265625 -5.125 C 11.265625 -5.484375 10.96875 -5.484375 10.828125 -5.484375 C 10.5 -5.484375 10.46875 -5.375 10.296875 -4.984375 C 8.75 -1.25 6.84375 -0.390625 5.625 -0.390625 C 4.875 -0.390625 4.515625 -0.859375 4.515625 -2.046875 C 4.515625 -2.90625 4.59375 -3.15625 4.734375 -3.765625 Z M 7.390625 -14.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 16.3125 -17.921875 C 16.3125 -20.296875 15.671875 -25.28125 12.015625 -25.28125 C 7.03125 -25.28125 1.5 -15.171875 1.5 -6.953125 C 1.5 -3.578125 2.546875 0.390625 5.8125 0.390625 C 10.859375 0.390625 16.3125 -9.890625 16.3125 -17.921875 Z M 5.3125 -13.015625 C 5.921875 -15.3125 6.640625 -18.1875 8.0625 -20.734375 C 9.03125 -22.484375 10.359375 -24.484375 11.984375 -24.484375 C 13.734375 -24.484375 13.953125 -22.203125 13.953125 -20.15625 C 13.953125 -18.390625 13.65625 -16.5625 12.796875 -13.015625 Z M 12.484375 -11.875 C 12.078125 -10.21875 11.328125 -7.171875 9.96875 -4.59375 C 8.71875 -2.15625 7.34375 -0.390625 5.8125 -0.390625 C 4.625 -0.390625 3.875 -1.4375 3.875 -4.765625 C 3.875 -6.28125 4.09375 -8.359375 5.015625 -11.875 Z M 12.484375 -11.875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 7.28125 -0.03125 C 7.28125 -2.40625 6.390625 -3.796875 4.984375 -3.796875 C 3.796875 -3.796875 3.078125 -2.90625 3.078125 -1.90625 C 3.078125 -0.9375 3.796875 0 4.984375 0 C 5.421875 0 5.875 -0.140625 6.234375 -0.46875 C 6.34375 -0.53125 6.390625 -0.578125 6.421875 -0.578125 C 6.453125 -0.578125 6.484375 -0.53125 6.484375 -0.03125 C 6.484375 2.625 5.234375 4.765625 4.046875 5.953125 C 3.65625 6.34375 3.65625 6.421875 3.65625 6.53125 C 3.65625 6.78125 3.84375 6.921875 4.015625 6.921875 C 4.40625 6.921875 7.28125 4.15625 7.28125 -0.03125 Z M 7.28125 -0.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 10.828125 -9.4375 C 10.171875 -9.296875 9.765625 -8.765625 9.765625 -8.265625 C 9.765625 -7.6875 10.265625 -7.453125 10.59375 -7.453125 C 10.84375 -7.453125 11.796875 -7.609375 11.796875 -8.890625 C 11.796875 -10.515625 10 -11.078125 8.46875 -11.078125 C 4.546875 -11.078125 3.84375 -8.1875 3.84375 -7.40625 C 3.84375 -6.484375 4.375 -5.875 4.71875 -5.578125 C 5.375 -5.078125 5.828125 -4.96875 7.5625 -4.671875 C 8.078125 -4.5625 9.6875 -4.265625 9.6875 -3.015625 C 9.6875 -2.59375 9.421875 -1.625 8.359375 -1 C 7.375 -0.453125 6.15625 -0.453125 5.84375 -0.453125 C 4.84375 -0.453125 3.421875 -0.671875 2.84375 -1.5 C 3.671875 -1.609375 4.21875 -2.234375 4.21875 -2.9375 C 4.21875 -3.5625 3.765625 -3.859375 3.234375 -3.859375 C 2.515625 -3.859375 1.78125 -3.296875 1.78125 -2.1875 C 1.78125 -0.671875 3.390625 0.25 5.828125 0.25 C 10.453125 0.25 11.296875 -2.90625 11.296875 -3.890625 C 11.296875 -6.203125 8.765625 -6.65625 7.828125 -6.828125 C 7.609375 -6.875 6.984375 -6.984375 6.828125 -7.03125 C 5.90625 -7.203125 5.453125 -7.734375 5.453125 -8.28125 C 5.453125 -8.859375 5.90625 -9.546875 6.453125 -9.890625 C 7.125 -10.3125 8.015625 -10.375 8.4375 -10.375 C 8.96875 -10.375 10.265625 -10.296875 10.828125 -9.4375 Z M 10.828125 -9.4375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 11 -9.609375 C 10.09375 -9.46875 9.71875 -8.765625 9.71875 -8.203125 C 9.71875 -7.53125 10.25 -7.28125 10.703125 -7.28125 C 11.25 -7.28125 12.125 -7.6875 12.125 -8.890625 C 12.125 -10.59375 10.171875 -11.078125 8.8125 -11.078125 C 5.046875 -11.078125 1.5625 -7.609375 1.5625 -4.125 C 1.5625 -1.953125 3.0625 0.25 6.203125 0.25 C 10.453125 0.25 12.421875 -2.234375 12.421875 -2.59375 C 12.421875 -2.734375 12.203125 -3.015625 12 -3.015625 C 11.859375 -3.015625 11.796875 -2.96875 11.59375 -2.765625 C 9.640625 -0.453125 6.703125 -0.453125 6.25 -0.453125 C 4.4375 -0.453125 3.640625 -1.6875 3.640625 -3.234375 C 3.640625 -3.96875 4 -6.703125 5.296875 -8.4375 C 6.25 -9.671875 7.5625 -10.375 8.8125 -10.375 C 9.171875 -10.375 10.375 -10.3125 11 -9.609375 Z M 11 -9.609375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 8.40625 -15.96875 C 8.40625 -16.640625 8.359375 -16.671875 7.65625 -16.671875 C 6.046875 -15.09375 3.765625 -15.0625 2.734375 -15.0625 L 2.734375 -14.15625 C 3.34375 -14.15625 5 -14.15625 6.375 -14.859375 L 6.375 -2.0625 C 6.375 -1.234375 6.375 -0.90625 3.859375 -0.90625 L 2.90625 -0.90625 L 2.90625 0 C 3.359375 -0.03125 6.453125 -0.09375 7.375 -0.09375 C 8.15625 -0.09375 11.328125 -0.03125 11.875 0 L 11.875 -0.90625 L 10.921875 -0.90625 C 8.40625 -0.90625 8.40625 -1.234375 8.40625 -2.0625 Z M 8.40625 -15.96875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-2">
<path style="stroke:none;" d="M 12.6875 -4.5625 L 11.828125 -4.5625 C 11.75 -4.015625 11.5 -2.53125 11.171875 -2.28125 C 10.96875 -2.140625 9.046875 -2.140625 8.6875 -2.140625 L 4.0625 -2.140625 C 6.703125 -4.46875 7.578125 -5.171875 9.09375 -6.359375 C 10.953125 -7.828125 12.6875 -9.390625 12.6875 -11.78125 C 12.6875 -14.8125 10.015625 -16.671875 6.796875 -16.671875 C 3.6875 -16.671875 1.578125 -14.484375 1.578125 -12.171875 C 1.578125 -10.890625 2.65625 -10.765625 2.90625 -10.765625 C 3.515625 -10.765625 4.25 -11.203125 4.25 -12.109375 C 4.25 -12.546875 4.0625 -13.4375 2.765625 -13.4375 C 3.546875 -15.21875 5.25 -15.765625 6.421875 -15.765625 C 8.9375 -15.765625 10.25 -13.8125 10.25 -11.78125 C 10.25 -9.59375 8.6875 -7.859375 7.890625 -6.953125 L 1.828125 -0.984375 C 1.578125 -0.75 1.578125 -0.703125 1.578125 0 L 11.921875 0 Z M 12.6875 -4.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-3">
<path style="stroke:none;" d="M 6.859375 -8.390625 C 8.8125 -8.390625 10.21875 -7.03125 10.21875 -4.34375 C 10.21875 -1.234375 8.40625 -0.296875 6.953125 -0.296875 C 5.953125 -0.296875 3.734375 -0.578125 2.6875 -2.0625 C 3.859375 -2.109375 4.140625 -2.9375 4.140625 -3.46875 C 4.140625 -4.265625 3.546875 -4.84375 2.765625 -4.84375 C 2.0625 -4.84375 1.359375 -4.421875 1.359375 -3.390625 C 1.359375 -1.03125 3.96875 0.5 7 0.5 C 10.5 0.5 12.90625 -1.828125 12.90625 -4.34375 C 12.90625 -6.296875 11.296875 -8.265625 8.53125 -8.84375 C 11.171875 -9.796875 12.125 -11.671875 12.125 -13.203125 C 12.125 -15.1875 9.84375 -16.671875 7.0625 -16.671875 C 4.265625 -16.671875 2.140625 -15.3125 2.140625 -13.3125 C 2.140625 -12.453125 2.6875 -11.984375 3.4375 -11.984375 C 4.21875 -11.984375 4.71875 -12.546875 4.71875 -13.25 C 4.71875 -13.984375 4.21875 -14.515625 3.4375 -14.5625 C 4.3125 -15.671875 6.046875 -15.9375 6.984375 -15.9375 C 8.109375 -15.9375 9.6875 -15.390625 9.6875 -13.203125 C 9.6875 -12.15625 9.34375 -11 8.6875 -10.21875 C 7.859375 -9.265625 7.15625 -9.21875 5.90625 -9.140625 C 5.265625 -9.09375 5.21875 -9.09375 5.09375 -9.0625 C 5.046875 -9.0625 4.84375 -9.015625 4.84375 -8.734375 C 4.84375 -8.390625 5.078125 -8.390625 5.5 -8.390625 Z M 6.859375 -8.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-4">
<path style="stroke:none;" d="M 13.28125 -4.125 L 13.28125 -5.015625 L 10.5 -5.015625 L 10.5 -16.21875 C 10.5 -16.75 10.5 -16.921875 9.9375 -16.921875 C 9.640625 -16.921875 9.546875 -16.921875 9.296875 -16.578125 L 0.984375 -5.015625 L 0.984375 -4.125 L 8.359375 -4.125 L 8.359375 -2.0625 C 8.359375 -1.203125 8.359375 -0.90625 6.328125 -0.90625 L 5.65625 -0.90625 L 5.65625 0 C 6.90625 -0.046875 8.515625 -0.09375 9.421875 -0.09375 C 10.34375 -0.09375 11.953125 -0.046875 13.203125 0 L 13.203125 -0.90625 L 12.53125 -0.90625 C 10.5 -0.90625 10.5 -1.203125 10.5 -2.0625 L 10.5 -4.125 Z M 8.53125 -14.21875 L 8.53125 -5.015625 L 1.90625 -5.015625 Z M 8.53125 -14.21875 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000423611 85.040271 L 420.587446 85.040271 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 4.017109 -0.000145833 L 0.398403 2.181929 L 0.398403 -2.18222 Z M 4.017109 -0.000145833 " transform="matrix(3.6,0,0,-3.6,1640.097,61.6401)"/>
<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000423611 0.000123264 L 420.587446 0.000123264 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 4.017109 0.000123264 L 0.398403 2.182198 L 0.398403 -2.181951 Z M 4.017109 0.000123264 " transform="matrix(3.6,0,0,-3.6,1640.097,367.7856)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="-1.7356" y="73.8992"/>
<use xlink:href="#glyph0-2" x="18.191194" y="73.8992"/>
<use xlink:href="#glyph0-3" x="34.136933" y="73.8992"/>
<use xlink:href="#glyph0-4" x="48.181808" y="73.8992"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="66.100142" y="73.8992"/>
<use xlink:href="#glyph0-3" x="82.045881" y="73.8992"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="1.4504" y="380.2412"/>
<use xlink:href="#glyph0-6" x="27.352363" y="380.2412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="37.330106" y="380.2412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="47.307849" y="380.2412"/>
<use xlink:href="#glyph0-8" x="63.239242" y="380.2412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="82.14746" y="380.2412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="139.3736" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="152.3228" y="31.0412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="177.6164" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="215.474" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="228.4268" y="31.0412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="251.006" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="286.8728" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="139.3736" y="331.8032"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="152.3228" y="337.1816"/>
</g>
<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.040571 -2.835163 L 85.040571 2.834325 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.080719 82.206069 L 170.080719 87.875557 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.120866 82.206069 L 255.120866 87.875557 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill:none;stroke-width:0.79701;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 340.162099 -2.835163 L 340.162099 2.834325 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="418.3232" y="420.4496"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="431.2724" y="425.8316"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="724.4636" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="737.4164" y="31.0412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="1030.604" y="25.6628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="1043.5568" y="31.0412"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="1336.748" y="420.4496"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-4" x="1349.6972" y="425.8316"/>
</g>
<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.874773 2.834325 L 164.791005 79.750557 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3.173754 -0.0000220973 L 0.199059 1.763925 L 0.199826 -0.0000220973 L 0.199826 -1.763202 Z M 3.173754 -0.0000220973 " transform="matrix(2.54556,-2.54556,-2.54556,-2.54556,719.6944,80.9383)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="355.6076" y="223.6808"/>
<use xlink:href="#glyph0-2" x="369.656062" y="223.6808"/>
<use xlink:href="#glyph0-12" x="385.605387" y="223.6808"/>
<use xlink:href="#glyph0-13" x="404.531538" y="223.6808"/>
<use xlink:href="#glyph0-2" x="424.461918" y="223.6808"/>
<use xlink:href="#glyph0-14" x="440.411244" y="223.6808"/>
<use xlink:href="#glyph0-9" x="454.567301" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="480.451332" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="494.3876" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="507.3404" y="229.0628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="523.4288" y="223.6808"/>
</g>
<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 257.956153 82.206069 L 334.8713 5.289837 " transform="matrix(3.6,0,0,-3.6,126.7016,367.7856)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3.173272 -0.000492279 L 0.198576 1.763455 L 0.199343 -0.000492279 L 0.199343 -1.763673 Z M 3.173272 -0.000492279 " transform="matrix(2.54556,2.54556,2.54556,-2.54556,1331.986,348.4874)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="1246.7336" y="223.6808"/>
<use xlink:href="#glyph0-2" x="1260.782062" y="223.6808"/>
<use xlink:href="#glyph0-17" x="1276.731387" y="223.6808"/>
<use xlink:href="#glyph0-6" x="1296.661768" y="223.6808"/>
<use xlink:href="#glyph0-18" x="1306.621578" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="1337.490893" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="1351.4396" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="1364.3924" y="229.0628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="1380.4808" y="223.6808"/>
<use xlink:href="#glyph1-1" x="1396.433712" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="1409.3744" y="229.0628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="1425.4628" y="223.6808"/>
<use xlink:href="#glyph1-1" x="1441.415712" y="223.6808"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="1454.3564" y="229.0628"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="1470.4448" y="223.6808"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -149,9 +149,45 @@ To maintain a consistent notion of time accross the internet, you first need som
The protocol selects sources in order to avoid loops and minimize the round-trip delay to a primary server. As such peers collaborate to automatically reorganize the network to produce the most accurate time, even in the presence of failures in the network.
## Peer Architecture
## NTP Architecture
Now let's see the implementation of one node of the network. The following diagram shows the various stages of the pipeline used to collect time information and mitigate errors caused by network delays and clock inaccuracies. I'll explain each one in a short paragraph and give links to dig deeper.
![NTP architecture flow graph](./NTP_architecture_summary.svg)
### On-Wire Protocol
The first stage consists of getting time estimates from each peer. In the simplest mode of operations, the node polls a peer by sending a request packet timestamped with the transmission time, $t_1$. Upon reception of the request, the peer stores a timestamp $t_2$, processes the message, and sends a response packet containing $t_1$, $t_2$ and the response transmission time $t_3$. The node receives the response at time $t_4$.
![NTP architecture flow graph](./NTP_on_wire.svg)
The node then compute the tuple $(\delta, \theta, \epsilon)$, where:
- $\delta$ is the round-trip delay.
- $\theta$ is the estimated offset of the server clock with respect to the local clock.
- $\varepsilon$ is the dispersion of the sample, i.e. the maximum error due to the frequency tolerances $\varphi_p$ and $\varphi_c$ of the peer's clock and of the client's clock, and the time elapsed since the request was sent.
$\begin{align*}
\delta = (t_4 - t_1) - (t_3 - t_2) \, ,\qquad
\theta = ((t_2 - t_1) + (t_3 - t_4))/2 \, ,\qquad
\varepsilon = \varphi_p \times \varphi_c \times \delta\,.
\end{align*}$
Simple NTP clients that are only synchronized to one server, that don't act as a source for other peers, and that don't need a high precision, can implement only the on-wire protocol and directly use $\theta$ to correct their local clock. However this estimate is vulnerable to network jitter, delay asymetry, clock drift and wander. To get better precision, the samples produced by the on-wire protocol must be processed by a number of mitigation algorithms.
Links: [Analysis and Simulation of the NTP On-Wire Protocols](https://www.eecis.udel.edu/~mills/onwire.html), [RFC5905 - section 8](https://datatracker.ietf.org/doc/html/rfc5905#section-8)
### Clock Filter
### Clock Selection
### Cluster Algorithm
### Clock Discipline
### Clock Adjust
# How long things take: durations
Computer clocks