apache / apache/cloudstack

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

未關閉
#6,715 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
component:kvm component:networking no-issue-activity Severity:Minor status:needs-investigation status:stale
主要語言
Java
星號
3.1k
分支
1.4k
平均合併
6 天 19 小時
30 天內合併 PR
32

描述

##### 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]
```

貢獻指南

開啟貢獻指南

研究方向

從 engine/schema/src/main/java/com/cloud/dc/dao/DataCenterLinkLocalIpAddressDaoImpl.java 的第 52 行附近開始,然後從 server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java 的第 134 行附近追蹤對它的呼叫。重現已設定 control.cidr 的情境,並確認 System VM 位址和 op_dc_link_local_ip_address_alloc 計數使用的是已設定的 CIDR,而不是預設範圍。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
java, mariadb
領域
networking
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
描述清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。