当前位置: 首页 > news >正文

学习思考:一日三问(学习篇)之匹配VLAN

学习思考:一日三问(学习篇)之匹配VLAN

  • 一、学了什么(是什么)
    • 1.1 理解LAN与"V"的LAN
    • 1.2 理解"V"的LAN怎么还原成LAN
    • 1.3 理解二层交换机眼中的"V"的LAN
  • 二、为何会产生需求(为什么)
    • 2.1 局域网肆意扩张后的"分地运动"
  • 三、有什么用(怎么做)
    • 3.1 理解并灵活使用交换机对标签的处理方式
    • 3.2 用代码逻辑来理解VLAN匹配方式

一、学了什么(是什么)

1.1 理解LAN与"V"的LAN

家用路由器接口总能看到"LAN"的字样,中文翻译过来称为局域网,我们是否可以将家用路由器功能拆分为以下拓扑?
理解LAN
倘若我们直接理解为LAN为交换机直连的链路就好处理了,理解为仅需二层提供通讯,无需三层路由的一块区域,在此区域下可实现广播、组播与无目的MAC的单播帧泛洪区域。

那进一步,我们再理解"V"的LAN就好理解了,V就是虚拟的,理解为逻辑上的,组织一下语言就是“逻辑上的局域网”,意味着这块区域不管长啥样,逻辑上就是个局域网,逻辑上和上面的LAN没啥区别,三个电脑中的一台发广播帧,其余两台都能收到,OK,理论存在,实践开始。

VLAN综合图
上面是个乱七八糟的VLAN分配图,咱们可以按照"V"的LAN的逻辑思维,可以整理成底下这样,"V"的LAN和实际LAN在逻辑上一致,我们这里可以想象各自LAN被路由器隔离广播域,如果需要"V"的LAN间互通,我们按照三层路由逻辑做通就行,假设我们有三层交换机,则每个连接LAN的接口此时改名为"V"的LAN的Interface,简称vlanif,默认一个vlanif绑定着对应编号的"V"的LAN,例如vlan 5逻辑上连接下图“路由器”的接口叫vlanif 5,在此接口上配置IP作为vlan 5的网关,再走路由互访就行,更为复杂的路由方式那就起个OSPF或者静态就行。
逻辑上的VLAN

1.2 理解"V"的LAN怎么还原成LAN

"V"的LAN在原有LAN的帧头中加了一个字段,帧字段区别可见此篇文章:没别的,就聊聊VLAN
所以交换机收到时,把帧头的“标签”贴上,再转手传给其他交换机。扔给路由器或者计算机的时候把“标签”撕掉就行。就想象咱们平常送礼前撕标签的感觉就行。

1.3 理解二层交换机眼中的"V"的LAN

在二层交换机中,"V"的LAN也是LAN,但是要同贴上一样标签的LAN才是一个LAN,不同标签的LAN就是不同LAN,所以此时交换机按道理来说,还需要在收发接口上维系一个标签清单,允许哪些标签的帧从哪个接口出去,而且对于没有标签的帧,为了保持格式统一性,应当打上接口的默认标签(默认标签为1),所有帧在交换机内都是带标签的,遇到同为接口的默认标签号的接口发出就撕掉标签,整理一下,交换机需要这些东西:

  • 接口默认标签号
  • 接口允许通过标签清单

二、为何会产生需求(为什么)

2.1 局域网肆意扩张后的"分地运动"

局域网设备扩大后。广播范围也会越来越大,有些敏感部门需要隔离其他业务部门,所以在原有的庞大LAN范围内,期望能利用一些二层的字段相互隔离不同类型的数据帧,所以不妨把帧都打上标签,用交换机匹配帧,实现放行或拒绝带特定标签的帧。

三、有什么用(怎么做)

3.1 理解并灵活使用交换机对标签的处理方式

交换机常见的两种"V"的LAN接口:Access和Trunk,而我们实现的目标是:终端发出的无标签帧,带上指定标签,准确到达同标签区域,并以无标签的形式,将帧发给目标主机。所以从需求来看,两种接口类型可以想象成一种接口,即:带有标签放行清单与默认贴撕标签能力的接口。我们以Trunk接口为例来想象一下流程:

  1. 若不标签的帧进入交换机前,先打上接口默认标签,带标签的帧进下一步;
  2. 此时匹配接口的标签清单,清单里有就收到交换机内,没有就把帧拦下来(俗称丢弃);
  3. 查交换机MAC地址表,选择接口转发;
  4. 此时匹配接口的标签清单,清单有就发到对应接口处,没有就不让帧出去(俗称丢弃);
  5. 此时比对接口默认标签,默认标签与帧的标签相同就拆掉标签,如果不同就保持标签扔出去;

OK此时就有人疑惑了,假如是Access接口呢,那就意味着接口默认标签号=接口唯一允许通过标签清单=指定VLAN标号,此时代入上述过程再看看,结果如下:

收/发数据帧有无标签是否为接口默认标签动作
贴默认标签,匹配清单唯一放行项,收入交换机
匹配清单唯一放行项,收入交换机
不匹配清单唯一放行项,丢弃
匹配清单唯一放行项,转至出接口,撕掉标签
不匹配清单唯一放行项,丢弃

因为交换机内部都是带标签的,所以不存在发数据帧的时候有无标签帧

3.2 用代码逻辑来理解VLAN匹配方式

相信有些朋友看上述分析文字比较枯燥,所以可以参考下面这些伪代码,逻辑上还是比较清楚的:

# 当模式为Access时,VLAN列表仅有一个允许项,即接口标签号,默认为1
if InPort.mode == "Access":InPort.allow_vlan_list = [Inport.default_tag]
if OutPort.mode == "Access":OutPort.allow_vlan_list = [Outport.default_tag]
# 对齐带Tag的帧格式(Port.default_tag默认为1)
if Frame.tag == null:Frame.add(InPort.default_tag)
# 如果帧标签在in接口允许清单中,则进行下一步,无则丢弃
if Frame.tag in InPort.allow_vlan_list:InPort.pass(Frame)# 查询MAC地址表,有表项则丢到对应接口,进行下一步,无则丢弃OutPort = Switch.search(Frame)if OutPort != null:# 如果帧标签在out端口允许清单中,则进行下一步,无则丢弃if Frame.tag in OutPort.allow_vlan_list:# 如果帧标签和out接口默认标签一致,则撕掉标签转发;# 如果不一致则直接转发if Frame.tag == OutPort.default_tag:Frame.take_off_tag()# out接口转发帧OutPort.forward(Frame)else:OutPort.discard(Frame)else:Switch.discard(Frame)
else:InPort.discard(Frame)
http://www.lryc.cn/news/507332.html

相关文章:

  • [WiFi] WiFi 802.1x介绍及EAP认证流程整理
  • 用C#(.NET8)开发一个NTP(SNTP)服务
  • Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别
  • ABAP SQL 取日期+时间最新的一条数据
  • 【Rust自学】4.3. 所有权与函数
  • 【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
  • 用docker快速安装电子白板Excalidraw绘制流程图
  • 使用Turtle库实现,鼠标左键绘制路径,用鼠标右键结束绘制,小海龟并沿路径移动
  • 人工智能入门是先看西瓜书还是先看花书?
  • winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序,在需要屏蔽双击窗体最大化、最小化、关闭
  • 进程内存转储工具|内存镜像提取-取证工具
  • 数据结构day5:单向循环链表 代码作业
  • (OCPP服务器)SteVe编译搭建全过程
  • Mybatis分页插件的使用问题记录
  • 36. Three.js案例-创建带光照和阴影的球体与平面
  • CentOS 7 安装、测试和部署FastDFS
  • 全志H618 Android12修改doucmentsui选中图片资源详情信息
  • 【083】基于51单片机智能烘手器【Proteus仿真+Keil程序+报告+原理图】
  • uniApp使用腾讯地图提示未添加maps模块
  • 未来趋势系列 篇五:自主可控科技题材解析和股票梳理
  • Springboot 学习 之 logback-spring.xml 日志压缩 .tmp 临时文件问题
  • maven-resources-production:ratel-fast: java.lang.IndexOutOfBoundsException
  • K8s docker-compose的入门
  • 去雾Cycle-GAN损失函数
  • word实现两栏格式公式居中,编号右对齐
  • vtie项目中使用到了TailwindCSS,如何打包成一个单独的CSS文件(优化、压缩)
  • shell脚本案例
  • 完整微服务设计 功能实现
  • JWT令牌与微服务
  • C# WinForm移除非法字符的输入框