计算机网络基础 — 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是 ...
随机推荐
- 探索基于WebRTC的有感录屏技术开发流程
第一章:技术原理 WebRTC(Web Real-Time Communication)是一种开放源代码项目,旨在通过浏览器之间的点对点通信实现实时音视频通信.WebRTC利用JavaScript A ...
- Response下载文件
Response下载文件的主要步骤有七个: 1.要获取下载文件的路径 String realPath = "F:\\JavaWeb\\WorkSpace\\JavaWeb-Servlet\\ ...
- CondeseNetV2:清华与华为出品,保持特征的新鲜是特征复用的关键 | CVPR 2021
论文提出SFR模块,直接重新激活一组浅层特征来提升其在后续层的复用效率,而且整个重激活模式可端到端学习.由于重激活的稀疏性,额外引入的计算量非常小.从实验结果来看,基于SFR模块提出的CondeseN ...
- C语言 03 VSCode开发
安装好 C 语言的开发环境后,就需要创建项目进行开发了. 使用 IDE(集成开发环境)进行开发了. C 语言的开发工具很多,现在主流的有 Clion.Visual Studio.VSCode. 这里以 ...
- Python将依赖包导出到requirements.txt文件
代码 # 查询环境中已经安装的库 pip list # 将所有依赖库导出到 requirements.txt 文件 pip freeze > requirements.txt
- The First 寒假集训の小总结
转眼间十五天的寒假集训已经结束,也学习到了许多新知识,dp,线段树,单调栈和单调队列......,假期过得还是很有意义的,虽然我的两次考试成绩不尽人意(只能怪我自己没有好好理解知识点还有好好做题),但 ...
- button submit你以为你阻止了默认事件?
前言 先解决掉一个误区: 很多人写button的时候,就这样写: <button><botton> 你认为就是默认的submit的时候,这时候就可能出问题了. 当然之所以你没有 ...
- 分布式文件存储-FastDFS
1.1 FastDFS简介 1.1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了 ...
- springboot+thymeleaf+mybatis实现甘特图(代码非常详细)
首先我们要明白:这个甘特图需要哪些动态数据. (1)需要:ID,tName,number,计划开始时间,开始时间,计划结束时间,结束时间,项目负责人,参与人,知情人ID,计划时长(可以计算得出的,不必 ...
- 通过ORPO技术微调 llama3大模型(Fine-tune Llama 3 with ORPO)
1f45bd1e8577af66a05f5e3fadb0b29 通过ORPO对llama进行微调 前言 ORPO是一种新颖的微调技术,它将传统的监督微调和偏好对齐阶段整合到一个过程中.这减少了训练所需 ...