kube-ovn支持基于bfd的ecmp的静态路由

254 阅读1分钟

其中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

github.com/dyninc/Open…

该项目已经很长时间未更新了,但 bfd本身的RFC比较简单,基本功能是具备的。但是kube-ovn的该功能如果依赖该项目,就必须要要有一个稳定的维护上游依赖的方式。以免该项目不存在了,导致bfd二进制无法编译影响该功能的使用。