我正在尝试在现有的 VPN PPP 软件中实现 IPv6,但很难理解RFC 5072部分的含义。即,第 4.1 节。
假设 1:PPP 接口没有 MAC 地址。
VPN 服务器软件本身为每个连接创建一个虚拟以太网接口,具有自己的虚拟 MAC 地址等。该软件还允许桥接真实接口。软件本身在虚拟接口和桥接真实接口之间进行所有 L2 交换,充当 L2 交换机。假设这个结构:
假设 2:对于 MAC 00:00:00:00:00:01 上收到的任何 IPv6 数据包,我们将通过 PPP 链路 1 将数据包保持不变(剥离以太网报头)转发给客户端 1,反之亦然所有客户端 1通过 PPP 链路 1 接收的 IPv6 数据包将原封不动地发送到内部虚拟以太网交换机,原始 MAC 为 00:00:00:00:00:01(创建以太网报头 ofc)。由于假设 1,我们需要这样做,因此虚拟接口 1 代替客户端 1 来处理所有 L2 以太网帧。
现在在 RFC 中说:
接口标识符在 PPP 链路中必须是唯一的;即,在协商完成后,将为 PPP 链路的两端选择不同的接口标识符值。接口标识符也可以在更广泛的范围内是唯一的。
这是我似乎不清楚的部分:“将为 PPP 链路的末端选择不同的接口标识符值”。
那么,我们应该在这里为 Client 1 选择两个接口标识符吗?一个用于客户端 1 客户端,第二个用于虚拟接口 1 服务器端?在我看来,应该根据虚拟接口 1 的 MAC 地址只选择一个接口标识符,因为,
PPP 链路的本地端使用协商的接口标识符为 PPP 接口自动配置 IPv6 链路本地单播地址。
因为虚拟接口 1 代替客户端 1 进行所有 L2 处理,所以在我看来,用于配置链路本地 IPv6 地址的接口标识符实际上应该基于虚拟接口 1 的 MAC 地址,因此生成的链接本地地址将根据RFC 4291的第 2.5.6 节生成
而且我们真的不需要为虚拟接口 1 本身协商的第二个接口标识符,因为我们没有为虚拟接口 1 本身分配任何 IPv6 地址,它只使用客户端 1 生成的地址,因为所有 IPv6 数据包无论如何都要转发...
我的另一种可能的解释是,客户端 1 端和服务器端(虚拟接口 1 端)都应该选择两个不同的接口标识符,但在协商过程中将丢弃其中一个,协商后只接受一个.
那么,“PPP 链路两端的不同接口标识符值”究竟意味着什么?