summaryrefslogtreecommitdiff
path: root/taler/implementation.tex
diff options
context:
space:
mode:
Diffstat (limited to 'taler/implementation.tex')
-rw-r--r--taler/implementation.tex37
1 files changed, 15 insertions, 22 deletions
diff --git a/taler/implementation.tex b/taler/implementation.tex
index d6647f5..bbc1eb8 100644
--- a/taler/implementation.tex
+++ b/taler/implementation.tex
@@ -2061,22 +2061,16 @@ already terminated before it reaches the exchange service, and exchanges can be
operated securely even without TLS.
The comparison between no additional delay and a \SI{100}{\milli\second} delay
-is shown in Table~\ref{table:latency}. As TCP Fast Open was enabled on both \texttt{gv}
-and \texttt{firefly}
-
-In the incremental request to
-\texttt{/keys} (which only returns keys added after the requested date), the
-artificial latency reveals that the request is completed with one round trip.
-The request is already sent in the first TCP packet from the client to the
-exchange, as TCP Fast Open \cite{rfc7413} is enabled on both \texttt{gv} and
-\texttt{firefly} and supported by GNU Taler. Without TCP Fast Open, we would
-observe an extra round trip for the SYN and SYN/ACK packages without any
-payload.
-
-All other requests require an extra roundtrip, adding up to an additional delay
-of about \SI{400}{\milli\second}. This can be explained by the larger size of
-their response body. Due to TCP congestion control, the exchage does not send
-the complete response at once, but waits for an ACK from the client.
+is shown in Table~\ref{table:latency}. TCP Fast Open was enabled on both
+\texttt{gv} and \texttt{firefly}. Since for all operations except
+\texttt{/refresh/reveal}, both request and response fit into one TCP segment,
+the operations complete within one round-trip time. This explains the
+additional delay of $\approx \SI{200}{\milli\second}$ when the artificial
+delay is introduced. Without TCP Fast Open, we would observe an extra round
+trip for the SYN and SYN/ACK packages without any payload. The
+\texttt{/refresh/reveal} operation takes an extra roundtrip due to the
+relatively large size of the response, which contains the signatures for
+multiple coins.
Figure~\ref{fig:latencies} shows the latency for the exchange's HTTP endpoints
in relation to different network delays. As expected, the additional delay
@@ -2097,12 +2091,11 @@ be linear, due to timeouts raised by clients.
{\specialcell[c]{Request size\\(\si{\kilo\byte})}} &
{\specialcell{Response size\\(\si{\kilo\byte})}} \\
\midrule
- %\texttt{/keys} (incremental) & 0.52 & 200.55 \\
- \texttt{/keys} & 1.01 & 201.042 & 0.012 & 3.72 \\
- \texttt{/deposit} & 28.94 & 434.212 & 3.97 & 0.34 \\
- \texttt{/reserve/withdraw} & 29.38 & 432.491 & 2.95 & 0.72 \\
- \texttt{/refresh/melt} & 37.0143 & 419.80 & 3.55 & 0.35 \\
- \texttt{/refresh/reveal} & 82.87 & 483.33 & 3.84 & 2.11 \\
+ \texttt{/keys} & 1.14 & 201.25 & 0.14 & 1.67 \\
+ \texttt{/reserve/withdraw} & 22.68 & 222.46 & 0.71 & 0.73 \\
+ \texttt{/deposit} & 22.36 & 223.22 & 1.40 & 0.34 \\
+ \texttt{/refresh/melt} & 20.71 & 223.9 & 1.06 & 0.35 \\
+ \texttt{/refresh/reveal} & 63.64 & 466.30 & 1.67 & 2.11 \\
\bottomrule
\end{tabular}
\caption{Effects of \SI{100}{\milli\second} symmetric network delay on total latency.}