mka: Fix lowest acceptable Packet Number (LPN) calculation and use
The purpose of the Lowest Acceptable PN (lpn) parameters in the MACsec SAK Use parameter set is to enforce delay protection. Per IEEE Std 802.1X-2010, Clause 9, "Each SecY uses MKA to communicate the lowest PN used for transmission with the SAK within the last two seconds, allowing receivers to bound transmission delays." When encoding the SAK Use parameter set the KaY should set llpn and olpn to the lowest PN transmitted by the latest SAK and oldest SAK (if active) within the last two seconds. Because MKPDUs are transmitted every 2 seconds (MKA_HELLO_TIME), the solution implemented here calculates lpn based on the txsc->next_pn read during the previous MKPDU transmit. Upon receiving and decoding a SAK Use parameter set with delay protection enabled, the KaY will update the SecY's lpn if the delay protect lpn is greater than the SecY's current lpn (which is a product of last PN received and replay protection and window size). Signed-off-by: Michael Siedzik <msiedzik@extremenetworks.com>
This commit is contained in:
parent
d9a0a72229
commit
2fc0675683
8 changed files with 144 additions and 27 deletions
|
@ -150,6 +150,7 @@ struct ieee802_1x_kay_ctx {
|
|||
int (*get_receive_lowest_pn)(void *ctx, struct receive_sa *sa);
|
||||
int (*get_transmit_next_pn)(void *ctx, struct transmit_sa *sa);
|
||||
int (*set_transmit_next_pn)(void *ctx, struct transmit_sa *sa);
|
||||
int (*set_receive_lowest_pn)(void *ctx, struct receive_sa *sa);
|
||||
int (*create_receive_sc)(void *ctx, struct receive_sc *sc,
|
||||
enum validate_frames vf,
|
||||
enum confidentiality_offset co);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue