EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

互联网计算-09-局域网交换与虚拟局域网

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

交换机

网桥和路由器一般是通过软件来完成的,基于操作系统的。交换机是基于硬件的。

交换机基本功能

  1. 根据 MAC 地址建立和维护交换表(类似于网桥表)
  2. 将帧切换出接口到目标

对称交换

对称交换(Symmetric Switching)可在具有相同带宽(10/10 Mbps 或 100/100 Mbps)的端口之间提供交换连接。用户尝试访问其他网段上的服务器时,可能会导致瓶颈,因为对称交换可能会导致带宽不足。

多个客户端向服务器访问的话,服务器端口流量会比较阻塞(在对称切换中,双端的带宽是完全对称的),这是一个瓶颈。

非对称交换

非对称交换(Asymmetric Switching)通过将带有服务器的网段连接到更高带宽的端口(100 Mbps),减少了服务器上潜在瓶颈的可能性。

非对称交换需要在交换器中进行内存缓冲。非对称交换端口解决对称交换端口中的对称阻塞问题,进一步保证了服务器的稳定实现。

内存缓冲:交换机中存储目标和传输数据的内存区域,直到可以将其切换出正确的端口为止。

  1. 基于端口(Port)的内存缓冲:
    1. 每个端口都有一个 buffer
    2. 数据包存储在每个端口的队列中
    3. 由于目标端口繁忙,一个数据包可能会延迟其他数据包的传输
    4. 其他端口可能会空闲,存在不均衡的问题。
  2. 共享(Shared)内存缓冲
    1. 所有端口共享的公用内存缓冲
    2. 允许将数据包在一个端口上接收并在另一个端口上发送出去,而无需将其更改为其他队列
    3. 需要自己记录端口的信息
  3. 发生阻塞的时候,根据情况按照端口或者内存将包缓存下来

交换方式

储存转发

储存转发(Store-and-Forward):网桥、路由器等通过软件转发的设备使用。

交换机接收整个帧,最后校验其 CRC,然后再将其发送到目的地。

直通

直通(Cut-through)

上述存储转发会增加延迟,通过使用直通切换方法可以减少延迟。

快速转发切换:仅在立即转发帧之前检查目标 MAC,即只要看到帧的目的地址就转发,而不看帧的后面的部分

无碎片转发

无碎片转发(Segment-free Switching)

碎片释放(Fragment Free):在转发帧之前读取前 64 个字节以减少错误:避免碰撞和帧碎片

三种不同的转发方式的比较

第二层交换机

大规模集成电路,保证链路效率,低时延,低成本。有一个 MAC 地址。

第三层交换机

  1. 基于硬件的帧转发机制,较高的帧转发性能,低时延(路由器是针对路由表进行转发)
  2. 较高速的计算
  3. 每一个端口的代价低
  4. 流控制
  5. 安全性更高
  6. 对数据流进行路由,生成 MAC 和 IP 的映射(消除了路由器对路由转发而导致的延时)
  7. MAC 地址过来的时候直接根据表从二层进行通过

第四层交换机

  1. 数据段在数据报里面,数据报在数据帧里面
  2. 只要交换机可以看到数据帧的数据部分的首部
  3. 可以根据端口主机的应用特点进行一定的流量控制
  4. 和 Net OS 是不一样的,没有那么智能
  5. 识别到前 80 个字节的数据报长度,对指定应用进行管理

多层交换机总结

  1. 一般我们只是用二层交换机
  2. 交换机可以简单识别第三层和第四层信息

生成树协议

生成树协议(STP, The Spanning-Tree Protocol)

桥回路

出于各种原因,网络中可能会出现环路

  1. 通常,网络中的环路是故意(deliberate)提供冗余的结果。
  2. 也可能由于配置错误而发生:在桥接网络中,环路可能是绝对灾难性的两个主要原因:
    1. 广播回路(广播风暴),第二层的帧结构中没有 TTL
    2. 路由表的错误

往往是第二层交换机的冗余导致的桥回路。

接入层到核心层的接入往往要有冗余,这个区域是主干网(backbone)

冗余造成了路由回路

  • 设备通过 backbone 和远端设备进行链接

第二层路由回路

广播和第二层循环可能是危险的组合。

以太网帧没有 TTL 字段,因此以太网帧开始循环后,它可能会继续下去,直到有人关闭其中一台交换机或断开链路为止(外部条件)。

交换机将抖动(flip flop)主机 A 的桥接表条目(创建极高的 CPU 利用率),消耗 CPU 和内存

第二层路由回路-泛洪单播帧

过一段时间 CAT-1 和 CAT-2 没有收到 Host-B 的信息,删除表中的对应记录。

在这之后,Host-A 发送给 Host-B 信息,然后在 CAT-1 和 CAT-2 之间进行循环。

生成树协议综述

生成树协议的元素:

  1. 主要功能:在交换机/桥接网络中允许冗余路径,而不会因环路的影响而引起延迟。
  2. STP 通过计算稳定的生成树网络拓扑来防止环路
  3. 生成树帧(称为桥协议数据单元,bridge protocol data unit,BPDU)用于确定生成树拓扑

在正常情况下禁用一些端口来防止出现冗余。

STP 决策顺序

生成树始终使用相同的四步决策序列:

  1. 在拓扑里面最低的 root BID(Bridge Identification,网桥标识)
  2. 找到 Root bridge 的最低路径成本
  3. 每个路径都会选择一个最低 BID 的 sender 这个是针对一个链路的,详见例子
  4. 每个路径再指定一个最低的 ID 端口

这些信息的得取都是靠的 BPDU 帧的交换

桥协议数据单元

  1. BPDU 是交换机之间的流量;它们不承载最终用户(end-user)流量。
  2. STP 建立一个称为根网桥的根节点,生成的树源自根桥。
  3. 不属于最短路径树的冗余连接将被阻止(block 端口,不转发,但是接收)
  4. 在阻塞的链接上收到的数据帧将被丢弃。
  5. 交换机发送的允许形成无环逻辑拓扑的消息是 BPDU

BPDU 的结构:

  • BPDU 里面包含几个字段标识协议、版本、数据类型、标志等,记录它认可的 Root BID(类似 OSPF)、到 BID 最小的代价、发送的交换机的 ID、从哪个端口发送
  • 和 OSPF 不一样的:不一定以自己为根
  • 这样在选举之后,不在最短生成树中的冗余链路就被屏蔽掉了

STP 的 BPDU 帧

注意前四个是很有意义的。

默认交换机每 2s 发送一次 BPDU,主要是维护最短的路径。

接收到 BPDU 帧的时候,会比较根 ID 并计算,如果更优则接受,反之则不接受。经过一段时间的传递后会全局稳定。

网桥标识

  1. 网桥 ID(BID):8 个字节(2 + 6)
    1. 高阶子字段(2 个字节):网桥优先级,值域:0-65535(默认值:32,768),通常以十进制格式表示
    2. 低阶子字段(6 个字节):分配给交换机的 MAC 地址,以十六进制格式表示
  2. STP 成本值:成本越低越好。

选举根交换机

  1. 交换机通过查找具有最低 BID的交换机(通常称为根战争)来选择单个根交换机。
  2. 如果所有交换机都使用默认的网桥优先级 32768,则最低的 MAC 地址将作为根交换机。
  3. 可以通过配置优先级来调整根网桥

路径代价

网桥使用成本的概念来评估它们与其他桥梁的距离。

和 OSPF 算法相同,这个标准是比较合适的,比之前 OSPF 要新,用固定的数值除以带宽来获得代价。

五个 STP 状态

通过根策略配置每个端口来建立状态。只有在交换机做 STP 时,交换机才会出现这五个状态。

然后,STP 根据流量模式(traffic Patterns)和潜在环路(Protential Loops)修改状态。

STP 状态的默认顺序为:

  1. 阻塞:没有转发帧,听到了 BPDU
  2. 监听:不转发任何帧,监听数据帧(确定自己可以参加的交换),也会发送一些数据帧表示自己状态变了
  3. 学习:不转发帧,学习地址
  4. 转发:转发帧,学习地址
  5. 禁用:没有转发帧,没有听到 BPDU

STP 过程:Blocking -> 20s Listening -> 15s Learning -> 15s Fowarding 或者 Disabled

2s 可以调整

老化时间:保存的时间

初始 STP 收敛

当网络首次启动时,所有网桥都会混合使用 BPDU 信息来泛洪网络(开始泛洪 BPDU 信息)。立即,他们应用决策序列,允许他们 BPDU 进行 PK,然后选择出来 ROOT,从而形成整个网络的单个生成树。

  1. 根交换机决定:选择一个根桥作为该网络的中心点
  2. 选择根端口:所有剩余的网桥都会计算出一组根端口
  3. 选择指定端口:其余所有网桥计算一组指定端口(Designated Ports)

Root switch 针对一个特定的交换机,根端口针对一个交换机,指定端口对应链路。

步骤 1:根交换机决定

  1. 宣布自己为根
  2. 检查端口上收到的所有 BPDU 以及将在该端口上发送的 BPDU
  3. 对于每个到达的 BPDU,如果其值小于为端口保存的现有 BPDU,则旧值被替换,并且 BPDU 的发送者被接受为新的根

  • BC 收到后将根修改为 A
  • 比如在 BC 链路中,B 的 MAC 地址比较小,作为链路的 Sender BID,这个 port 是指定端口。

步骤 2:选择根端口

每个非根桥必须选择一个根端口。

  1. 桥的根端口是最接近根桥的端口。
  2. 根路径成本是到根网桥的所有链接的累积(cumulative)成本。

STP 成本随着在端口上接收到 BPDU 而增加,而不是随着它们从端口发送出去而增加。

B 会把上面一个端口做为 Root Port,虽然两个可达,但是上面一个更快,C 也是同样

步骤 3:选择网段的指定端口

每个网段都有一个指定端口(Designated Port):充当单个网桥/交换机端口,该端口既向该网段又向根网桥发送流量,也从该网段和根网桥接收流量。

包含给定网段的指定端口的网桥/交换机称为该网段的指定网桥。

所有网桥/交换机将 block 它们的未指定的端口,根网桥上的每个活动端口都将成为指定端口

每个链路只有一个指定端口,一旦选定其他就 block 了。

BC 之间的链路,两个端口优先级相同,左边是 BID 小所以将其选择为指定端口。

根端口是 B 和 C 上面的端口。

AB 和 AC 之间的链路的指定端口是 A 上面的端口。

虚拟局域网

虚拟局域网(Virtual Local Area Network,VLAN)

为什么引入 VLAN?

VLAN 可以不通过路由器就隔离广播域吗?

VLAN 简介

现有的共享局域网配置

在典型的共享局域网中:

  1. 根据用户所插入(plug)的集线器对用户进行物理分组
  2. 路由器分割局域网并提供广播防火墙

在 VLAN 中:

  1. 您可以按使用的功能,部门或应用程序对用户进行逻辑分组
  2. 通过专有软件进行配置

LAN 和 VLAN 之间的差异

VLAN:

  1. 在第 2 层和第 3 层工作
  2. 控制网络广播
  3. 允许用户由网络管理员分配
  4. 提供更严格的网络安全性

左边是基于地理位置划分成子网(传统局域网),VLAN 是是通过逻辑位置进行划分。

VLAN1 的报文不会发送给 VLAN2(虽然连接在一个交换机上)

特点

VLANs(IEEE 802.1q)

  1. 不限于物理交换机网段的网络设备或用户的逻辑分组
  2. VLAN 中的设备或用户可以按功能,部门,应用程序等进行分组,而不管其物理网段的位置如何。
  3. VLAN 创建一个不限于物理网段的单个广播域,并且将其视为子网。
  4. VLAN 设置是由网络管理员使用供应商的软件在交换机中完成的。

优点

  1. 限制广播包,提高带宽的利用率。
  2. 增强通信的安全性:其他 VLAN 用户网络收不到非本 VLAN 的报文,避免被监听
  3. 创建虚拟工作组:可以一个部门工作的人划分为一个 VLAN,这样子即使他移动了办公位置,仍然能够正常办公
  4. 增强网络的健壮性:将一些网络故障限制在一个 VLAN 中

分组用户

VLAN 可以从逻辑上将用户划分为不同的子网(广播域),广播帧仅在具有相同 VLAN ID 的一个或多个交换机的端口之间切换(VLAN ID 属于端口)。

可以通过基于以下内容的软件对用户进行逻辑分组:

  1. 端口号
  2. MAC 地址
  3. 使用的协议
  4. 使用的应用
没有 VLAN 时的网络广播

大家在一个交换机上不可以进行划分

划分了 VLAN 的网络广播

各自角色之间单独进行通信,虽然连接的是同一个交换机,如果不在同一个 VLAN 上,相互之间也不能通信

VLAN 间通信

  • 首先 172.17.10.21 询问网关地址(ARQ)
  • 路由器帮忙转发(VLAN 的交换需要路由器的支持)
  • 交换机 S2 的不同端口在不同的 VLAN,S1 和 S2、S1 和 S3 之间是 VLAN 骨干(backbone,VLAN 中继)

VLAN 和第三层转发来控制广播域

第三层交换机:为每一个网段设置一个 SVI(switch virtual interface,虚拟交换机结构,也可以理解为子接口),通过这个来进行不同网段之间的通信

VLAN 的结构

VLAN 通过骨干网

骨干网(BackBone)

  1. VLAN 配置需要支持互连的路由器和交换机之间的骨干数据传输。
  2. 骨干网是用于 VLAN 间通信的区域,可以跑多个 VLAN
  3. 骨干网应该是高速链路,通常为 100Mbps 或更高
  4. BackBone 可以跑多个 VLAN,是骨干网

在 VLAN 中的路由器的作用

路由器提供不同 VLAN 之间的连接。

例如,您有 VLAN1 和 VLAN2。在交换机内,位于不同 VLAN 上的用户无法相互通信(VLAN 的好处);但是 VLAN1 上的用户可以向 VLAN2 上的用户发送电子邮件,但他们需要路由器的支持才能执行此操作。

在 VLAN 中的帧的使用

交换机根据帧中的数据做出过滤和转发决策。注意 trunk 链路要用交叉线来连接。

使用了两种技术:

  1. 帧过滤:检查有关每个帧的特定信息(MAC 地址或第三层协议类型),特定的 VLAN 记录或者映射
  2. 帧标记:在整个网络骨干网中转发时,在每个帧的标题中放置一个唯一的标识符

帧过滤

帧过滤(Frame Filiter):

  • 收到帧转发后,发现都不在一个 VLAN 上,然后通过 Backbone 转发
  • Frame Table 在交换机上传输:在 Frame Table 上面建立起 MAC 地址和 VLAN 的对应关系
帧标记

帧标记(Frame Tagging)实施过程:

  1. 在整个网络骨干网中转发时,在每个帧的标题中放置一个 VLAN 标识符。
  2. 每个交换机都可以理解和检查标识符
  3. 帧离开网络骨干网时,交换机会在帧发送到目标终端站之前删除标识符只和端口绑定,而不影响主机

帧标记在第二层起作用,并且几乎不需要处理或管理开销。

从主机到了交换机端口,交换机端口进行标记,然后进行转发。

IEEE802.1Q 和 ISL

IEEE802.1Q:IEEE 标准,在标头中插入 VLAN 的标签以标识所属的 VLAN(帧标记)

ISL(Inter-Switch Link):思科专有。ISL 在数据帧的前面添加一个 26 字节的标头,并在末尾附加一个 CRC(4 字节)。

标记一般在 BackBone 上

Name Encapsulation Label Media
802.1Q No Yes Ethernet
ISL Yes No Ethernet

VLAN 的实现

端口、VLAN 和广播

实现 VLAN 的两种方法

  1. 静态的
  2. 动态的

每一个端口绑定给一个 VLAN

  1. 确保不共享同一 VLAN 的端口不共享广播。
  2. 确保共享相同 VLAN 的端口将共享广播。
  3. VLAN 标签的添加与删除都是需要依靠交换机或者路由器的

实现途径:

  1. 基于端口的 VLAN
  2. 基于 MAC 地址的 VLAN
  3. 基于 IP 地址的 VLAN
  4. 基于上层协议的 VLAN

静态 VLAN

定义:静态 VLAN 是指交换机上的端口以管理方式分配给 VLAN

优点:

  1. 安全,易于配置和监控
  2. 在控制移动的网络中效果很好

端口是写死在交换机的端口上的。

动态 VLAN

一个服务器来配置 VLAN 的信息。

交换机通过 MAC 地址或者哪一个协议,指定是哪一个 VLAN。

当工作站最初连接到未分配的端口时,交换机会检查表中的条目,并使用正确的 VLAN 动态配置端口。

优点:

  1. 添加或移动用户时减少管理(更多前期工作)
  2. 集中通知未授权用户

以端口为中心的 VLAN

实际的网络是有层次的:static 的物理的接入层(physical Layer)

不同电脑在一个房间内,不同房间的不同电脑组成一个 VLAN。

路由器网关来处理。

以端口为中心的 VLAN 的优点

同一 VLAN 中的所有节点都连接到同一路由器接口,使管理更容易,因为:

  1. 通过路由器端口分配用户
  2. VLAN 易于管理
  3. 提供更高的安全性
  4. 数据包不会“泄漏”到其他域

接入和骨干连接

分为两类:

  1. 接入链路:通过一个 VLAN 报文
  2. 骨干链路:通过多个 VLAN 报文

访问连接

访问连接是仅作为一个 VLAN 成员的交换机上的连接。

此 VLAN 被称为端口的本机 VLAN,连接到端口的任何设备都完全不知道 VLAN 存在。

主干链路

  1. 主干链路能够支持多个 VLAN
  2. 主干链路通常用于将交换机连接到其他交换机或路由器。
  3. 交换机在快速以太网和千兆位以太网端口上都支持骨干链路。
  4. 也存在访问和骨干链接

一般 Trunk 就是 BackBone。

  1. Sa 和 Sb 上面连接使用单独的线,浪费
  2. 底下使用串行的线,不浪费端口
  1. 骨干是支持多个 VLAN 的点对点链接
  2. 骨干用于在两个实现 VLAN 的设备之间创建链接时节省端口
  3. 骨干链路不属于特定的 VLAN:充当交换机和路由器之间 VLAN 的通道。
  4. 可以将骨干链路配置为传输所有 VLAN 或有限数量的 VLAN。
  5. 但是,骨干链路可能具有本地 VLAN。
  6. 如果骨干线链路由于任何原因失败,则骨干线的本地 VLAN 是该骨干线使用的 VLAN。
  7. native VLAN 是不发送无标记的信息。

交换机 29xx 中的配置

  1. 在 Cisco 29xx 交换机上配置 VLAN 时,必须遵循以下准则:
    1. VLAN 的最大数量取决于交换机本身。
    2. VLAN 1 是出厂默认 VLAN 之一。(native VLAN 往往是 VLAN1,以及广播也是)
    3. VLAN 1 是默认的以太网 VLAN。
    4. 思科发现协议(CDP)和 VLAN 骨干协议(VTP)通告在 VLAN 1 上发送。
    5. 默认情况下,Catalyst 29xx IP 地址在 VLAN 1 广播域中。

VLAN 配置

步骤 1:创建 VLAN 所需的步骤。 如果需要,还可以配置 VLAN 名称。

1
2
3
Switch# vlan database
Switch(vlan)# vlan vlan_number
Switch(vlan)# exit

步骤 2:将 VLAN 分配给一个或多个接口:

1
Switch(config)# interface fastethernet 0/9 Switch(config-if)# switchport access vlan vlan_number

添加 VLAN 示例

1
2
3
4
5
6
7
8
9
10
11
12
cat2950#vlan database
cat2950(vlan)#vlan 9 name switchlab90
VLAN 9 added:
Name: switchlab90
cat2950(vlan)#?
VLAN database editing buffer manipulation commands:
abort Exit mode without applying the changes
apply Apply current changes and bump revision number
exit Apply changes, bump revision number, and exit mode
reset Abandon current changes and reread current database Adding a VLAN Example
cat2950(config)#interface fa 0/2
cat2950(config-if)# switchport access vlan 9

配置 VLAN

  1. Switch# show vlan [vlanid]

1
2
3
4
5
6
7
8
9
10
cat2950#sh vlan

VLAN Name Status Ports
---- ------------------------ ------------ ------------
1 Default active Fa0/1, Fa0/3
9 switchlab90 active Fa0/2
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active

剩下的是默认 VLAN

删除 VLAN

  1. 删除 VLAN 后,分配给该 VLAN 的所有端口都将变为非活动状态。 但是,端口将一直与删除的 VLAN 关联,直到分配给新的 VLAN。
  2. switch(vlan)# no vlan vlanid [name /vlan-name]
1
2
3
4
5
6
cat2950(vlan)#no vlan 9
Deleting VLAN 9...
cat2950(vlan)#exit
APPLY completed.
Exiting....
cat2950#

在局域网之间的路由

  1. 每个端口连接一个 VLAN,每个 IP 和一个 VLAN 连接
  2. 如下图,我们使用串口线,物理上是一个一个接口,划分成多个 IP 和子接口

对比如下:接入方式不同

子接口

  1. 物理上一个,划分成 Fa0/0.1、Fa0/0.2 和 Fa0/0.3
  2. 涉及到的是单臂路由

配置 VLAN 间路由

1
2
3
Router(config)#interface fastethernet port-number. subinterface-number # Step1:识别界面
Router(config-if)#encapsulation dot1q vlan-number #Step2:定义 VLAN 封装.(一般用 dot1q)
Router(config-if)#ip address ip-address subnet-mask #Step3:为接口分配 IP 地址

配置 VLAN 间路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sydney(config)#interface FastEthernet 0/0
Sydney(config-if)#full duplex 全双工
Sydney(config-if)#no shut
Sydney(config-if)#interface FastEthernet 0/0.1

Sydney(config-subif)#encapsulation 802.1q 1
Sydney(config-subif)#ip address 192.168.1.1 255.255.255.0
Sydney(config-if)#interface FastEthernet 0/0.2

Sydney(config-subif)#encapsulation 802.1q 20
Sydney(config-subif)#ip address 192.168.2.1 255.255.255.0
Sydney(config-if)#interface FastEthernet 0/0.3

Sydney(config-subif)#encapsulation 802.1q 30
Sydney(config-subif)#ip address 192.168.3.1 255.255.255.0
  1. 如果是 Trunk Link:应该使用交叉线,而不是直通线
  2. 如果是 Access Link:直通线

VLAN 题目备注

  1. 同一 VLAN 中的两台主机可以跨越多台交换机
  2. 必须是第三层及以上的交换机才能用来构建 VLAN