CARP诞生于OpenBSD,原因是cisco禁止开源社区直接使用HSRP,于是开发了CARP。linux界看到CARP的优势,于是port到linux中,目前版本为ucarp 1.5.2,有一个AirOS的开发者将ucarp移植到AirOS,随后port到OpenWRT,sweet!

如何让linux的ucarp和OpenBSD的CARP相互协作有一定讲究。

首先,linux的ucarp会把master给抢过来,不知道为什么,即便发送了SIGUSR2给ucarp,从master转变为backup后,很快的,又回复为master,因而只能实现以下的应用场景:

OpenWRT为master,OpenBSD为backup,当OpenWRT发生问题时,OpenBSD成为master;当OpenWRT恢复后,竞选自己为master,OpenBSD回到backup状态。

不确定,当OpenWRT恢复后,OpenBSD是否能否退回backup的状态,我觉得可以尝试一下将OpenBSD的advskew和adv设大一些,让openwrt永远处于master状态。

当ucarp处于daemonize状态时,可以通过logread -f | grep ucarp来查看ucarp的log,包括master和backup状态的转变过程。