目录

文章目录

  • 目录
  • 前言
  • 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,如下:

  1. 使用 openvswitch:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
  1. 使用 linuxbridge:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
  1. 使用 null:
interface_driver = neutron.agent.linux.interface.NullDriver

Step 2. 启动 L3 agent service 进程,并检查是否运行正常。

Step 3. 创建虚拟路由器。

  1. 创建虚拟路由器,并添加网络接口

  2. 重复操作,添加两个 VLAN 网络到虚拟路由器,并在两个网络中分别创建一台虚拟机,拓扑效果如下:

  3. 验证虚拟机 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:

  1. Port qr-xxx 的命名使用的是 gateway_port 的 ID 的前 11 位
  2. 使用 namespace 是为了解决网络地址重叠的问题,从而达到虚拟的效果。
  3. 该网段的所有虚拟机上在启动时,都下发一条指向网关(默认是 x.x.x.1)的路由。

总结

可见,OpenStack Neutron L3 Agent 的虚拟路由器依旧是通过 Network namespace 来实现的,因为 Linux 本身就具有路由功能,再结合操作系统虚拟化技术,自然就可以虚拟出多个路由器了。例如:

Linux 虚拟化网络技术 — 虚拟网络协议栈相关推荐

  1. 理解 neutron(15):Neutron Linux Bridge + VLAN/VXLAN 虚拟网络

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  2. 用m ip衡量的计算机性能指标是,ip网络技术要求网络性能参数与指标.pdf.pdf

    YU 中华人 民共和 国通信行业标准 YD/T 1171- 2001 IP网络技术要求 - 网络性能参数与指标 IPNetworkSpecification - NetworkPerformanceP ...

  3. 在Linux系统中构建虚拟网络

    什么是NAT 如何设置NAT 在虚拟机设置中,输入ifconfig查看网络配置,会出现没有此命令的提示,需要yum安装net-tools工具包. VMware15中点击虚拟机设置,把网络连接选择为NA ...

  4. nginx启动后访问的是nginx主页而不是自己的页面、使用以前虚拟机配置的linux系统并把虚拟网络修改回来,但是链接超时的问题解决办法

    问题一: 背景: 今天在学习学成在线的时候发现,启动完nginx.exe,访问http://manage.xuecheng.com.却是nginx主页而不是自己的登录界面 原因: 开启了多个Nginx ...

  5. 【愚公系列】2021年12月 网络工程-虚拟网络

    文章目录 前言 一.虚拟网络NPV(逆着读) 前言 NPV(逆着读)一般指虚拟专用网络. 虚拟专用网络(NPV(逆着读))的功能是:在公用网络上建立专用网络,进行加密通讯.在企业网络中有广泛应用.NP ...

  6. 管理网络与业务网络分离+虚拟网络部署

    一.部署环境: 1.ESXI6.7主机1台 2.创建有多台vm server,并已安装好系统 3.工业环境的物理链路已经搭建好 4.一张光口网卡(4端口万兆) 本文主要解决:管理网络与业务网络分离:让 ...

  7. 计算机及网络技术发展趋势,网络技术发展对计算机技术的影响

    当前形势下,网络技术的不断发展对计算机和信息技术发展产生重要影响,计算机和信息技术借助网络技术发展实现更高标准的发展,对人们的生活方式和社会发展都产生重要影响.为了弄清网络技术发展对计算机及信息技术的 ...

  8. Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)

    目录 文章目录 目录 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun) tap/tun 作为用户空间与内核空间的数据传输通道 tap/tun 与内核网络协议栈的数据传输 虚拟二层网卡(Tap)与虚拟 ...

  9. Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)

    目录 文章目录 目录 虚拟网线(Veth-pair) 虚拟网线(Veth-pair) Veth-pair 不是一个设备,而是一对设备,作为虚拟网线用于连接两个虚拟网络设备.veth pair 是根据数 ...

最新文章

  1. 用JavaScript创建神经网络的有趣教程,一定要让你知道!
  2. Virtex-6中的GTX模块、GTH模块
  3. Maven父子工程配置文件详解
  4. mysql读取表最后10条数据
  5. PowerShell批量修改邮箱配额和已删除保留期
  6. SignalR第一节-在5分钟内完成通信连接和消息发送
  7. css布局 右固定,CSS左侧固定右侧自适应的五种布局方法
  8. 项目:NMEA2000的数据格式解析
  9. 由B+树看MySQL索引结构
  10. Linux系统环境下安装配置JDK
  11. 神经网络高维互信息计算Python实现(MINE)
  12. 多摩川读写EEPROM以及并口实现
  13. Ubuntu16.04安装百度网盘亲测可用
  14. java窗口连接_JAVA简单的注册窗口(连接数据库)
  15. DXGI中的flip显示模型
  16. 大华海康等摄像头、录像机通过GB28181注册LiveGBS国标流媒体实现网页直播的注册流程解析...
  17. go,go语言编辑器安装,git安装,即vscode三个插件的安装
  18. 使用OpenCV和Python构建自己的车辆检测模型
  19. 742. Closest Leaf in a Binary Tree的思路
  20. 计算机系统原理,实验三:bomblab,汇编详解

热门文章

  1. iOS 9应用开发教程之iOS 9新特性
  2. python的算术运算符不包括_没有算术运算符的A + B,Python与C ++
  3. excel 两组数据交点_初识Python 数据可视化
  4. Java中普通字符串转json_java普通对象和json字符串的互转
  5. 脑科学与脑电基础知识汇总
  6. 关卡设计快速入门_7. 自己来!
  7. oracle rac vip什么用,oracle 10g,11g RAC中vip作用
  8. matlab在绘图区加格栅,实验二(2) MATLAB绘图
  9. mysql存储过程加多个创建表_mysql 存储过程创建多个表
  10. 48万!百度推出全球最便宜RoboTaxi,赚钱能力2倍于人类网约车