VPP接管虛擬機(jī)網(wǎng)卡實(shí)現(xiàn)OSPF路由

本教程在KVM/QEMU虛擬機(jī)中通過(guò)VPP和FRR來(lái)實(shí)現(xiàn)不通過(guò)Linux內(nèi)核的情況下使虛擬機(jī)有路由轉(zhuǎn)發(fā)的功能。
virsh可以通過(guò)xml和鏡像文件來(lái)創(chuàng)建KVM虛擬機(jī)
步驟:

1.開(kāi)啟libvirtd服務(wù)

sudo systemctl restart libvirtd

2. 創(chuàng)建網(wǎng)橋

sudo brctl addr br0   //添加網(wǎng)橋
sudo brctl addif bro interface1  //在網(wǎng)橋上增加接口
sudo ifconfig br0 up  //開(kāi)啟網(wǎng)橋  注意這一步別忘了
sudo brctl delif br0 interface1  //刪除接口
sudo ifconfig br0 down  //關(guān)閉網(wǎng)橋
sudo brctl delbr br0  //刪除網(wǎng)橋
brctl show  //顯示網(wǎng)橋信息

3. 通過(guò)虛擬機(jī)模板xml文件啟動(dòng)虛擬機(jī)

virsh define vpp1.xml  //導(dǎo)入虛擬機(jī)配置
virsh start vpp1  //開(kāi)啟vpp1
//或者
virsh create vpp1.xml  //創(chuàng)建并開(kāi)啟vpp1

virsh list --all   //顯示所有虛擬機(jī)狀態(tài)
virsh destroy vpp1  //銷毀虛擬機(jī)
virsh undefine vpp1  //刪除虛擬機(jī)配置
virsh dumpxml vpp1   //顯示虛擬機(jī)xml配置

若開(kāi)啟過(guò)程中顯示不支持cpu一些特性,就在xml在對(duì)應(yīng)的選項(xiàng)上設(shè)置disable

4. 將虛擬機(jī)中的網(wǎng)絡(luò)接口連接到網(wǎng)橋上

此步驟可以在xml文件中修改,或者通過(guò)xml開(kāi)啟虛擬機(jī)之后在virt-manager中可視化修改,將網(wǎng)絡(luò)接口連到創(chuàng)建的網(wǎng)橋上。
本人建的拓?fù)浣Y(jié)構(gòu):


拓?fù)鋱D

5. 配置VPP接管網(wǎng)卡

以VPP1為例

lspci -D   //查看兩個(gè)虛擬網(wǎng)絡(luò)接口的pci號(hào)
sudo vim /etc/vpp/startup.conf   
//修改配置文件,dpdk項(xiàng)內(nèi)讓pci號(hào)填入,對(duì)應(yīng)的寫(xiě)入名稱,如
dpdk{
        dev 0000:00:09.0 {
            name vpp0
        }
        dev 0000:00:0a.0 {
            name vpp1
        }
}


systemctl restart vpp   //重啟VPP服務(wù)
vppctl show pci   //查看pci設(shè)備情況看是否已加入
vppctl show interface addr   //查看接口狀態(tài)

sudo vppctl //進(jìn)入vpp命令行操作

create loopback interface 
set interface state loop0 up
set interface state vpp0 up
set interface state vpp1 up
set interface ip address loop0 192.168.122.39/32
set interface ip address vpp0 192.168.101.2/24
set interface ip address vpp1 192.168.103.2/24
enable tap-inject
show tap-inject
quit   //退出

sudo ip addr add 192.168.101.2/24 dev vpp0
sudo ip addr add 192.168.103.2/24 dev vpp1
sudo ip link set dev vpp0 up
sudo ip link set dev vpp1 up

ifconfig   //查看是否配置成功

注意虛擬網(wǎng)絡(luò)接口,網(wǎng)橋,ip地址,mac地址要對(duì)應(yīng)正確,配置成功之后vpp可以接管網(wǎng)絡(luò)接口,VPP1的vpp1口ping VPP2的vpp1口可以ping通。

6. 配置frr

首先看一下vpp是否配置成功,ifconfig

網(wǎng)絡(luò)接口信息

接著配置frr
frr的默認(rèn)配置文件 /etc/frr/frr.conf
frr默認(rèn)開(kāi)啟哪些服務(wù) /etc/frr/daemons
ospf的默認(rèn)配置文件 /etc/frr/ospfd.conf
重啟frr服務(wù) systemctl restart frr
進(jìn)入frr命令行 sudo vtysh
查看配置:
frr配置信息

7. 測(cè)試結(jié)果

啟動(dòng)ospfd進(jìn)程后,兩臺(tái)路由器之間正常建立鄰居關(guān)系:



OSPF路由條目同步至內(nèi)核中:



VPP的轉(zhuǎn)發(fā)表中也進(jìn)行了同步,相關(guān)條目:

使用iperf工具生成流量測(cè)試數(shù)據(jù)包的正常轉(zhuǎn)發(fā):


HOST2

HOST1
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容