RSVP认证
RSVP认证原理
RSVP使用RawIP传递协议报文,而RawIP本身不提供安全性,报文容易被篡改,设备容易受到攻击。
RSVP认证通过防止对端节点在没有授权的情况下和本节点建立邻居关系,或防止通过伪造RSVP报文的方式和本节点建立RSVP邻居后对节点进行攻击(比如恶意预留大量带宽),从而提高设备的安全性。
在需要认证的两个节点上,用户需要配置相同的密钥。在发送报文时,节点使用密钥为报文计算得到一个摘要(通过HMAC-MD5或者SHA算法),摘要信息作为报文的一个对象(Integrity对象),随着报文一起发送到对端节点。对端节点使用相同的密钥、相同的算法重新计算报文摘要,然后比较两个摘要是否相同,如果相同则接受,否则丢弃。
为了防止回放攻击,每次报文发送时,分配一个64位的不断递增的序列号,随报文携带到对端。对端收到报文后,除了校验摘要信息外,还要校验序列号是否落在当前允许的窗口范围内。如果序列号低于当前窗口边缘的报文,将被视为回放攻击报文而被丢弃。RSVP认证还引入握手消息,在第一次收到对端报文或者消息失序时,可以通过握手消息重新同步两端的序列号窗口。
当网络发生振荡时,可能会反复创建和删除邻居。每次新建邻居都需要认证握手的流程,从而影响了LSP的建立速度。为了避免振荡时认证导致性能下降,RSVP引入认证生存时间特性。配置RSVP认证生存时间后,即使RSVP邻居之间不存在LSP,也可保持RSVP邻居关系,直到RSVP认证生存时间超时。
RSVP密钥管理
MD5密钥
用户可以在RSVP接口、邻居下,以简单文本或者密文的方式输入密钥,密钥算法为HMAC-MD5。这种密钥管理方式的特点是:
- 每个协议特性都需要配置自己的密钥,密钥不能共享;
- 每个接口、邻居只能配置一个密钥,要更换密钥必须重新配置。
RSVP密钥范围
RSVP密钥可以在接口或者邻居下进行配置:
接口密钥
指用户在接口下配置的密钥。其生效范围是从接口上接收或者发送的报文。
邻居节点密钥
指用户在邻居节点的LSR ID地址下配置的密钥。其生效范围是从邻居节点收到的报文和发送给邻居节点的报文。
邻居地址密钥
指用户在邻居节点的接口地址下配置的密钥。其生效范围是:- 接收方向的报文,其源地址或者下一跳地址与配置地址一致;
- 发送方向的报文,其目的地址或者下一跳地址与配置地址一致。
对于同一个邻居,如果同时配置了接口密钥、邻居节点密钥、邻居地址密钥,则优先级如下:邻居地址密钥>邻居节点密钥>接口密钥。
用户可以根据不同的应用场景选择不同的RSVP密钥:
通常情况下,推荐优先使用邻居节点密钥。当两个节点存在多个链路或者节点时,此方式只需要配置一个密钥,可以极大地简化用户的配置。如果配置了邻居节点密钥,则两个节点间的所有报文都进行认证。
在TE FRR的场景下,如果要在非直连的PLR和MP节点之间进行认证,则推荐使用邻居节点密钥。
如果两个节点直连,并且仅需要在特定链路上进行认证,推荐使用接口密钥。
邻居地址密钥仅适用于两个节点相互不能感知对端LSR ID(例如跨域),或者需要使PLR和MP节点仅在特定接口地址上进行认证的场景。