尽管 IPv4 和 IPv6 ACL 非常相似,但它们之间有三个主要差异。

第一个差异是在将 IPv6 ACL 应用于接口时使用的命令不同。 IPv4 使用 ip access-group 命令将 IPv4 ACL 应用到 IPv4 接口。 IPv6 使用 ipv6 traffic-filter 命令对 IPv6 接口执行相同功能。

不同于 IPv4 ACL,IPv6 ACL 不使用通配符掩码。 相反,它使用前缀长度来表示应匹配的 IPv6 源地址或目的地址数量。

最后一个主要差异就是每个 IPv6 访问列表的末尾都必须添加两个隐式 permit 语句。 每个 IPv4 标准 ACL 或扩展 ACL 的末尾都是一个隐式 deny anydeny any any。 IPv6 在每个 IPv6 ACL 的末尾包含一条类似的 deny ipv6 any any 语句。 不同的是,默认情况下,IPv6 还包含另外两条隐式语句:

这两条语句允许路由器参与与 IPv4 ARP 等效的 IPv6 对应物。 回想一下,在 IPv4 中使用 ARP 将第 3 层地址解析为第 2 层 MAC 地址。 如图所示,IPv6 使用 ICMP 邻居发现 (ND) 消息来完成同一任务。 ND 使用邻居请求 (NS) 和邻居通告 (NA) 消息。

需要将 ND 消息封装到 IPv6 数据包中并要求使用 IPv6 网络层的服务,而 IPv4 的 ARP 并不使用第 3 层。 由于 IPv6 使用第 3 层服务来发现邻居,因此 IPv6 ACL 需要隐式允许在接口上发送和接收 ND 数据包。 具体而言,同时允许邻居发现 - 邻居通告 ND (nd-na) 和邻居发现 - 邻居请求 (nd-ns) 消息。