当前位置:首页 > 技术 > 正文内容

OpenStack 网络基础架构详解

访客 技术 2026年6月25日 1

网络服务核心机制

OpenStack 的网络管理组件(代号 neutron)提供一套完整的 API 接口,用于在云环境中配置和管理虚拟网络拓扑。该服务负责创建与维护包括虚拟网络、子网、路由器及防火墙在内的各类网络资源,并支持与计算服务(nova)的深度集成,实现虚拟机实例的网络接入。

Neutron 架构由主控服务 neutron-server、持久化数据库以及可扩展的代理模块构成。这些代理通过插件形式对接底层网络设施,如 Linux 内核网络栈、物理交换设备或 SDN 控制器,从而实现灵活的网络功能拓展。

关键网络协议与技术

以太网与 MAC 地址

以太网是基于 IEEE 802.3 标准的数据链路层协议,广泛应用于有线网络通信。每个网络接口卡(NIC)拥有唯一的 48 位媒体访问控制(MAC)地址,格式如 fa:16:3e:b0:34:49。在 OpenStack 中,每个虚拟机实例均分配独立的虚拟 MAC 地址。

Linux 下可通过以下命令查看网卡信息:

ip link show eth0

默认情况下,网卡仅接收目标地址匹配自身或广播地址(ff:ff:ff:ff:ff:ff)的数据帧。为支持多实例通信,计算主机需启用混杂模式(promiscuous mode),确保所有数据包被正确传递至操作系统。

VLAN 隔离机制

虚拟局域网(VLAN)允许单个物理交换机模拟多个逻辑独立网络。每个 VLAN 用唯一编号标识(1–4095),实现租户间流量隔离,即使实例运行于同一宿主机亦可保证安全。

当跨交换机连接时,必须将中继端口(trunk port)配置为支持 802.1Q 标签封装,以便在传输过程中携带源 VLAN 信息。建议为 OpenStack 部署预留专用 VLAN 范围(如 200–299),避免与现有网络冲突。

IP 寻址与路由

IP 地址由网络号与主机号组成,通过子网掩码(如 255.255.255.0 或 CIDR 表示法 /24)确定划分边界。同一子网内的设备可在二层直接通信。

路由表决定数据包转发路径。可通过以下命令查看当前路由配置:

ip route show
route -n
netstat -rn

例如,若目标地址不在本地网络,则数据包将经由默认网关(如 10.0.2.2)转发。使用 ip route get <target_ip> 可查询具体路由路径。

DHCP 与地址分配

动态主机配置协议(DHCP)通过广播方式自动分配 IP 地址。客户端发送 DHCPDISCOVER,服务器响应 DHCPOFFER,客户端请求后,服务器确认 DHCPACK 完成绑定。

OpenStack 使用 dnsmasq 实现 DHCP 服务,日志记录位于 /var/log/syslog,典型条目如下:

Apr 23 15:53:46 c100-1 dhcpd: DHCPDISCOVER from 08:00:27:b9:88:74 via eth2
Apr 23 15:53:48 c100-1 dhcpd: DHCPACK on 10.10.0.112 to 08:00:27:b9:88:74 via eth2

传输层协议:TCP/UDP/ICMP

  • TCP:面向连接的协议,依赖端口号(1–65535)区分应用。服务器监听固定端口(如 22 代表 SSH),客户端使用临时端口发起连接。
  • UDP:无连接协议,支持单播、广播与组播。常用于 DNS、NTP 及 VXLAN 等场景。组播需中间路由器支持多播路由。
  • ICMP:用于网络诊断与错误报告。例如,当目标不可达或数据包过大时,会返回相应错误消息。

网络设备角色

  • 交换机:工作在数据链路层(第2层),根据 MAC 地址转发帧。
  • 路由器:连接多个网络,依据路由表进行三层转发。
  • 防火墙:基于规则集过滤进出流量。
  • 负载均衡器:分发请求至多个后端服务节点。

隧道技术与封装

隧道技术通过封装一种协议的数据载荷于另一协议之上,实现跨网络传输。

  • GRE:通用路由封装,将私有网络的 IP 封装在公网包中传输。
  • VXLAN:在 UDP 报头内封装以太网帧,构建跨物理网络的虚拟二层网络。

网络命名空间与虚拟路由

Linux 网络命名空间允许为不同进程创建独立的网络视图。每个命名空间拥有独立的:

  • 网络设备列表
  • 路由表
  • iptables 规则集

这使得多个虚拟网络可以共存且其内部 IP 地址可重叠。通过 ip netns exec <name> <command> 可在指定命名空间中执行操作。

此机制等价于"虚拟路由与转发"(VRF)技术,即在同一设备上运行多个独立路由表实例。

网络地址转换(NAT)

NAT 在数据包传输过程中修改源或目标地址,使私有网络能够访问公共互联网。

  • SNAT:修改出站数据包的源地址。常见于私有地址(如 10.0.0.0/8)访问公网时,将源地址替换为公网出口地址,并记录映射关系,实现双向通信。
  • DNAT:修改入站数据包的目标地址。在 OpenStack 中,用于将实例访问 169.254.169.254 的请求重定向至实际元数据服务接口。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。