Here is my findings and solution. Hope this also solves your problem.
When the network hangs, I can see that IPv4 address is lost using "ip a" on the console. I then check "journalctl -b -e" for logging and obviously it's a consequence of dhcp4 failure.
Dec 19 22:54:10 pbsbc01h3 dhclient[4720]: DHCPREQUEST for 192.168.2.190 on eth0 to 192.168.2.55 port 67 (xid=0xb07e1eb)
Dec 19 22:54:10 pbsbc01h3 dhclient[4720]: DHCPACK of 192.168.2.190 from 192.168.2.55 (xid=0xebe1070b)
Dec 19 22:54:10 pbsbc01h3 NetworkManager[5189]: <error> [1766156050.2239] dhcp4 (eth0): error -111 dispatching events
Dec 19 22:54:10 pbsbc01h3 NetworkManager[5189]: <info> [1766156050.2243] dhcp4 (eth0): state changed bound -> fail
Dec 19 22:54:10 pbsbc01h3 NetworkManager[5189]: <info> [1766156050.2248] device (eth0): DHCPv4: trying to acquire a new lease within 90 seconds
Dec 19 22:54:10 pbsbc01h3 dhclient[4720]: bound to 192.168.2.190 -- renewal in 288 seconds.
With the help from ChatGPT, I modify "/etc/dhcp/dhclient.conf" with the following and the problem is gone.
timeout 5;
retry 60;
reboot 10;