其中bfd的一端是由vpc lrp 发起的,基于ovn nb bfd表维护,而另外一端由于ovs lsp 仅支持监听一个ip,只能做到监听一个vpc的lrp,所以不太合适,只能引入一个openbfdd来实现另一端的bfd的控制包的响应
kube-ovn-cni daemon 镜像中需要引入openbfdd 的两个二进制包,大致编译方式如下
# cat 01-kube-ovn-bfd-base-dockerfile
FROM ubuntu:22.04
ARG ARCH
ARG NO_AVX512=false
ARG DEBIAN_FRONTEND=noninteractive
ENV SRC_DIR='/usr/src'
RUN apt update && apt install build-essential git libnuma-dev autoconf curl \
python3 libmnl-dev libpcap-dev libtool libcap-ng-dev libssl-dev pkg-config \
python3-six libunbound-dev libunwind-dev dh-make fakeroot debhelper dh-python \
flake8 python3-sphinx graphviz groff wget -y
# 上半部分都是直接抄的kube-ovn-base的依赖包
# 主要就依赖一个包 build-essential
ENV BFD="openbfdd-0.5.3"
RUN mkdir /bfd/ && \cd /bfd/ && curl -L http://cdn.dyn.com/OpenBFDD/${BFD}.tar.gz | tar -xz -C .
RUN cd /bfd/${BFD} && ./configure --enable-silent-rules; make; make install
该项目已经很长时间未更新了,但 bfd本身的RFC比较简单,基本功能是具备的。但是kube-ovn的该功能如果依赖该项目,就必须要要有一个稳定的维护上游依赖的方式。以免该项目不存在了,导致bfd二进制无法编译影响该功能的使用。