Linux Bridge VLAN

devtools/2024/9/20 7:21:40/ 标签: linux, 智能路由器, 运维

一、Linux Bridge VLAN

(1)是什么?
Bridge 是什么
VLAN 是什么
LINUX BRIDGE VLAN又是什么?——>

(2)解决什么问题?【应用场景】
应用背景
已一个实际问题引出
【应用场景】:
【网络扩展】
随着企业的发展,其网络需求也在不断增长,可能需要将多个物理网络连接起来以扩展网络的规模和容量。
·解决方案:VLAN可以通过跨多个交换机或路由器的VLAN trunking技术来连接不同的物理网络,使它们在逻辑上形成一个统一的网络。这样,不同地理位置的设备可以被分配到同一个VLAN中,实现资源共享和统一管理,同时保持网络的逻辑隔离。

网络虚拟化背景:overlay

二、结合linux 内核特性对Linux Bridge 协议栈的介绍
(1)VLAN
【概念】
【背景】
Vlan最初的概念是应用与交换机中,并且由硬件来划分vlan。
【分类】
·单交换机实现VLAN——基于port的vlan
基于Port的VLAN属于静态VLAN,它是划分网络最简单,最有效和最常用的方法,下面将在单台交换机上配置静态VLAN,来实现两个网段的数据隔离,以下实验是一种网络拓扑中最简单的拓扑结构图,适合于小型办公网络,其实验拓扑图如下.
在这里插入图片描述

·基于Port VLAN:最传统的方法是基于port的vlan,即每个vlan虚拟网由一个vlan_id标示,并由一个vlan_mask来标示哪些port和它同处于一个vlan虚拟网。硬件支持,可以不需要vlan_head就能完成vlan功能。
·跨交换机实现VLAN——trunk口
在实际的工作环境中,只在一台交换机上实现VLAN是远远不够的,通常需要跨越多台交换机实现VLAN划分网段,思科交换机通过使用Trunk干道端口的方式实现多台交换机数据共享,并实现跨交换机上的同一个VLAN之间的数据通信,其拓扑结构图如下:
在这里插入图片描述

·承载多个vlan的port称为trunk口,它上面收发的数据包必须含有vlan_head,以识别该包是属于哪个vlan。
在这里插入图片描述
在这里插入图片描述

【缺点】
由前面Linux中vlan的实现可知,发往vlan设备的数据包都被打上vlan_head,而vlan设备接收到的数据包都默认为有vlan_head,并将其去除。这是符合trunk口的定义的。
总之Linux下的VLAN模型,是一套虚拟化的架构,它为了虚拟出vlan端口,做得比较臃肿。如果把上图中下方的switch设备用Linux来驱动,该怎么模型化这个设备,还要充分利用硬件的特性,实现高效的vlan。

【协议】-IEEE802.1Q标准
VLAN的工作原理是基于IEEE 802.1Q标准。该标准规定了VLAN的标识符(VLAN ID),它是一个16位的数字,范围从0到4095。每个VLAN都有一个唯一的VLAN ID,用于标识不同的VLAN。
【实现】
当一个数据包需要被发送到VLAN时,交换机(Switch)【交换机是基于linux的,linux中的802.1q模块就是支持VLAN的】会将该数据包加上VLAN标识符(VLAN ID)。然后,该数据包会被发送到指定的VLAN。只有具有相同VLAN ID的设备才能接收该数据包。

【优势】
VLAN 的主要优点是能提高网络的灵活性和安全性。
·通过使用 VLAN,网络管理员可以根据需要来划分网络,而不是受到物理布局的限制。
·此外,VLAN 可以防止不必要的广播流量,提高网络的效率。

【借鉴材料】
https://lpoyx.blog.csdn.net/article/details/138918775?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-138918775-blog-137021517.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-138918775-blog-137021517.235%5Ev43%5Epc_blog_bottom_relevance_base4&utm_relevant_index=3

(2)Linux 网络设备
网络设备有3类:
·传统的网络设备,它们不需要依赖于其它设备而独自存在,如eth0、loopback等;
·VLAN网络设备,它需要依赖于一个宿主设备,若宿主设备没了,它是不能工作的;
vlan_dev的硬件地址必须和real_dev相同,这样,发往vlan_dev的数据包才能被实际的硬件设备接收到。
【发送流程】
发送流程会直接调用hard_dev_start_xmit()函数,该函数首先对skb作一系列检查,包括vlan的检查,然后调用skb->dev->ops->ndo_start_xmit()发送。
首先来看对vlan的检查,参见dev.c中的hard_dev_start_xmit(skb)函数,其实很简单,检查skb中的vlan标志,若有,则插入vlan_tag,并修改skb->proto=802.1q,最后去除skb中的vlan标志。skb中为什么会有vlan标志,因为上层选择vlan_dev后,根据它的priv_flags(见上一节)可知道它是一个vlan设备,因此给它打上一个vlan标志。

·Bridge网络设备,它也是虚拟的,它依赖于从设备。(有了从设备才构成了一座桥)
(3)Bridge

【vlan与vxlan的区别】
区别

  1. 范围

    • VLAN:局限于本地交换机或同一交换机上,通常用于小范围的网络隔离。
    • VXLAN:可以跨越多个交换机或数据中心,扩展到更大的网络环境中。
  2. 封装

    • VLAN:直接在以太网帧中使用802.1Q标记。
    • VXLAN:使用UDP封装,将以太网帧封装在IP包中,通常使用UDP端口4789。
  3. 网络标识

    • VLAN:使用12位的VLAN ID,支持最多4096个VLAN。
    • VXLAN:使用24位的VNI(VXLAN Network Identifier),支持超过1600万个VXLAN网络。
  4. 弹性

    • VLAN:适合小规模和单个数据中心的网络。
    • VXLAN:适合大规模和跨数据中心的网络,提供更好的扩展性。

联系

  1. 网络分隔:两者都用于网络隔离和虚拟化,允许在同一物理网络中创建多个虚拟网络。

  2. 互补:VXLAN可以在VLAN的基础上扩展,利用VXLAN在更广泛的网络范围内实施VLAN的逻辑分隔。

(4)Linux Bridge VLAN (虚拟交换机)
【应用场景】虚拟交换机主要使用在云环境中,在虚拟机之间、虚拟机和外部网络之间实现网络的连通。
【发送流程】
因此只有当br0设置IP地址时,Bridge才有可能将数据包发往上层协议栈。

【涉及到的实际产品】

硬件产品

企业网络设备
1.交换机和路由器:

网络交换机: 一些企业级网络交换机基于 Linux 开发,使用 Linux bridge 和 VLAN 技术来提供高性能的 VLAN 支持。这些设备可以通过 Linux bridge 配置 VLAN 以满足不同部门或业务单元的网络隔离需求。
软件路由器: 如 VyOS、pfsense(在 Linux 环境下),利用 Linux bridge VLAN 功能实现复杂的网络拓扑、流量管理和 VLAN 隔离。

2.家庭路由器:

一些基于 Linux 的家用路由器(如 OpenWrt、DD-WRT)使用 Linux bridge 和 VLAN 技术来实现多 VLAN 配置,以便将不同类型的设备(如 IoT 设备、工作设备)隔离到不同的网络中。

软件产品

防火墙和网络安全设备:

防火墙: 一些基于 Linux 的防火墙产品(如 iptables-based firewall)使用 Linux bridge VLAN 来管理流量分隔、VLAN 过滤和流量控制,提供增强的网络安全功能。

数据中心和云计算

**a. 数据中心网络管理:

网络分段: 在数据中心环境中,Linux bridge VLAN 用于实现网络分段,以提供不同客户或应用的网络隔离。通过 VLAN,可以在物理服务器上实现虚拟网络结构。
虚拟网络功能(NFV): 网络功能虚拟化(NFV)中,Linux bridge VLAN 技术用于创建虚拟网络设备(如虚拟交换机、虚拟路由器)来支持灵活的网络配置。

私有云解决方案:

OpenStack: 在 OpenStack 环境中,网络服务(Neutron)可以利用 Linux bridge 和 VLAN 技术来配置和管理虚拟网络,为云中的虚拟机提供隔离的网络环境。

这些应用展示了 Linux bridge VLAN 技术在实际环境中的广泛使用,涵盖了从虚拟化、企业网络设备到数据中心和家庭网络的各种场景。通过灵活配置 VLAN 和网络桥接,用户可以实现网络流量隔离、管理和优化,以满足不同的网络需求。

以下是几种常见的企业网络设备,它们使用了 Linux bridge 和 VLAN 技术。这个表格包括了这些设备的名称、主要功能和特点、VLAN 支持的特性以及适用的场景。

设备名称主要功能特点VLAN 支持特性适用场景
VyOS开源网络操作系统基于 Linux 的虚拟路由器,支持丰富的网络功能支持 VLAN 标签管理和桥接功能中小型企业、网络虚拟化环境
pfSense开源防火墙和路由器提供防火墙、路由、VPN 等功能支持 VLAN 标签配置和流量隔离企业防火墙、网络管理
OpenWrt开源路由器固件高度可配置的路由器固件,支持多种网络功能支持 VLAN 配置和桥接家庭路由器、小型办公室
Cisco C8800 系列企业级交换机高性能、多层交换机,支持各种网络协议支持 VLAN 标签管理、VLAN 路由和桥接大型企业、数据中心
Juniper EX 系列企业级交换机高吞吐量、高可靠性支持 VLAN 配置、桥接功能和跨 VLAN 路由大型企业、数据中心
Arista 7280R 系列数据中心交换机高密度、高性能支持 VLAN 标签管理、桥接和高级流量管理数据中心、高性能计算环境
MikroTik CRS 系列可编程交换机多层交换机,支持网络编程和自动化支持 VLAN 配置和桥接小型到中型企业、教育机构
Ubiquiti EdgeSwitch企业级交换机支持多种管理功能和高性能支持 VLAN 配置、管理和桥接中小型企业、教育机构
Netgear ProSafe 系列小型企业交换机经济实惠,适合小型企业使用支持基本的 VLAN 配置和管理小型企业、办公室网络

在这里插入图片描述

设备特点说明:

  • VyOS: 作为一个全面的开源网络操作系统,VyOS 提供了完整的路由、VPN、防火墙等功能,适用于中小型企业和网络虚拟化环境。

  • pfSense: 提供强大的防火墙和路由功能,适用于企业级网络安全管理,支持复杂的 VLAN 配置。

  • OpenWrt: 一个灵活的路由器固件,适用于家庭和小型办公室的网络配置。

  • Cisco C8800 系列: 高性能企业交换机,适用于大型企业和数据中心环境,提供丰富的 VLAN 配置和管理功能。

  • Juniper EX 系列: 可靠的企业级交换机,适用于需要高吞吐量和多层交换功能的大型企业和数据中心。

  • Arista 7280R 系列: 数据中心专用的高性能交换机,支持高密度 VLAN 配置和流量管理。

  • MikroTik CRS 系列: 提供高度可编程的交换机功能,适合需要灵活配置的中小型企业和教育机构。

  • Ubiquiti EdgeSwitch: 性价比高的企业级交换机,适用于中小型企业和教育机构,支持基本的 VLAN 管理功能。

  • Netgear ProSafe 系列: 适合预算有限的小型企业,提供基本的 VLAN 支持和管理功能。

这些设备的选择和配置将根据企业的网络需求、预算以及对性能的要求来决定。

三、LINUX BRIDGE VLAN 竞品介绍

华为:
AR500, AR510, AR531, AR550, AR1500, and AR2500 V200R010 CLI-based Configuration Guide - Ethernet Switching
H3C
H3C的S5120系列交换机
锐捷:
CISCO:
Arista:

中兴:web配置改为桥接后会激活 CPU 的临时软桥接,是传统的 linux bridge ,此时 hardware offload 不会介入,所有的数据包处理通过 CPU 转发

华硕ASUS:RT-AX53U
在这里插入图片描述


http://www.ppmy.cn/devtools/97224.html

相关文章

武汉流星汇聚:西班牙时尚消费高涨,中国商家借亚马逊平台拓商机

在2024年第二季度的亚马逊西班牙站,一场前所未有的时尚盛宴正悄然上演。销售额同比高增长TOP10品类榜单的揭晓,不仅揭示了西班牙消费者对于时尚品类的狂热追求,更为亚马逊平台上的中国商家开启了一扇通往新蓝海的大门。其中,男士拳…

SSH协议与OpenSSH配置详解(配置密钥对验证实验)

文章目录 SSH 协议与 OpenSSH 配置详解1. SSH 协议概述2. OpenSSH 概述3. 配置SSH(sshd_config文件)3.1 配置服务监听选项3.2 配置用户登录控制(黑白名单)3.3 配置登录验证方式(密钥对验证)3.4 常用的配置项…

PHP中如何限制PDF文件大小的简单示例

例如,如果我们希望限制PDF文件的大小不超过5MB,我们可以将这两个配置项都设置为5M。 upload_max_filesize 5M post_max_size 5M接下来,在PHP脚本中,我们可以通过检查$_FILES全局数组来获取上传文件的大小,并作出相应…

【5.0】vue请求函数和路由

【5.0】vue请求函数和路由 此处是与后端交互发送请求拿到数据,和vue自己中的页面跳转路由 【一】axios使用 【1】安装 终端命令 npm install axios -S【2】基本语法 axios.get(后端地址(django)).then(res > {console.log(res.data.res…

ArrayList详解

简介 【概述】 List的主要实现类,底层使用Object[]存储,适用于频繁的查找工作,线程不安全。 【特点】 增删慢:每次删除元素,都需要更改数组长度、拷贝以及移动元素位置;查询快:由于数组在内…

SSM学生社团管理系统—计算机毕业设计源码20360

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 学生社团管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

YouTube最好用的翻译插件

相信很多同学和我一样,想看YouTube视频时发现基本上都说英文,以我的英文水平🤣去观看真是一言难尽,所以就想着看能不能在谷歌浏览器上找一个插件来进行翻译,结果还真让我找到了一个不错的Youtube翻译插件,它…

AI大模型高效题库生成:业务人效提升的强大助力

一 现状问题 1、培训考核涉及的文件数量较多 当前,京东航空公司维修部门面临着人员规模的快速增长和持续的培训需求。根据民航局的规定,维修培训必须确保所有维修人员都能够完成对飞机维修相关文件的学习,这包括维修方案、维修工程管理手册…

Anaconda环境迁移之conda pack

目录 1. conda pack安装2. 环境打包3. 拷贝环境包到目标电脑4. 激活环境5. 大功告成 1. conda pack安装 源电脑安装conda pack conda install conda-pack2. 环境打包 假如环境名为test,那么打包命令如下: conda pack -n test -o test.tar.gz打包后的…

使用Python+MoviePy给视频添加字幕或水印

一、使用CompositeVideoClip将使用TextClip创建文字类与视频叠加在一起,给视频添加字幕或水印 from moviepy.editor import *# 从本地载入视频myHolidays.mp4,并截取00:00:50 - 00:00:60部分 clip VideoFileClip("/home/Download/Mojito.mp4"…

如果忘记了 Apple ID 密码,如何重设

“我忘记了我的 Apple ID 密码,如何恢复我的帐户?”为了方便用户,Apple 允许每个人使用唯一的 Apple ID 和密码激活设备并访问所有 Apple 服务。然而,实际上,手动选择某项并忘记它似乎很容易。例如,许多 Ap…

带你速通C语言——指针(10)

指针是C语言中最强大但也最容易引起困惑的概念之一。它们直接关联内存管理,使得程序员可以高效地操作数据和内存。下面我将尽量以简单明了的方式介绍指针的基本概念。 1.指针基础 指针本质上是存储内存地址的变量,这个地址指向一个值。通过指针&#xf…

Vue中调整组件的高度及其他样式

在Vue组件中&#xff0c;如果想让一个组件如<MapContainer />变长&#xff0c;你可以使用CSS来调整它的高度。以下是一些可能的方法&#xff1a; 设置固定高度&#xff1a;直接给<MapContainer />组件设置一个高度值。 .MapContainer {height: 300px; /* 你可以根据…

论文中绘制神经网络工具汇总

论文中绘制神经网络工具汇总_convnetdraw-CSDN博客 这哥们总结的还是比较全面的&#xff01;

MongoDB如何实现大于小于查询

MongoDB是一个高性能、开源、无模式的文档型数据库&#xff0c;它使用BSON&#xff08;Binary JSON&#xff09;作为存储格式&#xff0c;支持丰富的查询语法&#xff0c;包括大于&#xff08; g t &#xff09;、小于&#xff08; gt&#xff09;、小于&#xff08; gt&#x…

RabbitMQ-消息队列延迟队列二

1、安装rabbitmq 怎么安装rabbitmq请查看之前课程&#xff0c;如果已经安装&#xff0c;请略过此步。 2、创建vendor文件夹或是直接采用PHP框架 mkdir vendor 3、进入文件 cd vendor 4、安装php扩展 composer require php-amqplib/php-amqplib 5、进入上级创建delay文件…

豆瓣评分8.6!Python社区出版的Python故事教程,太强了!

Python 是活力四射的语言&#xff0c;是不断发展中的语言。就连使用 Python 多年的行者也不敢说对 Python 的方方面面都了解并可以自由运用&#xff0c;想必读者可能更加无法快速掌握所有重点技巧了。 今天给小伙伴们分享的这份手册是用互动的开发故事来探讨Pyfhonic开发的故事…

Spring之@Bean注解

1. 使用方式 1.1 Configuration Bean 1.1.1 创建实体类 User Data NoArgsConstructor public class User {private String name;public User(String name) {this.name name;} } 1.1.2 创建配置类 UserConfig Configuration public class UserConfig {Beanpublic User us…

图片加载的区域显示

问题描述: 一个imageview 控件宽高 640*280 ,通过glide加载要显示的图片,,图片始终显示在imageview 的右边和下边,图片的宽高可能小于或者大于imageview 控件的宽高,如何在imageview 显示图片:如果图片的宽高大于imageview 的宽高可以只显示图片对应的右下部分(此时imageview …

C++:list类(迭代器)

目录 前言 数据结构 push_back push_front 默认构造函数 拷贝构造函数 list迭代器 结构 构造函数 *运算符重载 ->运算符重载 前置运算符重载 后置运算符重载 前置--运算符重载 后置--运算符重载 !运算符重载 运算符重载 list迭代器完整代码 begin和end …