일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ceph
- Arch
- Kubernetes
- HTML
- k8s
- i3
- grafana-loki
- repository
- archlinux
- ceph-ansible
- golang
- Octavia
- Docker
- libvirt
- OpenStack
- cephadm
- Kubeflow
- port open
- pacman
- cloud-init
- KVM
- nfs-provisioner
- kolla-ansible
- awx
- ubuntu
- kolla
- Ansible
- yum
- Linux
- terraform
Archives
- Today
- Total
YJWANG
Linux Bridge 환경에서의 Openstack Network Deep Dive (Provider) 본문
60.Cloud/60.OpenStack
Linux Bridge 환경에서의 Openstack Network Deep Dive (Provider)
왕영주 2021. 3. 12. 13:36Linux Bridge 환경에서의 Openstack Network Deep Dive (Provider)
Linux Bridge에서는 OVS와 다르게 qbr
qvo
qvb
같은 interface가 없어 이해하기 편하다.
이전 포스팅과 마찬가지로 Instance
에서 외부까지 통신되는 flow를 설명하고자한다. (과정은 Libvirt와 동일하다)
- Openstack Instance와 Libvirt VM 매핑
우선 Openstack에는 하나의 VM이 실행되고 있고 해당 VM은 UUID로 보아 'instance-00000001' 임을 알 수 있다.
root@yjwang0-stack-01:~/kolla-ansible/tools# openstack server list
+--------------------------------------+-------+--------+--------------------+--------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------+--------+--------------------+--------+---------+
| 490bf095-dbbc-44bc-85e7-5dd0bfa3ec4a | demo1 | ACTIVE | public1=10.0.2.168 | cirros | m1.tiny |
+--------------------------------------+-------+--------+--------------------+--------+---------+
VM info in Libvirtd
root@yjwang0-stack-02:~# virsh list
Id Name State
-----------------------------------
1 instance-00000001 running
root@yjwang0-stack-02:~# virsh dominfo instance-00000001
Id: 1
Name: instance-00000001
UUID: 490bf095-dbbc-44bc-85e7-5dd0bfa3ec4a
OS Type: hvm
State: running
CPU(s): 1
CPU time: 110.6s
Max memory: 524288 KiB
Used memory: 524288 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
- VM에 할당된 Interface 정보 확인
VM에 할당된 Interface가 물리적으로는 tap7d82ed52-06
이며 이 Interface는 brqc407e30d-45
bridge에 물려있음을 알 수 있다.
root@yjwang0-stack-02:~# virsh domiflist instance-00000001
Interface Type Source Model MAC
------------------------------------------------------------------------
tap7d82ed52-06 bridge brqc407e30d-45 virtio fa:16:3e:14:80:7f
하면 brqc407e30d-45
bridge는 어떤 port로 traffic을 전달하는지 확인해야한다.
brqc407e30d-45
bridge에 매핑된 port list 확인
아래 명령어에서 볼 수 있듯이 ens2로 traffic이 통신됨을 알 수 있다.
root@yjwang0-stack-02:~# brctl show
bridge name bridge id STP enabled interfaces
brqc407e30d-45 8000.cafe0200c021 no ens2
tap7d82ed52-06
여기서 ens2 Interface는 Openstack 내에서 provider network에 할당된 interface이다.
우선 현재 provider network은 public1
이라는 명칭을 갖고있고 해당 network의 interface는 physnet1이다.
root@yjwang0-stack-01:~/kolla-ansible/tools# openstack network show public1
...
| mtu | 1500 |
| name | public1 |
...
| provider:network_type | flat |
| provider:physical_network | physnet1
그리고 physnet1은 아래와 같이 ens2에 매핑돼있다.
root@yjwang0-stack-01:~/kolla-ansible/tools# docker exec neutron_linuxbridge_agent cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[agent]
[linux_bridge]
physical_interface_mappings = physnet1:ens2
...
즉 지금까지 과정을 그림으로 살펴보면 아래와 같다.
반응형