IPv6 - 我的 ISP 如何知道如何将流量路由到我委托的子网?

IPv6 - 我的 ISP 如何知道如何将流量路由到我委托的子网?

我的问题与这个问题有些相关:为了将本机 IPv6 /56 范围路由到多个 VLAN,ISP 需要提供什么那个问题集中在路由器的私有端,而我的问题集中在公共端,并且与 ISP 如何执行其工作有关。

假设我的 ISP 为我提供了一个 IPv6 网络前缀 2001:db8:beef:a700::/56。假设我没有对其进行子网划分 - 我只是将路由器的 LAN 接口放在该子网中。假设我的路由器的 WAN 接口的地址为 2001:db8:face:2000::2/64(通过 DHCP 分配),上游网关为 2001:db8:face:2000::1。当上游网关从公共互联网获得目标地址为 2001:db8:beef:a700::abcd 的数据包时,它必须将该数据包路由到我的路由器 2001:db8:face:2000::2。上游网关如何知道这是它必须做的事?

提出这个问题是基于以下假设:

  • 客户设备没有运行任何动态路由协议。我没见过客户设备运行路由协议,所以我必须假设上游网关通过其他方式了解了 2001:db8:beef:a700::/56 网络。那是什么意思呢?
  • 分发前缀的 DHCPv6 服务器未在上游网关上运行。相反,上游网关正在执行 DHCP 中继。这允许单个 DHCP 服务器为可能与社区或城镇相关联的许多网络提供服务。

我尝试使用一些 Linux 主机和 pfSense 路由器对此进行测试,但无法复制 ISP 提供的功能。我非常欢迎纠正我在学习 IPv6 时可能产生的误解。

答案1

IPv6 通常是通过以下方式提供给消费者网络/客户的DHCPv6 协议ISP 路由器和家庭路由器 (CPE) 之间。PD 代表前缀委派,是常规 DHCPv6 选项的补充。它不仅为 CPE 提供在线地址,还为其提供整个前缀,然后 CPE 可以使用该前缀在其自己的网络中进一步分发。

为了能够将前缀路由到正确的 CPE,ISP 路由器必须记住哪些前缀被委托给哪个 CPE。为此,它会记住 DHCPv6 客户端 ID (DUID)、其链路本地 (fe80:) 地址、委托的前缀和租约时间。然后,它会为每个前缀自动创建一个静态路由,并将 CPE 的链路本地地址作为下一跳,并在租约到期时再次删除该路由。

如果 ISP 路由器本身不是 DHCPv6 服务器(通常不是),则它将充当 DHCPv6 中继的角色。它将把来自 CPE 的 DHCPv6 请求中继到中央 DHCPv6 服务器,该服务器将为每个 CPE 提供前缀。在中继这些消息时,ISP 路由器将侦听这些消息以查看前缀是否被委派,并根据此情况更新其路由。

例如,这里有一些此功能的 Cisco 文档

还有一些交换机会监听 DHCPv6 流量。这样做是为了安全,而不是为了路由。通过查看哪个以太网端口被分配了哪些 IPv6 地址和前缀,交换机可以确保其他端口上的设备无法使用其他 IPv6 地址伪造数据包。这称为轻量级 DHCPv6 中继代理,在RFC 6221

答案2

其工作方式与 IPv4 路由相同。

路由器通过三种不同的方式学习路由:

  1. 直连网络
  2. 静态配置的路由
  3. 通过路由协议动态

如果您未在 CE 和 PE 之间运行路由协议,则 PE 会配置为将发往网络的任何流量路由/56到 CE 路由器。ISP 使用 IGP 或 iBGP/56在其自己的网络内通告前缀,并将其(可能在更大的聚合前缀内)通告到公共互联网。

答案3

在这个特定场景中,上游网关必须“监听”它所中继的 DHCP 数据包。由于这些 DHCP 数据包包含客户路由器的 WAN 地址和委托给该客户的前缀地址,因此上游路由器所需的所有信息都在那里,只需提取即可。提取后,上游网关会将信息添加到其路由表中。这称为“DHCP 监听”。从某种意义上说,DHCP 被用作穷人的路由协议。

Cisco 提供了帮助我找到这个答案的文档。可以在以下位置找到这里。

相关内容