1. 程式人生 > 其它 >VPP與FRR基於Linux網路協議棧通訊(vrf方式)

VPP與FRR基於Linux網路協議棧通訊(vrf方式)

技術標籤:VNF/SDN# FRR# Network

  VRF (Virtual Routing and Forwarding)使同一系統下擁有多種且獨立的路由表。在LINUX的核心中,從4.3版本已開始支援VRF,若需要較好支援vrf功能,建議Linux作業系統核心版本4.8以上。

  • 操作環境:本文作業系統採用CentOS8,已經安裝iproute2。

如下將建立一個veth對,並將其分別繫結到兩個不同VRF,然後互相ping通IP;

1. VETH打通不同VRF的基礎配置

# 1.建立vrf表red和blue並分別啟動
ip link add blue type vrf table 1
ip link
add red type vrf table 2 ip link set blue up ip link set red up ip link show type vrf # 2.建立veth對red1和blue1,並分別掛載到對應vrf,啟動 ip link add red1 type veth peer name blue1 ip link set red1 vrf red ip link set blue1 vrf blue ip link set blue1 up ip link set red1 up # 3.給veth對分配ip,並ping通彼此 ip addr add 10.10.10.1/24 dev red1 ip addr add 10.10.10.2/24 dev blue1 # 4.通過VRF進行ping操作
ping 10.10.10.1 -I blue1 ping 10.10.10.2 -I red1
# 檢視vrf blue的埠地址和路由
ip link show vrf blue
ip addr show vrf blue
ip route show vrf blue

2. 打通VPP->Linux Kernel netns途徑

2.1. linux Shell建立vrf和一對veth,並進行設定;

#建立並啟動vrf
ip link add vrf-2 type vrf table 2
ip link set vrf-2 up

#建立veth並繫結
ip link add vpp2 type
veth peer name frr2 ip link set frr2 up ip link set vpp2 up ip link set frr2 vrf vrf-2 #新增veth pair的IP ip addr add 10.10.40.1/24 dev frr2 #新增靜態路由到vrf表中,指向vpp中網段 ip route add 10.10.10.0/24 via 10.10.40.2 dev frr2 vrf vrf-2

2.2. vpp中接管VETH網絡卡

#vppctl
#建立vrf表2,並掛載物理口G2
ip table add 2
set int ip table G2 2
set interface state G2 up
set interface ip addr G2 10.10.10.1/24
#接管veth 網絡卡
create host-interface name vpp2
set int ip table host-vpp2 2
set interface state host-vpp2 up
set interface ip addr host-vpp2 10.10.40.2/24
#新增靜態路由,指向vrf 2直連埠下一跳
ip route add 10.10.10.0/24 table 2 via G2

3. 打通FRR->Linux Kernel netns途徑

通過FRR官方文件可知,Frr中模組zebra支援對作業系統底層網路的多個介面、地址、靜態路由、VRF的動態同步;也可通過配置/etc/frr/zebra.conf完成指定VRF,啟動時加-f /etc/frr/zebra.conf;這種情況下,不需要在daemons配置檔案中開啟-n引數。