计算机网络基础 — Linux 虚拟路由器
目录
前文列表
《计算机网络基础 — 以太网》
《计算机网络基础 — 物理网络》
《计算机网络基础 — TCP/IP 网络模型》
《计算机网络基础 — Linux 内核网络协议栈》
《计算机网络基础 — 虚拟网络》
《计算机网络基础 — Linux 虚拟交换机》
《计算机网络基础 — Linux 路由器》
前言
本文通过 OpenStack Neutron L3 Agent 的实现原理来描述 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 虚拟路由器的更多相关文章
- 网络虚拟化之linux虚拟网络基础
1 linux虚拟网络基础 1.1 Device 在linux里面devic(设备)与传统网络概念里的物理设备(如交换机.路由器)不同,Linux所说的设备,其背后指的是一个类似于数据结构.内核模块或 ...
- Linux虚拟网络:Docker网络知识之基础篇
我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...
- 计算机网络基础之TCP/IP 协议栈
计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...
- 计算机网络基础之IP地址详解
计算机网络基础之IP地址详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IP地址概述 1>.什么是IP地址 我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采 ...
- 计算机网络基础之OSI参考模型
计算机网络基础之OSI参考模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OSI参考模型 OSI是Open System Interconnection的缩写,意为开放式系 ...
- VRRP(Virtual Router Redundancy Protocol) 虚拟路由器冗余协议简介
因工作中使用Keepalived配置Nginx代理和MySQL代理的高可用,而Keepalived是VRRP协议在linux上的软件实现.因此了解了下VRRP的基础. 1. VRRP技术的引入 随着I ...
- 计算机网络基础(1): 拓扑结构/ OSI模型/ TCP/IP模型
来自mooc <计算机网络基础及应用>南京理工大学. <计算机网络技术>宁波城市职业技术学院.来自网易云课堂<计算机网络工程基础>高骞. chapter1 导论 计 ...
- 计算机网络基础——OSI七层网络模型
计算机网络基础——OSI七层网络模型 OSI的是什么: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称 ...
- Linux 虚拟文件系统概述
转自:http://blog.csdn.net/u011373710/article/details/70198080 文章梗概 本文首先以“尽量不涉及源代码”的方式讨论Linux虚拟文件系统的存在的 ...
- 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1. TCP/IP是 ...
随机推荐
- #裴蜀定理#CF7C Line
题目 给定三个整数\(a,b,c\),问是否能找到两个数\(x,y\)使得\(ax+by+c=0\),没有则输出-1 分析 先把式子转换成\(ax+by=-c\) 然后\(x,y\)是整数当且仅当\( ...
- Jetty的bytebufferpool模块
bytebufferpool模块用于配置Jetty的ByteBuffer对象的对象池. 通过对象池的方式来管理ByteBuffer对象的使用和生命周期,期望降低Jetty进程内存的使用,同时降低JVM ...
- 【直播回顾】OpenHarmony知识赋能第五期第二课——如何成为社区贡献达人
4月28日晚上19点,知识赋能第五期第二节课<如何成为OpenHarmony社区贡献达人?>,在OpenHarmony开发者成长计划社群内成功举行. 本期课程,由华为社区运营专家祝尚元主讲 ...
- 一文告诉你商业智能BI如何推动推动智慧物流发展
随着网络消费的不断发展,推动了物流等相关产业的迅速发展,另外无论是2B业务还是2C业务的生产制造企业,对物流的要求都越来越高,尤其体现在对物流全程透明可视化的需求.商业智能BI平台的引入,大大提高了物 ...
- openGauss内存引擎中的索引
一.索引 索引是一种用于快速查询和检索数据的数据结构.常见的索引结构有: B 树, B+树和 Hash. 索引的作用就相当于目录的作用.打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一 ...
- os.path.splitext
os.path.splitext是Python标准库中的一个函数,它可以将一个文件路径拆分成两部分:文件名和文件扩展名.例如: 点击查看代码 import os file_path='avercrop ...
- 官方直播丨“Hello Ability:从页面跳转开始”周三晚不见不散
12月8日 19:00-20:30,Hello HarmonyOS系列课程的第四期"Hello Ability:从页面跳转开始"线上直播,将带你学习如何快速通过JS page间.A ...
- jenkins 持续集成和交付——pipeline(五)
前言 整理一下pipeline. 正文 介绍 什么是pipeline呢? 根据前面的所得,我们知道,以前都是模板形式,但是如果有些复杂的项目,需要用更加自定义的写法,那么就有了pipeline,也就是 ...
- 使用Skyline 新型UI管理OpenStack技术方案
使用Skyline 新型UI管理OpenStack [摘要] Skyline 是一个经过 UI 和 UE 优化过的 OpenStack 仪表盘,支持 OpenStack Train 及以上版本.Sky ...
- 第五課-Channel Study TCP Listener & Web Service Listener
示例描述: 我们将研究如何获取相当常见的HL7 v2消息并将其映射到自定义Web Service接口服务.在许多实际情况下,当我们要连接到HIE,EMPI,数据仓库或数据存储库时,必须这样做.此用例说 ...