关于UDP超时

经过测试使用,发现做UDP集群时有个问题:

当某个REALSERVER已经失效后,已经发过数据到这个RS的UDP链路,这个链路(源IP和源端口不变)后面的数据还是发往这个失效的RS,必须要等一段时间才能重定向其它可用的RS。

LVS为什么不在RS失效时,立即把指向此RS的链路拆除?而是非得等它超时?

请大神们指教!

Forums:

从源码上看,应该是这一段代码。
它没有去把相关联的链路拆掉。
/*
* Unlink a destination from the given service
*/
static void __ip_vs_unlink_dest(struct ip_vs_service *svc,
struct ip_vs_dest *dest,
int svcupd)
{
dest->flags &= ~IP_VS_DEST_F_AVAILABLE;

/*
* Remove it from the d-linked destination list.
*/
list_del(&dest->n_list);
svc->num_dests--;
if (svcupd) {
/*
* Call the update_service function of its scheduler
*/
svc->scheduler->update_service(svc);
}
}