VPP 单台开多 保姆级教程 连接两个 FD.io VPP 实例
我这里使用的版本是22.10.0
照着VPP官网一步一步操作最后失败了,VPP官网可能默认一些内容你已经掌握了,但实际不然~
MEMIF是一种非常高性能的直接存储器接口类型,可以 在 FD.io VPP 实例之间使用。它使用文件套接字作为控制通道 以设置共享内存。(官网)
上面那句话总结一下就是:单台多开VPP,用memif (memory interface内存接口)来实现。
围绕这个拓扑结构实现配置:
环境:
OS:ubuntu server 20.04
VPP:22.10.0
一、复制、修改配置文件
复制两份VPP的配置文件,安装版配置文件默认位置/etc/vpp/statrup.conf
执行:cp /etc/vpp/startup.conf /etc/vpp/startup2.conf
vim修改配置文件startup2.conf中的unix项中的key cli-listen 值为 /run/vpp/cli2.sock保存并退出如下图
二、启动 (务必以手动形式启动)
关掉systemctl的服务方式 关闭命令:systemctl stop vpp
启动VPP1:vpp -c /etc/vpp/startup.conf # -c 指定配置文件启动
连接VPP1 vppctl -s /run/vpp/cli.sock
启动VPP2:vpp -c /etc/vpp/startup2.conf # -c 指定配置文件启动
连接VPP2:vppctl -s /run/vpp/cli2.sock
以这样的方式启动两个vpp,我们连接进入vpp后就会出现,上图所示输入命令的提示符一样这样(绿色等待输入那个位置)这样不够清晰,我们还可以修改一下配置文件让我们更清晰的知道那个是vpp1哪个是vpp2。( VPP配置文件官网)
修改配置文件startup.conf、startup2.conf中的unix项中的key cli-prompt 值分别为vpp1、vpp2保存并退出如下图
kill vpp进程 命令:ps aux | grep vpp把查出来的VPP进程统统kill
重新启动会看到如下图所示
默认的 vppctl = vppctl -s /run/vpp/cli.sock
三、配置
最终实现的效果是ubuntu 主机 可以和VPP1互通,VPP1和VPP2可以互通,参考图1的拓扑
ubuntu 主机和vpp1之间通过veth(虚拟网卡)互通
ubuntu 主机 配置
ip link add vpphost type veth peer name vppout
ip link set vpphost up
ip link set vppout up
ip address add 192.168.168.1/24 dev vpphostveth虚拟网卡相当于网线一头连接主机一头连接vpp 形成一条通路
创建-->开启网卡-->设置主机端网卡地址
VPP1 配置
配置与ubuntu互通
vppctl
vpp1 create host-interface name vppout
vpp1 set interface ip address host-vppout 192.168.168.2/24
vpp1 set interface state host-vppout up
vpp1 show interface addr
host-vppout (up):
L3 192.168.168.2/24
local0 (dn):ubuntu主机已经可以可vpp互通了
创建vpp1端与ubuntu主机通信的网卡
创建-->开启网卡-->设置主机端网卡地址
可以看到创建的是名字为vppout的网卡但开启和设置的网卡名都是host-vppout,因为创建后这是自动生成的,设置的网卡IP地址一定要和ubuntu主机网卡设置的同一个网段。
设置与VPP2的配置
vpp1 create interface memif id 0 master
vpp1 set int ip address memif0/0 10.0.0.1/24
vpp1 set interface state memif0/0 up
vpp1 show int addr
host-vppout (up):
L3 192.168.168.2/24
local0 (dn):
memif0/0 (up):
L3 10.0.0.1/24
VPP2 配置
vppctl -s /run/vpp/cli2.sock
vpp2 create interface memi id 0 slave
set int ip address memif0/0 10.0.0.2/24
set int state memif0/0 up
vpp2 show int addr
local0 (dn):
memif0/0 (up):
L3 10.0.0.2/24
现在VPP1和VPP2已经可以互相通信了
以上配置实现了第一张图的拓扑结构:ubuntu主机、vpp1互通,vpp1、vpp2互通。
CSDN-Ada助手: 恭喜您写了第三篇博客!标题看起来很有吸引力,对于那些在访问GitHub时遇到困难的人来说,这篇博客一定非常有用。我很高兴看到您对主题的深入研究,并提供了一键生成Host文件工具来解决这个问题。不过,我想提供一个谦虚的建议:在未来的创作中,您可以结合自己的经验和示例,更深入地探讨一下GitHub访问问题的根本原因,以及可能的解决方案。这样的内容会更加丰富和有深度,为读者提供更多的帮助。期待您的下一篇博客! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3
CSDN-Ada助手: 非常棒的博客!你的教程非常详细,让我这样的初学者也能够轻松跟着操作。希望你能够继续写下去,分享更多关于VPP的知识和技巧。除此之外,还有一些扩展知识和技能可以学习,如VPP与Docker的集成、VPP在多台服务器上的部署等。期待你的下一篇博客! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2
CSDN-Ada助手: 推荐 Go 技能树:https://edu.csdn.net/skill/go?utm_source=AI_act_go