VLAN---背景、原理、实验2(vlan间通信)

32 篇文章 61 订阅
29 篇文章 0 订阅

一、知识背景

1、子接口技术

子接口(也称子端口)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。相对子接口而言,这个物理接口称为主接口。每个子接口从功能、作用上来说,与每个物理接口是没有任何区别的,它的出现打破了每个设备存在物理接口数量有限的局限性。在路由器中,一个子接口的取值范围是0~4096个,当然受主接口物理性能限制,实际中并无法完全达到4096个,数量越多,各子接口性能越差。

经典应用:在拥有多个VLAN的交换机和路由器上,通过配置子接口和802.1Q协议,实现VLAN间的通信,也称 “ 单臂路由”实验。

2、那么为什么会产生子接口技术呢

在VLAN虚拟局域网中,通常是一个物理接口对应一个 VLAN。在多个 VLAN 的网络上,无法使用单台路由器的一个物理接口实现 VLAN 间通信,同时路由器有其物理局限性,不可能带有大量的物理接口。

子接口的产生正是为了打破物理接口的局限性,它允许一个路由器的单个物理接口通过划分多个子接口的方式,实现多个VLAN间的路由和通信。

二、vlan间通信原理(https://blog.csdn.net/pwc1996/article/details/50589248

1、单臂路由

前面的博客已经说过,两个vlan之间的通信需要依据路由,也就是说将两个vlan当作两个不同的网络,需要设置路由表才能在vlan之间进行通信。那么,先看下面这张图,vlan1和vlan2之间的通信需要借助路由器进行,如果说此时vlan1和vlan2位于两个不同的交换机上,那么两者之间的通信就是普通的设置路由就行(https://blog.csdn.net/weixin_40042248/article/details/112428503)。但是,此时只有一个交换机,这时路由器就需要有两个网卡分别连接vlan1和vlan2,如图所示,可是现实中路由器的物理端口有限,如果vlan过多这种利用物理端口分别连接肯定不可行,同样,在实验中,一个交换机和一个路由器之间设置两个物理端口进行连接并不简单,所以vlan间通信就采用了单臂路由,利用子端口技术进行。

为了实现单臂路由,路由器只需一个端口和交换机进行连接,并设置该端口的子端口对应的vlan信息,而交换机只需将连接路由器的端口设置vlan模式为trunk即可,通过单臂路由实现不同vlan通信,可以节省路由端口消耗,如下图所示。

 

2、三层交换机

三层交换机就是具有部分路由器功能的交换机,工作在OSI网络标准模型的第三层:网络层。三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。

VLAN技术在网络中的大量应用,而各个不同VLAN间的通信都要经过路由器来完成转发,随着网间互访的不断增加。单纯使用路由器来实现网间访问,不但由于端口数量有限,而且路由速度较慢,从而限制了网络的规模和访问速度。基于这种情况三层交换机便应运而生,三层交换机是为IP设计的,接口类型简单,拥有很强二层包处理能力,非常适用于大型局域网内的数据路由与交换,它既可以工作在协议第三层替代或部分完成传统路由器的功能,同时又具有几乎第二层交换的速度,且价格相对便宜些。

因此三层交换机具有路由功能,而且三层交换机的端口是vlan端口。

三层交换机实现vlan之间的通信主要分为两种结构:

  • 主机——三层交换机——主机
  • 主机——交换机——三层交换机——交换机——主机

如下图所示

主机三层交换机

三、基于Linux的vlan间通信实验

在上一篇文章中(https://blog.csdn.net/weixin_40042248/article/details/113869638),我讲解了vlan的划分,并进行了vlan的实验,本次实验在此基础之上来实现vlan间通信的实验。

1、单臂路由实验

在做vlan划分前,我们先单纯的做一个单臂路由实验,也就是不划分vlan,但是设置两个不同网络段,如果不借助路由器,不同网络段的主机虽然在同一个交换机下,但是仍然不能相互通信。所以,实验做一个单臂路由使得两个网络断的主机能够相互通信。具体的实验拓扑我们使用mininet进行仿真,如下图所示。

各个主机的ip地址设置如下所示。

由于采用的交换机是ovs,所以需要设置流表,将其作为普通的交换机使用,具体的设置命令如下所示。

root@yang-VirtualBox:/home/yang# ovs-ofctl add-flow s1 priority=0,actions=normal
root@yang-VirtualBox:/home/yang# ovs-ofctl dump-flows s1
# cookie=0x0, duration=12.735s, table=0, n_packets=3, n_bytes=210, priority=0 actions=NORMAL

ovs设置完成之后,在同一个网段下的主机之间就可以相互通信了。

接下来,需要对路由器设置子接口,设置之前,先讲解一下Linux如何为网卡设置子接口

创建网卡子接口,添加IP别名

ifconfig eth0:0  2.2.2.2/24

# 或者

ip addr add 2.2.2.2/24 dev eth0 label eth0:0

清除网卡子接口,删除IP别名

ifconfig eth0:1 down

# 或者

ip addr del 2.2.2.2/24 dev eth0 label eth0:0

接下来,对路由器r2进行子接口设置,子接口r2-eth0:1对应的ip地址和h1_1、h2_1的ip在同一个网段下;子接口r2-eth0:2对应的ip地址和h1_2、h2_2、h3_2的ip在同一个网段下。设置的命令如下。

mininet> r2 ip addr add 10.0.1.100/24 dev r2-eth0 label r2-eth0:1
mininet> r2 ip addr add 10.0.2.100/24 dev r2-eth0 label r2-eth0:2

 设置完成之后,查看r2的网卡信息如下所示。

 此时,如果想要不同的网络段下的主机之间可以相互通信,就需要设置下一跳,也就是设置路由信息,为各个主机设置的下一跳的命令如下所示。

mininet> h1_1 ip route add 10.0.2.0/24 via 10.0.1.100 dev h1_1-eth0
mininet> h2_1 ip route add 10.0.2.0/24 via 10.0.1.100 dev h2_1-eth0
mininet> h1_2 ip route add 10.0.1.0/24 via 10.0.2.100 dev h1_2-eth0
mininet> h2_2 ip route add 10.0.1.0/24 via 10.0.2.100 dev h2_2-eth0
mininet> h3_2 ip route add 10.0.1.0/24 via 10.0.2.100 dev h3_2-eth0

设置完成之后,此时各个主机之间就可以正常的进行通信了。

2、基于单臂路由的vlan间通信

由于,vlan技术产生主要是为了隔离广播域,抑制广播风暴,所以上述实验并没有设置vlan,所以并不能很好的说明vlan的广播域隔离的效果,所以接下来的实验将所5个主机设置两个不同的vlan,并观察vlan的广播域隔离效果,然后设置单臂路由进行vlan间通信。

首先,对未设置vlan的网络的广播域进行检验,在其中一个主机上用arping命令请求其他主机的ip,然后在其余主机上使用tcpdump命令监测网卡数据。具体的步骤如下。

在h1_2主机终端中输入命令arping 10.0.2.2,然后分别在h2_2,h3_2,h2_1主机监测各自的网卡收到的数据,如下图所示。可以看出,arp请求发出后,交换机并不能隔离广播域,所有主机都可以收到arp请求,但是只有对应的ip的一个主机对arp请求响应。

接下来,设置vlan进行广播域的隔离,将h1_1、h2_1主机归为vlan1,h1_2、h2_2、h3_3主机归为vlan2。在mininet终端中输入links命令查看端口之间的对应关系,根据对应关系设置vlan,命令如下。

root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth2 tag=1
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth3 tag=1
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth4 tag=2
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth5 tag=2
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth6 tag=2

此时,设置完成之后,两个vlan之间就属于了两个广播域,而且由于vlan不同,两个vlan之间就不能继续通信了。

为ovs和路由器连接的端口设置trunk模式,具体的端口模式的区别,见上一篇博客(https://blog.csdn.net/weixin_40042248/article/details/113869638)。trunk模式下,允许vlan1和vlan2的数据通过,设置的具体命令如下所示。

root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth1 VLAN_mode=trunk
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth1 trunk=1,2
root@yang-VirtualBox:/home/yang# ovs-vsctl show

接下来,需要对路由器的子接口进行802.1q协议的封装,封装完成后,两个vlan之间就可以完成相互通信了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楊木木8023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值