Linux 虚拟化网络技术 — 虚拟网络协议栈
目录
文章目录
- 目录
- 前言
- Neutron L3 agent 概述
- L3 agent的配置
- 虚拟路由器实现原理
- 总结
前言
本文通过 OpenStack Neutron L3 Agent 实现的 Linux 虚拟路由器来描述 Linux 的虚拟网络协议栈。
Neutron L3 agent 概述
Neutron L3 agent 服务,运行在 OpenStack 的网络节点上,实现了 3 层路由和 NAT 功能。利用 Linux Network Namespaces,可以创建多个具有重合 IP 地址段的虚拟路由器,每个虚拟路由器都具有自己的 namespace。
L3 agent的配置
Step 1. 在网络节点上,编辑 l3_agent.ini。
其中 [DEFAULT] section 的 interface_driver 是最重要的配置选项,用来指定 mechanism driver。Neutron 支持三种 interface_driver,如下:
- 使用 openvswitch:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
- 使用 linuxbridge:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
- 使用 null:
interface_driver = neutron.agent.linux.interface.NullDriver
Step 2. 启动 L3 agent service 进程,并检查是否运行正常。
Step 3. 创建虚拟路由器。
创建虚拟路由器,并添加网络接口
重复操作,添加两个 VLAN 网络到虚拟路由器,并在两个网络中分别创建一台虚拟机,拓扑效果如下:
验证虚拟机 test1 与 test2 的连通性。
虚拟机 test1:IP 192.168.1.10, 网段192.168.1.0/24, 网关192.168.1.1
虚拟机 test2:IP 192.168.2.12, 网段192.168.2.0/24, 网关192.168.2.1
虚拟路由器实现原理
创建虚拟路由器,并添加网络接口时,L3 agent 会在网络节点的 br-int 创建一个 Port qr-xxx,同时创建一个名为 qrouter-<\router-id> 的 Network namespace,并在 namespace 里,将网段 192.168.1.0/24 的网关(默认是 x.x.x.1)配置在 qr-xxx 网卡上。
查看 br-int 上的 Port qr-xxx
查看 qrouter-<\router-id> namespace
查看 namespace 中的网关配置信息
查看 qrouter-<\router-id> namespace 路由
查看虚拟机内部路由信息
NOTE:
- Port qr-xxx 的命名使用的是 gateway_port 的 ID 的前 11 位
- 使用 namespace 是为了解决网络地址重叠的问题,从而达到虚拟的效果。
- 该网段的所有虚拟机上在启动时,都下发一条指向网关(默认是 x.x.x.1)的路由。
总结
可见,OpenStack Neutron L3 Agent 的虚拟路由器依旧是通过 Network namespace 来实现的,因为 Linux 本身就具有路由功能,再结合操作系统虚拟化技术,自然就可以虚拟出多个路由器了。例如:
Linux 虚拟化网络技术 — 虚拟网络协议栈相关推荐
- 理解 neutron(15):Neutron Linux Bridge + VLAN/VXLAN 虚拟网络
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- 用m ip衡量的计算机性能指标是,ip网络技术要求网络性能参数与指标.pdf.pdf
YU 中华人 民共和 国通信行业标准 YD/T 1171- 2001 IP网络技术要求 - 网络性能参数与指标 IPNetworkSpecification - NetworkPerformanceP ...
- 在Linux系统中构建虚拟网络
什么是NAT 如何设置NAT 在虚拟机设置中,输入ifconfig查看网络配置,会出现没有此命令的提示,需要yum安装net-tools工具包. VMware15中点击虚拟机设置,把网络连接选择为NA ...
- nginx启动后访问的是nginx主页而不是自己的页面、使用以前虚拟机配置的linux系统并把虚拟网络修改回来,但是链接超时的问题解决办法
问题一: 背景: 今天在学习学成在线的时候发现,启动完nginx.exe,访问http://manage.xuecheng.com.却是nginx主页而不是自己的登录界面 原因: 开启了多个Nginx ...
- 【愚公系列】2021年12月 网络工程-虚拟网络
文章目录 前言 一.虚拟网络NPV(逆着读) 前言 NPV(逆着读)一般指虚拟专用网络. 虚拟专用网络(NPV(逆着读))的功能是:在公用网络上建立专用网络,进行加密通讯.在企业网络中有广泛应用.NP ...
- 管理网络与业务网络分离+虚拟网络部署
一.部署环境: 1.ESXI6.7主机1台 2.创建有多台vm server,并已安装好系统 3.工业环境的物理链路已经搭建好 4.一张光口网卡(4端口万兆) 本文主要解决:管理网络与业务网络分离:让 ...
- 计算机及网络技术发展趋势,网络技术发展对计算机技术的影响
当前形势下,网络技术的不断发展对计算机和信息技术发展产生重要影响,计算机和信息技术借助网络技术发展实现更高标准的发展,对人们的生活方式和社会发展都产生重要影响.为了弄清网络技术发展对计算机及信息技术的 ...
- Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)
目录 文章目录 目录 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun) tap/tun 作为用户空间与内核空间的数据传输通道 tap/tun 与内核网络协议栈的数据传输 虚拟二层网卡(Tap)与虚拟 ...
- Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)
目录 文章目录 目录 虚拟网线(Veth-pair) 虚拟网线(Veth-pair) Veth-pair 不是一个设备,而是一对设备,作为虚拟网线用于连接两个虚拟网络设备.veth pair 是根据数 ...
最新文章
- 用JavaScript创建神经网络的有趣教程,一定要让你知道!
- Virtex-6中的GTX模块、GTH模块
- Maven父子工程配置文件详解
- mysql读取表最后10条数据
- PowerShell批量修改邮箱配额和已删除保留期
- SignalR第一节-在5分钟内完成通信连接和消息发送
- css布局 右固定,CSS左侧固定右侧自适应的五种布局方法
- 项目:NMEA2000的数据格式解析
- 由B+树看MySQL索引结构
- Linux系统环境下安装配置JDK
- 神经网络高维互信息计算Python实现(MINE)
- 多摩川读写EEPROM以及并口实现
- Ubuntu16.04安装百度网盘亲测可用
- java窗口连接_JAVA简单的注册窗口(连接数据库)
- DXGI中的flip显示模型
- 大华海康等摄像头、录像机通过GB28181注册LiveGBS国标流媒体实现网页直播的注册流程解析...
- go,go语言编辑器安装,git安装,即vscode三个插件的安装
- 使用OpenCV和Python构建自己的车辆检测模型
- 742. Closest Leaf in a Binary Tree的思路
- 计算机系统原理,实验三:bomblab,汇编详解
热门文章
- iOS 9应用开发教程之iOS 9新特性
- python的算术运算符不包括_没有算术运算符的A + B,Python与C ++
- excel 两组数据交点_初识Python 数据可视化
- Java中普通字符串转json_java普通对象和json字符串的互转
- 脑科学与脑电基础知识汇总
- 关卡设计快速入门_7. 自己来!
- oracle rac vip什么用,oracle 10g,11g RAC中vip作用
- matlab在绘图区加格栅,实验二(2) MATLAB绘图
- mysql存储过程加多个创建表_mysql 存储过程创建多个表
- 48万!百度推出全球最便宜RoboTaxi,赚钱能力2倍于人类网约车