最近在写一个生成各种网络封包的功能模块,其中写到VRRP时,网上搜到的关于VRRP帧格式的描述,好多都是错的,最后在清默网络http://www.023wg.com/kkxpz/78.html搜到的才是正确的。
当然你也可以直接参考RFC文档
VRRPv2 参见RFC3768,https://tools.ietf.org/html/rfc3768
VRRPv3 参见RFC5798,https://tools.ietf.org/html/rfc5798
以下关于VRRP帧格式的描述摘自http://www.023wg.com/kkxpz/78.html:
目前,VRRP协议包括两个版本:
VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
基于不同的网络类型,VRRP可以分为VRRP for IPv4和VRRP for IPv6(简称VRRP6)。
VRRP for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。
各字段的含义如下表1所示:
表1 VRRP报文字段含义 | |||
报文字段 | 含义 |
| |
VRRPv2 | VRRPv3 |
| |
Version | VRRP协议版本号,取值为2。 | VRRP协议版本号,取值为3。 |
|
Type | VRRP通告报文的类型,取值为1,表示Advertisement。 | VRRP通告报文的类型,取值为1,表示Advertisement。 |
|
Virtual Rtr ID(VRID) | 虚拟路由器ID,取值范围是1~255。 | 虚拟路由器ID,取值范围是1~255。 |
|
Priority | Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。 | Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。 |
|
Count IP Addrs/Count IPvX Addr | 备份组中虚拟IPv4地址的个数。 | 备份组中虚拟IPv4或虚拟IPv6地址的个数。 |
|
Auth Type | VRRP报文的认证类型。协议中指定了3种类型:
| - |
|
Adver Int/Max Adver Int | VRRP通告报文的发送时间间隔,单位是秒,缺省值为1秒。 | VRRP通告报文的发送时间间隔,单位是厘秒,缺省值为100厘秒(1秒)。 |
|
Checksum | 16位校验和,用于检测VRRP报文中的数据破坏情况。 | 16位校验和,用于检测VRRP报文中的数据破坏情况。 |
|
IP Address/IPvX Address(es) | VRRP备份组的虚拟IPv4地址,所包含的地址数定义在Count IP Addrs字段。 | VRRP备份组的虚拟IPv4地址或者虚拟IPv6地址,所包含的地址数定义在Count IPvX Addrs字段。 |
|
Authentication Data | VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。 |
| |
rsvd | VRRP报文的保留字段,必须设置为0。 |
|
由报文结构可以看出,VRRPv2和VRRPv3的主要区别为:
1、支持的网络类型不同:
VRRPv3适用于IPv4和IPv6两种网络,而VRRPv2仅适用于IPv4网络。
2、认证功能不同:
VRRPv3不支持认证功能,而VRRPv2支持认证功能。
VRRPv2版本保留报文的认证字段,是为了兼容早期版本(RFC2338),VRRP认证并不能提高安全性。
发送通告报文的时间间隔的单位不同。VRRPv3支持的是厘秒级,而VRRPv2支持的是秒级。