为什么 EUI64 中的 U/L 位反转?

网络工程 ipv6 协议理论
2021-07-23 15:24:41

这个反演是双射的,所以我不知道它有什么用。

4个回答

RFC 4291提供了有关如何创建 EUI64 地址的说明:

Links or Nodes with IEEE 802 48-bit MACs

[EUI64] defines a method to create an IEEE EUI-64 identifier from an
IEEE 48-bit MAC identifier.  This is to insert two octets, with
hexadecimal values of 0xFF and 0xFE (see the Note at the end of
appendix), in the middle of the 48-bit MAC (between the company_id
and vendor-supplied id).  An example is the 48-bit IEEE MAC with
Global scope:

|0              1|1              3|3              4|
|0              5|6              1|2              7|
+----------------+----------------+----------------+
|cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+

where "c" is the bits of the assigned company_id, "0" is the value of
the universal/local bit to indicate Global scope, "g" is
individual/group bit, and "m" is the bits of the manufacturer-
selected extension identifier.  The interface identifier would be of
the form:

|0              1|1              3|3              4|4              6|
|0              5|6              1|2              7|8              3|
+----------------+----------------+----------------+----------------+
|cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+----------------+

RFC 2373提供了“为什么”背后翻转的第7位的:

The motivation for inverting the "u" bit when forming the interface
identifier is to make it easy for system administrators to hand
configure local scope identifiers when hardware tokens are not
available.  This is expected to be case for serial links, tunnel end-
points, etc.  The alternative would have been for these to be of the
form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler ::1,
::2, etc.

但这有点口水。所以简单来说...... 在MAC地址体系结构中,第7位表示MAC地址是通用的还是本地分配的。值 0 表示地址是通用管理的。例如,当 IANA 为 NIC 卡供应商分配组织唯一标识符 (OUI) 时,第 7 位将为 0,表示 OUI 是普遍分配的。如果用户手动更改他们的 MAC 地址,第 7 位将设置为 1,表示以太网地址是本地管理的

PacketLife 上还有一些关于此的更多信息

它是做分类手工分配的地址,例如prefix::1prefix::2等地方。

假设您在 prefix 中设置网络2001:db8:dead:beef::/64对于大多数节点,您可能会使用基于 MAC 的 IP。但是,对于某些节点,例如 DNS 服务器、目录服务器等,您需要使用比基于 MAC 的地址更易于键入和记忆的地址。对于 DNS 服务器,您可能想要使用

2001:db8:dead:beef::53

请注意,U/L 位设置为 0 — 由于该位的反转,这将主机 ID 分类为本地。

简而言之,因为在以太网MAC中,第七位定义为local/#global,而在IPv6中,64位接口ID中的第七位定义为global/#local。

EUI 64 意味着只有一个 MAC 地址(48 位)

..:FF:FE:.. 

在它中间填满所有的64位。因此名称为 EUI-64。确切地说,您的意思是修改后的 EUI-64,这意味着 EUI-64 与第 7 位的位翻转相结合。

第 7 位已更改,因为在 MAC 地址中,此第 7 位指示本地 (0) 和全局 (1) 之间的差异。在这个意义上的本地是,例如,串行接口。

由于所有这些都是为了自动创建一个公共地址,该地址都将位于一个全局接口上(在 MAC 术语中),这将导致第 7 位为 1。他们改变了这一点,所以你不必写下孔地址,你可以使用“::”的速记符号

示例(来自 RFC 2373):

...
The alternative would have been for these to be of the
form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler ::1,
::2, etc.

简短回答 即使每个 MAC 地址都以 IPv6 地址结束,该地址在 IPv6 地址的某个位置具有大于 0 的十六进制数。这使得在那里有零成为可能,以便您可以使用速记符号。