@@ -9,7 +9,7 @@ segments between trusted peers. It adds a new TCP header option with
99a Message Authentication Code (MAC). MACs are produced from the content
1010of a TCP segment using a hashing function with a password known to both peers.
1111The intent of TCP-AO is to deprecate TCP-MD5 providing better security,
12- key rotation and support for variety of hashing algorithms.
12+ key rotation and support for a variety of hashing algorithms.
1313
14141. Introduction
1515===============
@@ -164,9 +164,9 @@ A: It should not, no action needs to be performed [7.5.2.e]::
164164 is not available, no action is required (RNextKeyID of a received
165165 segment needs to match the MKT’s SendID).
166166
167- Q: How current_key is set and when does it change? It is a user-triggered
168- change, or is it by a request from the remote peer? Is it set by the user
169- explicitly, or by a matching rule?
167+ Q: How is current_key set, and when does it change? Is it a user-triggered
168+ change, or is it triggered by a request from the remote peer? Is it set by the
169+ user explicitly, or by a matching rule?
170170
171171A: current_key is set by RNextKeyID [6.1]::
172172
@@ -233,8 +233,8 @@ always have one current_key [3.3]::
233233
234234Q: Can a non-TCP-AO connection become a TCP-AO-enabled one?
235235
236- A: No: for already established non-TCP-AO connection it would be impossible
237- to switch using TCP-AO as the traffic key generation requires the initial
236+ A: No: for an already established non-TCP-AO connection it would be impossible
237+ to switch to using TCP-AO, as the traffic key generation requires the initial
238238sequence numbers. Paraphrasing, starting using TCP-AO would require
239239re-establishing the TCP connection.
240240
@@ -292,7 +292,7 @@ no transparency is really needed and modern BGP daemons already have
292292
293293Linux provides a set of ``setsockopt()s `` and ``getsockopt()s `` that let
294294userspace manage TCP-AO on a per-socket basis. In order to add/delete MKTs
295- ``TCP_AO_ADD_KEY `` and ``TCP_AO_DEL_KEY `` TCP socket options must be used
295+ ``TCP_AO_ADD_KEY `` and ``TCP_AO_DEL_KEY `` TCP socket options must be used.
296296It is not allowed to add a key on an established non-TCP-AO connection
297297as well as to remove the last key from TCP-AO connection.
298298
@@ -361,7 +361,7 @@ not implemented.
3613614. ``setsockopt() `` vs ``accept() `` race
362362========================================
363363
364- In contrast with TCP-MD5 established connection which has just one key,
364+ In contrast with an established TCP-MD5 connection which has just one key,
365365TCP-AO connections may have many keys, which means that accepted connections
366366on a listen socket may have any amount of keys as well. As copying all those
367367keys on a first properly signed SYN would make the request socket bigger, that
@@ -374,15 +374,15 @@ keys from sockets that were already established, but not yet ``accept()``'ed,
374374hanging in the accept queue.
375375
376376The reverse is valid as well: if userspace adds a new key for a peer on
377- a listener socket, the established sockets in accept queue won't
377+ a listener socket, the established sockets in the accept queue won't
378378have the new keys.
379379
380380At this moment, the resolution for the two races:
381381``setsockopt(TCP_AO_ADD_KEY) `` vs ``accept() ``
382382and ``setsockopt(TCP_AO_DEL_KEY) `` vs ``accept() `` is delegated to userspace.
383383This means that it's expected that userspace would check the MKTs on the socket
384384that was returned by ``accept() `` to verify that any key rotation that
385- happened on listen socket is reflected on the newly established connection.
385+ happened on the listen socket is reflected on the newly established connection.
386386
387387This is a similar "do-nothing" approach to TCP-MD5 from the kernel side and
388388may be changed later by introducing new flags to ``tcp_ao_add ``
0 commit comments