apache / apache/cloudstack

ControlNetworkGuru does not take into account custom CIDR when assigning System VM link local IP address

Đang mở
#6,715 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
component:kvm component:networking no-issue-activity Severity:Minor status:needs-investigation status:stale
Ngôn ngữ chính
Java
Star
3.1k
Fork
1.4k
Merge trung bình
6 ngày 19 giờ
Pull request đã merge (30 ngày)
32

Mô tả

##### ISSUE TYPE
* Bug Report

##### COMPONENT NAME
~~~
Management, Network, SystemVM
~~~

##### CLOUDSTACK VERSION
~~~
4.16.1
~~~

##### CONFIGURATION
In database:
```
MariaDB [cloud]> select name,value from configuration where name = 'control.cidr';
+--------------+------------------+
| name | value |
+--------------+------------------+
| control.cidr | 169.254.240.0/20 |
+--------------+------------------+
MariaDB [cloud]> select name,value from configuration where name = 'control.gateway';
+-----------------+---------------+
| name | value |
+-----------------+---------------+
| control.gateway | 169.254.240.1 |
+-----------------+---------------+
MariaDB [cloud]> select count(*) from op_dc_link_local_ip_address_alloc;
+----------+
| count(*) |
+----------+
| 65533 |
+----------+
```
On agent:
```
root@hv-04-02-21:~# grep control.cidr /etc/cloudstack/agent/agent.properties
control.cidr=169.254.240.0/20
```

##### SUMMARY
When having set a `control.cidr` different from the norm (`168.254.0.0/16`) and the database table `op_dc_link_local_ip_address_alloc` is already populated with all the addresses in the default CIDR, then allocating an IP to a System VM does not take into account the requested CIDR, thus allocating an IP address in the wrong range.

https://github.com/apache/cloudstack/blob/main/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterLinkLocalIpAddressDaoImpl.java#L52 should take this into account. This function is called in https://github.com/apache/cloudstack/blob/main/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java#L134

##### STEPS TO REPRODUCE
- Install new management server
- After kickstart, disable the zone to prevent any system vm deploys
- In mysql database: `select count(*) from op_dc_link_local_ip_address_alloc;`, it would return `65533`
- Connect agents
- Configure `control.cidr` on the manager and agents, and `control.gateway` on the manager, ie:
```
control.cidr=169.254.240.0/20
control.gateway=169.254.240.1
```
- Enable the zone, check the system vm link local address

##### EXPECTED RESULTS
- The System VMs should receive an IP address in the configured CIDR.
- Additional expected: In mysql database: `select count(*) from op_dc_link_local_ip_address_alloc;`, it should return `4093`

##### ACTUAL RESULTS
- System VMs receive an IP address in the default `169.254.0.0/16` range
```
2022-09-07 22:45:35,338 DEBUG [o.a.c.e.o.NetworkOrchestrator] (Work-Job-Executor-3:ctx-b1c76634 job-149/job-150 ctx-224681ec) (logid:32608415) Network id=201 is already implemented
2022-09-07 22:45:35,524 DEBUG [c.c.n.g.ControlNetworkGuru] (Work-Job-Executor-3:ctx-b1c76634 job-149/job-150 ctx-224681ec) (logid:32608415) Reserved NIC for v-18-VM [ipv4:169.254.167.69 netmask:255.255.240.0 gateway:169.254.240.1]
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với engine/schema/src/main/java/com/cloud/dc/dao/DataCenterLinkLocalIpAddressDaoImpl.java ở khoảng dòng 52, sau đó lần theo lệnh gọi của nó từ server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java ở khoảng dòng 134. Tái hiện kịch bản control.cidr đã được cấu hình và xác minh rằng các địa chỉ System VM cùng số lượng op_dc_link_local_ip_address_alloc sử dụng CIDR đã cấu hình thay vì dải mặc định.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java, mariadb
Lĩnh vực
networking
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.