本教程在KVM/QEMU虛擬機(jī)中通過VPP和FRR來實(shí)現(xiàn)不通過Linux內(nèi)核的情況下使虛擬機(jī)有路由轉(zhuǎn)發(fā)的功能鳍征。
virsh可以通過xml和鏡像文件來創(chuàng)建KVM虛擬機(jī)
步驟:
1.開啟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 //開啟網(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. 通過虛擬機(jī)模板xml文件啟動虛擬機(jī)
virsh define vpp1.xml //導(dǎo)入虛擬機(jī)配置
virsh start vpp1 //開啟vpp1
//或者
virsh create vpp1.xml //創(chuàng)建并開啟vpp1
virsh list --all //顯示所有虛擬機(jī)狀態(tài)
virsh destroy vpp1 //銷毀虛擬機(jī)
virsh undefine vpp1 //刪除虛擬機(jī)配置
virsh dumpxml vpp1 //顯示虛擬機(jī)xml配置
若開啟過程中顯示不支持cpu一些特性搁料,就在xml在對應(yīng)的選項(xiàng)上設(shè)置disable
4. 將虛擬機(jī)中的網(wǎng)絡(luò)接口連接到網(wǎng)橋上
此步驟可以在xml文件中修改,或者通過xml開啟虛擬機(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號
sudo vim /etc/vpp/startup.conf
//修改配置文件,dpdk項(xiàng)內(nèi)讓pci號填入播聪,對應(yīng)的寫入名稱朽基,如
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地址要對應(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)開啟哪些服務(wù) /etc/frr/daemons
ospf的默認(rèn)配置文件 /etc/frr/ospfd.conf
重啟frr服務(wù) systemctl restart frr
進(jìn)入frr命令行 sudo vtysh
查看配置:
frr配置信息
7. 測試結(jié)果
啟動ospfd進(jìn)程后计济,兩臺路由器之間正常建立鄰居關(guān)系:
OSPF路由條目同步至內(nèi)核中:
VPP的轉(zhuǎn)發(fā)表中也進(jìn)行了同步茸苇,相關(guān)條目:
使用iperf工具生成流量測試數(shù)據(jù)包的正常轉(zhuǎn)發(fā):
HOST2
HOST1