Back in the day, I made good experiences with a crontab tearing down the connection volutarily:
0 5 * * * [ $(ifstatus wan | jsonfilter -e '@.uptime') -lt 3650 ] || (ubus call network.interface.henet down;ubus call network.interface.wan down;sleep 1;ubus call network.interface.wan up;sleep 15;ubus call network.interface.henet up)
(this can be simplified and most of the sleeps are probably not necessary either).