在 VLAN 这篇文章中知道,设置 VLAN 目的是隔离大型的广播域,将其分成很小的广播域,从而更好的管理。但也就带来了一些问题:如流量不能在不同的 VLAN 间通信。

而为了解决这个问题,可以采用如下技术:

  • 添加路由器(单臂路由)
  • 三层交换机(SVI)

单臂路由

首先可以增加一个路由器,采用如下的拓扑结构:

但这同样有一个问题,就是一个 VLAN 需要占用一个路由器上的接口,那么,能不能向交换机的 Trunk 口那样,在一个接口上跑所有的 VLAN 呢。

答案是肯定的,就是通过子接口的概念,将一个物理接口虚拟成多个子接口,并且为每个子接口配置一个 VLAN。这一技术也称为单臂路由。

简单来说,单臂路由是指在路由器的一个接口上通过配置子接口(逻辑接口)的方式,实现原来相互隔离不同的 VLAN 之间的互联互通。

配置单臂路由:

#  Switch
Switch>en
Switch#conf t
Switch(config)#vlan 10,20
Switch(config)#int e 0/0
Switch(config-if)#switchport mode ac
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config)#int e 0/1
Switch(config-if)#switchport access vlan 20
Switch(config-if)#no shu
Switch(config-if)#int e 0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shu # PC: R1
Router>en
Router#conf t
Router(config)#no ip routing
Router(config)#ho R1
R1(config)#ip default-gateway 192.168.10.254
R1(config)#int e 0/0
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no shu
R1(config-if)#do wr # PC: R2
Router>en
Router#conf t
Router(config)#no ip routing
Router(config)#ho R2
R2(config)#ip default-gateway 192.168.20.254
R2(config)#int e 0/0
R2(config-if)#ip add 192.168.20.1 255.255.255.0
R2(config-if)#no shu
R2(config-if)#do wr # Router: r4
Router>en
Router#conf t
Router(config)#ho r
r(config)#int e0/0
r(config)#no shu # configure sub-interface 10
r(config)#int e0/0.10
# config vlan for this sub-interface
r(config-subif)#encapsulation dot1Q 10
r(config-subif)#ip add 192.168.10.254 255.255.255.0
r(config-subif)#no shu # configure sub-interface 20
r(config)#int e0/0.20
r(config-subif)#encapsulation dot1Q 20
r(config-subif)#ip add 192.168.20.254 255.255.255.0
r(config-subif)#no shu

分析一下通讯过程:

R1 要给 R2 发送 ICMP,发现没有对应网关的 MAC 地址,将包搁置。发送 ARP 请求网关的 MAC 地址

Switch 学习后进行泛洪,R4 收到 ARP 请求,并做出 ARP 应答。

Switch 再次学习来自 R4 的 Arp 应答,并直接转发给 R1.

R1 解封装 ARP 应答包,并且将搁置的 ICMP 包添加 MAC 地址后,发出。

Switch 收到 ICMP 后,之间转发给 R4,R4 解封装发现 三层 IP 是给自己能到达网段的,进行封包:

4 层:ICMP 报头

3 层:IP 报头,源 IP 192.168.10.1/24 目的 IP 192.168.20.1/24

2 层: 源 MAC:aabb.cc00.4000 目的 MAC:不清楚

将包搁置,发送 Arp 请求 获取 R2 的MAC 地址

Switch 学习发来的 ARP 请求,并泛洪。R2 收到 Arp 请求做出应答,Switch 再次学习,然后直接转发给 R1。

R1 解析 ARP 应答,并将搁置的 ICMP 包发给 R2。

R2 又会做出 ICMP 应答,Switch 之间转发给 R1,R1 解封装发现 ICMP 的应答报文的目的 IP 是 R1,接着重新封装转发给 Switch。

Switch 再直接转发给 R1。

综上:我们可以发现一个有趣的现象,在 R4 和 交换机的链路上可以看到有双重的 Icmp 的 reqeust 和 reply 如下:

这里在解释一下两个 request 和 reply 的含义:

第一个 request 是:R1 发送 R4 (R4 是 R1 的网关) 并且应该带有 VLANID = 10 的 Tag,如下

第二个 request 是:R4 发给 R2 的 ICMP 包,并且应该带有 VLANID = 20 的 TAG,因为是从虚拟的子接口 Vlan20 发出,如下

第一个 reply 是:R2 发给 R4,带有 VLANID = 20 的 Tag,如下

第二个 replay 是:R4 发给 R1 的,带有 VLANID = 10 的 TAG,如下

因此我们可以推测出在 R4 内部,进行了 Tag 的去除和封装。

SVI(Switch Virtual Interface)

另一种方式就是通过三层交换机,来达到路由转发的功能。

三层交换机,具有二层和三层转发的功能。

网关接口,用于三层交换机跨 VLAN 间路由,具体可以通过 interface vlan 接口配置命令来创建 svi,然后实现路由功能

SVI 配置:

# switch
Switch(config)#ip routing # 开启路由功能
Switch(config)#no ip cef # 关闭cef(这个属于模拟器的bug,真实环境下不用) # 创建 vlan
Switch(config)# vlan 10,20
# 配置模式
Switch(config-vlan)#int e 0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#no shutdown
Switch(config-vlan)#int e 0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#no shutdown # 创建SVI接口
Switch(config)#interface vlan 10
Switch(config-if)#no sh
Switch(config-if)#ip address 192.168.1.254 255.255.255.0 Switch(config)#interface vlan 20
Switch(config-if)#no sh
Switch(config-if)#ip address 192.168.2.254 255.255.255.0 # PC
# 关闭路由功能
PC1(config)#no ip routing # 配置 ip
PC1(config)#interface e0/0
PC1(config-if)#no sh
PC1(config-if)#ip address 192.168.1.1 255.255.255.0 # PC 配置网关
PC1(config)#ip default-gateway 192.168.1.254

由于是三层交换机,192.168.1.0/24 和 192.168.2.0/24 两个网段直接就可以互通了,不需要再去配置路由表,我们可以看一下路由表:

对三层交换机内部的讲解:

由于 e0/0 口是 access 口,所以会被打上相应 vlan ID=10 的 tag。

由于是三层交换机,通过 SVI 模拟路由器,也就是说明进行的是三层通信,可是传送过来的数据包中包含 tag,

也就说明存在一个能把 tag 拆掉的 access 口才能通信,所以推测这个口是虚拟的 Vlan 10,同时 Vlan 也是通往新网段的网关。

EtherChannel

有时交换机的带宽无法满足转发流量的需要,就会出现阻塞的情况。一般会升级接口的带宽,但有时往往特别大型的流量不是时常发生。手动的升级接口麻烦,甚至有些浪费。为了解决这个问题,EtherChannel 接口出现了,它可以将多个物理接口捆绑在一起同时进行流量的转发,在流量较大时增加连接接口的数量,从链路视角看,就是同时连接多根链路,实现并行传输。

同时也出现了一个问题,在之前介绍交换机 STP 的内容时,了解交换机内部通过 STP 来防止环路,会将某些接口 Block。当如果想用这种并行的链路连接,就必须形成环路。

最后为了保证在 STP 不失效的情况下,应用并行链路,就会采用 EtherChannel 这种配置。会将所有绑定的接口视为同一个接口,这样 STP 还能正常的运行。

但想要实现 Port-channel 接口,需要保证所有的接口配置完全相同:

  1. 物理接口支持 Etherchanbnel
  2. 物理接口保持一致
  3. 绑定的数量一致
  4. 接口模式一样(如二层接口,三层接口)
  5. 接口类型必须相同(带宽)
  6. 双工,
  7. 工作模式,trunk,switch
  8. vlan 相同

配置了 EtherChannel 的接口,具有如下优点:

  • 逻辑聚合接口
  • 高带宽
  • 负载均衡
  • 为 STP 提供一个逻辑接口
  • 冗余(在断开下,仍能保持运行)

配置 EtherChannel

配置 EtherChannel 有两种方式:

  1. 手动

    • 手动将交换机上多个端口,捆绑成一个
  2. 自动学习(PAGP思科私有,LACP公有)

LACP 的模式:

  • Passive:等待主动的接口,建立连接
  • Active:主动发送消息,和另一端的接口建立连接

下面是 LACP 的建立原则:

# bind interfaces
s1(config)#interface range ethernet 0/0 - 1
s1(config)#shutdown
s1(config)#channel-group 1 mode active
s1(config)#no shutdown
# apply configuration
s1(config)#interface port-channel 1
s1(config)#switchport trunk encapsulation dot1q
s1(config)#switchport mode trunk s1#show ip int bri
s1#show etherchannel summary # bind interfaces
s2(config)#interface range ethernet 0/0 - 1
s2(config)#shutdown
s2(config)#channel-group 1 mode active
s2(config)#no shutdown
# apply configuration
s2(config)#interface port-channel 1
s2(config)#switchport trunk encapsulation dot1q
s2(config)#switchport mode trunk s2#show ip int bri
s2#show etherchannel summary

总结

这篇文章中主要提到了三种技术:

  • 单臂路由和 SVI 是为了解决 VLAN 在不同网段间通信的问题。

  • EtherChannel 是为了解决物理端口带宽不够时,如果去调整的方案。

在不同网段使用 VLAN 通信 - SVI,单臂路由的更多相关文章

  1. 跨Vlan通信:单臂路由,三层交换机

    实验涉及命令以及知识补充(涉及Vlan通过的以太网口需要设置为Trunk口) 单臂路由 父接口 no ip address :删除实现单臂路由接口的IP no shutdown 虚拟子接口 R2(co ...

  2. 实现不同VLAN间的通信(单臂路由和链路聚合)

    单臂路由与链路聚合 1.单臂路由 1.1 链路类型 1.2 子接口 2. 链路捆绑 1.单臂路由 是指在路由器的一个接口上通过配置子接口,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通. ...

  3. 交换知识 VLAN VTP STP 单臂路由

    第1章 交换基础 1.1 园区网分层结构 层次 作用 出口层 广域网接入 出口策略 带宽控制 核心层 高速转发 服务器接入 路由选择 汇聚层 流量汇聚 链路冗余 设备冗余 路由选择 接入层 用户接入 ...

  4. 小知识get:利用单臂路由实现不同vlan间路由

    一.单臂路由概述 1.1.单臂路由实现不同vlan间通信 链路类型 交换机连接主机的端口为access链路 交换机连接路由器的端口为Trunk链路 子接口 路由器的物理接口可以被划分成多个逻辑接口 每 ...

  5. 单臂路由&链路捆绑

    单臂路由&链路捆绑 目录 一.单臂路由 1.1.单臂路由作用 1.2.单臂路由实现不同VLAN间通信的原理 二.单臂路由相关命令配置 三.链路捆绑 3.1.以太网链路聚合原理 3.2.命令配置 ...

  6. 单臂路由与三层交换机实现VLAN通信

    不同VLAN之间相互通信的两种方式 (单臂路由.三层交换) 试验环境:东郊二楼第三机房 试验设备:Catalyst 2950-24(SW3)                   Cisco 2611( ...

  7. 三层交换单臂路由vlan间通信综合实验之降龙要点[转]

    单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1,    20.1,  30.1,   40,1  ,50,1  /24 网关10.2 ...

  8. 三层交换单臂路由vlan间通信综合实验之降龙要点--Lee

    单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1,    20.1,  30.1,   40,1  ,50,1  /24 网关10.2 ...

  9. VLAN之间单臂路由通信

    实验目的 理解单臂路由的应用场景 掌握路由器子接口的配置方法 掌握子接口封装VLAN的配置方法 理解单臂路由的工作原理 实验原理 单臂路由解决用户需要跨越VLAN实现通信的情况. 原理:通过一台路由器 ...

随机推荐

  1. php基础学习中认为重点的知识

    <?php ... ?> 简写成 <? ... ?> 服务器中可以通过php.ini中配置short_open_tag为on来实现 php语句必须以分号  ; 结尾 .  连接 ...

  2. Hadoop基础(二):从Hadoop框架讨论大数据生态

    1 Hadoop是什么 2 Hadoop三大发行版本 Hadoop三大发行版本:Apache.Cloudera.Hortonworks. Apache版本最原始(最基础)的版本,对于入门学习最好. C ...

  3. JVM 专题十二:运行时数据区(七)对象的实例化内存布局与访问定位

    1. 对象的实例化 1.1 创建对象的方式 new 最常见的方式 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法 Class的newInstance() ...

  4. unity-热更-InjectFix(一)

    1 C#热更新预备知识 1.1 mono.cecil注入 使用Mono.Cecil实现IL代码注入 注入之后修改dll,新增mdb文件: 注意,待了解参数注释打开会报错: 1.2 InjectFix ...

  5. Java多线程详解总结

    一.基本概念 程序(program): 是为完成特定任务.用某种语言编写的一组指令的集合.即指一 段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是正在运行的一个程序.是一个 ...

  6. 【Python学习笔记六】获取百度搜索结果以及百度返回“百度安全验证”问题解决

    1.获取百度搜索结果页面主要是修改百度搜索url中的参数实现,例如查询的关键字为wd: 举例:https://www.baidu.com/s?wd=python",这样就可以查询到‘pyth ...

  7. IE11 CSS hack

    IE11 怎么做 CSS hack ? 很简单. @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { ...

  8. [并发编程] -- 内存模型(针对JSR-133内存模型)篇

    并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信 消息传递程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 2) ...

  9. finalize()和四种引用的一点思考

    一次对ThreadLocal的学习引发的思考 ThreadLocal对Entry的引用是弱引用,于是联想到四种引用的生命周期. 强引用,不会进行垃圾回收 软引用,JVM内存不够,进行回收 弱引用,下次 ...

  10. 理解Spring(二):AOP 的概念与实现原理

    目录 什么是 AOP AOP 的基本术语 Spring AOP 的简单应用 Spring AOP 与动态代理 Spring AOP 的实现原理(源码分析) 扩展:为什么 JDK 动态代理要求目标类必须 ...