libvirtError:XML 错误:预期单播 mac 地址,发现多播

2023-12-15

我正在通过 ansible 设置 KVM 自动化,并且我有一个虚拟机一直给我这个错误:

libvirtError:XML 错误:预期的单播 mac 地址,发现多播 '53:54:00:b4:ad:81'

我不认为这是一个可靠的问题,因为其他几个虚拟机工作得很好。我尝试过另一台主机,甚至将使用的 MAC 更改为以前可用的主机和从未使用过的主机。我只能说这不是多播 MAC 地址,我不确定问题是什么或下一步该看哪里。任何建议,将不胜感激。

这是我用来构建 VM 的 XML - 基于构建所有其他 VM 的相同模板(MAC 地址、名称等除外)。

<domain type='kvm'>
  <name>te01</name>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='1' threads='1'/>
  </cpu>
  <memory unit='GiB'>8</memory>
  <os>
    <type arch='x86_64'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='writeback' discard='ignore' io='threads'/>
      <source file='/images/te01.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <source bridge='br0'/>
      <mac address='53:54:00:b4:ad:81'/>
      <guest dev='ens3'/>
    </interface>
    <interface type='bridge'>
      <source bridge='br502'/>
      <guest dev='ens5'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/1'/>
      <target type='isa-serial' port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <graphics type='vnc' autoport='yes'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
  </devices>
</domain>

我可以说这不是多播 mac 地址...

但它确实是一个多播地址,尽管不是 IPv4 多播到 MAC 多播的意义上(01-00-5E-00-00-00通过01-00-5E-7F-FF-FF)、IPv6 组播到 MAC 组播(33-33-00-00-00-00通过33-33-FF-FF-FF-FF),或任何预定义的 IEEE 多播地址,例如STP、LLDP 等。

MAC 地址的最高有效字节中有两个标志。最高有效字节的最低有效位是 I/G(个体/组)标志。设置该位意味着该地址用作组的目标地址。最高有效字节的第二最低有效位是 U/L(通用/本地)标志。设置该位表示该MAC地址是本地创建的; BIA(烧入地址)的 U/L 位清零。

任何设置了 I/G 位的 MAC 地址都是多播地址,广播 MAC 地址是一种特殊情况(ff-ff-ff-ff-ff-ff)。这意味着 MAC 地址最高有效字节中的任何奇数都是多播地址。

组播地址只能是目的地址,不能是分配给接口的地址。

您的 MAC 地址,53:54:00:b4:ad:81,同时设置了 I/G 位(表示它是多播(目标组)地址)和 U/L 位设置(表示它是本地定义的 MAC 地址)。

最高有效字节是 0x53 (01010011),因此两个标志都被设置。

0   1   0   1   0   0   1   1
                        ^   ^
                        |   |
                       U/L I/G

您创建的任何 MAC 地址(不包括您拥有的任何 OUI)都应该设置 U/L 位以表明您已经创建了它们,并且它们不会踩到其他公司拥有的 OUI(不幸的是,很多组成自己的 MAC 地址的人不会这样做,但确实没有任何方法可以强制执行)。接口地址必须清除 I/G 位,以防止它们成为多播(组目标)地址。


人们经常问为什么标志是最高有效字节的两个最低有效位。这是因为在以太网上发送位、字节和帧字段的顺序。首先发送字节的最低有效位,首先发送帧的最高有效字节,帧的第一个字段是目的地址。另外,请记住,以太网最初位于共享介质上(就像现在的 Wi-Fi 一样),因此 LAN 上的所有主机都会看到所有帧。主机接收到的第一位告诉主机看到该帧的目的地址是个人地址还是组地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libvirtError:XML 错误:预期单播 mac 地址,发现多播 的相关文章

随机推荐

  • 矢量或地图,该使用哪一个?

    我听很多人说如果容器中期望的元素数量比较少 最好使用std vector代替std map即使您仅使用容器进行查找而不进行迭代 这背后的真正原因是什么 显然 查找性能std map不能比std vector 尽管它可能以纳秒 微秒为单位有所
  • 为什么这里使用const静态变量odr?

    考虑以下代码 class Test public static const int VALUE 100 std tuple
  • 当我知道它正在椭圆化时,StaticLayout getEllipsisCount 返回 0?

    因此 我有一个扩展的 TextView 我试图从中创建一个 StaticLayout 以便我可以通过调用 getEllipsisCount 来检测文本是否超出屏幕 因此 我在 TextView 中构建静态布局 如下所示 layout new
  • 第一个单词仅出现在表单文本框中

    是的 我在除夕夜编码 不管怎样 我有一个我认为很奇怪的问题 奇怪到需要帮助 下面的代码可以工作 有点 第 6 行 row sitename 上的 echo 输出像 Huntington Park 这样的全名 但是 表单内的第一个文本框仅显示
  • 四月更新后 ParallaxView 无法使用

    Windows 10 4 月更新后 ParallaxViev Control 中的视差效果不起作用 取自微软文档的示例
  • 如何将列表中的数据帧写入单个 csv 文件

    我有一个包含 15 个数据框的列表 它们看起来像这样 gt head final data 1 DateTime Unemployed Persons csv 147 2013 03 01 2320 58 148 2013 04 01 23
  • $%,.2f代表什么?

    我目前正在阅读 Deitel 关于 Java 的书 并在他们的一个程序中发现了这段代码 public String toString return String format s s n s 2f s 2f commission emplo
  • 如何查看DLL函数?

    我有一个 DLL 文件 如何查看该 DLL 中的函数 对于本机代码 最好使用依赖步行者 也可以使用dumpbinVisual Studio 附带的命令行实用程序
  • 获取 Django 中 IntegerChoices 字段的值?

    假设我有以下 Django 3 2 代码 class AType models IntegerChoices ZERO 0 Zero ONE 1 One TWO 2 Two class A models Model a type model
  • 如何找到点击的item对应的model的Id?

    如何知道我点击的item的Id 我的代码如下 function ipl mvc view openings view ipl mvc view view base extend template assets t plmt companie
  • Codeception seeInDatabase() 对我不起作用

    我真的被这个验收测试困住了 我的代码是这样的 I gt click Submit I gt see Client Added I gt seeInDatabase customers afm gt 111 一切都会过去 直到 seeInDa
  • 什么是好的唯一 PC 标识符?

    我一直在查看代码本教程 我发现它使用My Computer Name保存不应在计算机之间漫游的设置 然而 用户完全有可能拥有两台同名的电脑 例如 如果他们想在每台 PC 上使用相同的用户名 那么他们很可能最终会拥有两台名为 Username
  • 如何在 PHP 中加密/解密整数

    有没有办法对整数 或字符串 进行2路加密 解密 请注意 我不是在寻找编码 我需要这样的东西 加密 100 gt 24694 加密 101 gt 9564jh4 或 45216 或 gvhjdfT 或其他 解密 24694 gt 100 我不
  • rollapply 中的对齐和偏移

    我正在尝试计算移动窗口的一些统计数据 并在动物园包中使用 rollapply 我的问题是如何让 rollapply 将该函数应用于前 n 个观察值 而不是当前观察值和前 n 1 个观察值 就像align right 似乎所做的那样 requ
  • 具有来自多列数据帧的值计数的单列

    我想用 pandas 对多列的频率进行求和 列的数量可以在 2 15 列之间变化 以下是仅 3 列的示例 code1 code2 code3 27 5 56 534 27 78 27 312 55 89 312 27 我希望得到以下结果 c
  • C++0x 中未调用移动构造函数

    请在下面找到我的代码 我曾经调用移动构造函数 代码受其他站点启发 并让我知道它有什么问题 我正在使用 GCC 4 5 3 include
  • 递归字符串反转函数

    出于好奇编写了一个递归字符串反转函数 但是那里的 XOR 有点问题 这个函数的重点是不使用迭代器 这就是它是递归函数的原因 这不是作业 只是好奇心 private static char ReverseNL char arr int ind
  • IOError:[Errno 24]打开的文件太多:

    我有一个巨大的文件 我正在将其写入大约 450 个文件 我收到错误为too many files open 我在网上搜索并找到了一些解决方案 但没有帮助 import resource resource setrlimit resource
  • 在 ie8 及以下版本上使用 twitter bootstrap 的 Respond.js

    我正在使用 twitter bootstrap 实现一个响应式网站 但在 iexplorer 8 及更低版本上无法使用媒体查询 我为 try respond js 创建了一个简单的示例 但媒体查询在 iexplorer 7 8 上仍然无法工
  • libvirtError:XML 错误:预期单播 mac 地址,发现多播

    我正在通过 ansible 设置 KVM 自动化 并且我有一个虚拟机一直给我这个错误 libvirtError XML 错误 预期的单播 mac 地址 发现多播 53 54 00 b4 ad 81 我不认为这是一个可靠的问题 因为其他几个虚