
내가 찾은 해결책 중 어느 것도 효과가 없는 것 같았고 며칠 동안 이것을 조사해 왔기 때문에 포기하고 도움을 요청하기로 결정했습니다.
저는 nmcli를 사용하여 ovs-bridge라는 개방형 vswitch를 만들었습니다. 포트와 인터페이스를 생성하고 eno1을 연결했습니다. 모든 것이 잘 작동합니다. VLAN 태그가 있는 포트를 만들었고 새 인터페이스는 해당 VLAN의 dhcp 서버에서 IP 주소를 가져옵니다.
다음 단계는 VLAN 태그 여부에 관계없이 vswitch 포트에 연결하려면 kvm 게스트 프로그램이 필요하다는 것입니다. 내 인생에서 나는 그것을 작동시킬 수 없습니다.
ovs-vsctl은 다음을 보여줍니다:
4511e03b-87b5-44a2-a16f-dac79b43cbf7
Bridge ovs-bridge
Port ovs-p99
Interface eno1
type: system
Port ovs-p1
tag: 50
Interface ovs-int-p1
type: internal
Port ovs-p0
Interface ovs-int-p0
type: internal
nmcli 콘솔에 다음이 표시됩니다.
NAME UUID TYPE DEVICE
ovs-int-p0 c6d2243f-8a96-4647-887a-d2cdfb8ae878 ovs-interface ovs-int-p0
virbr0 ad67349b-3e2b-45ed-b66d-b148c7d01d4d bridge virbr0
ovs-bridge dbb6960e-ac13-4452-b4c2-44782bbc54ac ovs-bridge ovs-bridge
ovs-int-p1 1af100a3-b08d-41bd-ab1f-a5c3059807f3 ovs-interface ovs-int-p1
ovs-int-p99 3d64f617-4c9b-47a0-b48c-44380ea7d2bb ethernet eno1
ovs-p0 6e3a5415-8756-4069-a788-d661da078d46 ovs-port ovs-p0
ovs-p1-vlan50 62f4cfe7-0317-4ca8-96f9-d37ac771b308 ovs-port ovs-p1
ovs-p99 0a9c184c-0246-4cb1-a5bf-7c7b186b40e5 ovs-port ovs-p99
wired-dhcp 760eda5d-f092-3ee0-998d-d923ff8bf5ca ethernet --
nmcli 개발은 다음을 보여줍니다:
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected (externally) virbr0
ovs-int-p0 ovs-interface connected ovs-int-p0
eno1 ethernet connected ovs-int-p99
ovs-bridge ovs-bridge connected ovs-bridge
ovs-int-p1 ovs-interface connected ovs-int-p1
ovs-p0 ovs-port connected ovs-p0
ovs-p1 ovs-port connected ovs-p1-vlan50
ovs-p99 ovs-port connected ovs-p99
lo loopback unmanaged --
virbr0-nic tun unmanaged --
libvirt에서 사용할 네트워크를 정의했습니다.
<network>
<name>ovs-network</name>
<uuid>03026f19-5615-4d23-a8f0-adf1064a796a</uuid>
<forward mode='bridge'/>
<bridge name='ovs-bridge'/>
<virtualport type='openvswitch'/>
<portgroup name='untagged' default='yes'>
</portgroup>
<portgroup name='vlan50'>
<vlan>
<tag id='50'/>
</vlan>
</portgroup>
<portgroup name='vlan60'>
<vlan>
<tag id='60'/>
</vlan>
</portgroup>
<portgroup name='vlan-all'>
<vlan trunk='yes'>
<tag id='2'/>
<tag id='3'/>
</vlan>
</portgroup>
</network>
virt-manager에서 게스트를 편집하면 네트워크가 표시됩니다. 게스트 네트워크를 다음과 같이 정의합니다.
<interface type="network">
<mac address="52:54:00:a6:dc:48"/>
<source network="ovs-network" portgroup="untagged"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</interface>
게스트를 시작하면 다음이 반환됩니다: virsh start fed32srv:
error: Failed to start domain fed32srv
error: Cannot get interface MTU on 'ovs-bridge': No such device
그래서 나는 많은 정보를 확인했습니다.
- https://serverfault.com/questions/680635/mtu-on-open-vswitch-bridge-port#81789
- https://docs.openvswitch.org/en/latest/faq/issues/
- https://stackoverflow.com/questions/48784098/issue-with-kvm-libvirt-and-linux-namespaces
수백만 개의 가이드가 있지만 대부분은 작동하지도 않습니다. 따라서 그 중 상당수가 오래되었다고 가정합니다.
어쨌든 인터페이스와 내부 인터페이스 모두에서 MTU 크기를 설정해 보았지만 도움이 되지 않았습니다. 모든 것을 다시 시작했고 재부팅도 했습니다.
질문으로 돌아가서, vlan 태그 지정 여부에 관계없이(ovs 포트에서) kvm 게스트를 vswitch 포트에 연결하도록 설정하려면 어떻게 해야 합니까?
더 많은 정보가 필요한지 물어보십시오.
도와주셔서 감사합니다!
답변1
브리지에 관리 포트 및 인터페이스가 없습니다.
4511e03b-87b5-44a2-a16f-dac79b43cbf7
Bridge ovs-bridge
...
Port ovs-bridge
Interface ovs-bridge
type: system
...
ovs-vsctl을 사용하여 ovs 브리지를 생성하면 기본적으로 둘 다 존재하게 됩니다. NM으로 생성할 때는 그렇지 않습니다. 명시적으로 생성해야 합니다.
sudo nmcli con add type ovs-port conn.interface ovs-bridge master ovs-bridge con-name ovs-px
sudo nmcli con add type ovs-interface slave-type ovs-port conn.interface ovs-bridge master ovs-px con-name ovs-int-px
답변2
따라서 nmcli 설정을 사용할 때 문제가 재현 가능합니다. ovs-vsctl 명령을 사용하여 브리지와 인터페이스를 설정할 때 모든 것이 예상대로 작동합니다.
기본 설정을 완료한 후 다음을 수행합니다. https://blog.scottlowe.org/2012/11/12/libvirt-ovs-integration-revisited/
모두 제일 좋다.