帧中继的简介
广域网的引入与接入方式
我们经过十个实验粗略的了解局域网中相关的协议与一些需求,较为深入的学习了一番部分协议的原理与配置方式,这些都是在一个局域网的范围之内,我们在第二节实验中提到局域网只是一个 50-100 米的网络范围而已。
随着公司业务的不断扩展,规模的不断扩大,我们小型的局域网会扩展成园区网,园区网又会扩展成跨区域的网络。
例如实验楼从原来的 10 人的小公司发展到后期在 3 个中心城市都有分部,此时不同分布之间需要相互通信,相互共享数据等等的一些需求,而局域网的覆盖范围不可能完成不同城市之间的通信,所以必须得接入广域网 WAN 了。
image.png
WAN 广域网便是由 ISP 网络服务提供商来建立,由他们来部署、建立如此大范围的网络,世界上最大的广域网便是 Internet 了。
回到我们刚刚的需求,我们需要让分布在不同城市的连个局域网互相连接来实现通信只有接入广域网了,而接入广域网的方式有这样几种方式:
专线接入
电路交换
分组交换
VPN 接入
无线接入等等
最初的方法便是专线接入,这是一种最为简单的方式。也就是我们向 ISP 租用一条专用的线路,只给我自己用,然后一根线就从成都拉到了北京,将这两个局域网络连接起来,虽然是永久的专线,但是这样的专用线路代价太高了,成本也高,同时若是我在多个城市都需要使用专线来连接,这样我的出口设备上的地址与端口也是十分浪费的。
image.png
随着技术的不断发展,我们发现电话网的覆盖非常的大,这么好的资源浪费不用去自己布线,也就出现了电路交换,使用 PSTN 电话网,随之出现有调制解调器,猫 Modern 等等这样的设备出现。
image.png
随着网络的普及,发现简单的使用电话网来建立通信也是十分麻烦的事情,为了保证通信的质量,就像是在内部为其建立了一条临时的专线一样,在该线路使用的时候两端的用户独占线路设备,这样的资源利用率十分的低下,由此便产生了分组交换与虚电路,将一个数据包拆分成很多个小的数据包来发送,这样数据的重发和发送效率上便提升了不少。
所谓的虚电路便是建立一条逻辑上的通道,靠软件建立,该电路可以供多个用户使用。
到后期更是出现了 VPN 与 无线相关的技术。
在广域网的初步接触中我们会更多的看到其在网络的物理层与数据链路层上所使用的功能。
专用线路与帧中继
在早期甚至时至今日都有很多企业都在沿用当时所使用的专线或者帧中继。
在专线中最为盛行的便是使用 HDLC 与 PPP 协议,两个位于数据链路层的协议:
HDLC:High-Level Data Link Control,主要用于链路上传输二层协议,该协议由 SDLC 进化而来,只支持单链路。
PPP:Point-to-Point Protocol,点对点的数据链路层协议,建立点到点之间的连接,基本上以 PPP 协议为主要使用对象。
配置过家里的路由器的同学会感觉 PPP 很数据,是不是在哪里见过,在路由器中有 PPPOE (PPP over Ethernet)来拨号建立连接,PPPOE 便是 PPP 协议的一个扩展,使用该协议来完成家里与 ISP 的连接,从而接入广域网。
而在分组交换出现之后最为盛行的便是使用帧中继了。昂贵的专用租用 WAN 线路的一个替代方案是帧中继,该协议是一种高效的 WAN 协议,运行于物理层与数据链路层上,相对与专用线路的永久带宽,帧中继的方式更加的灵活,低廉,高效,虽然随着后来出现的 DSL、VPN、MPLS 的出现,帧中继的方案不再兴盛,但是在部分地区还是被广泛的使用。
帧中继的工作
帧中继的运行是使用虚电路,所谓的虚电路便是端到端之间并没有直接的电路连接,而这条通信的线路是逻辑上的连接。
对于虚电路的建立方式有两种:
交换虚电路(SVC,switched virtual circuit),这种方式是一种临时的连接,在建立连接传输数据之后便停止了,若是需要再次通信需要重新建立连接。
永久虚电路(PVC,Permanent Virtual Circuits),这种方式是由供应商配置好连接,只要有数据传输就可以之间传输,不需要不断的重新建立连接。
我们可以通过这样一篇文章简单的理解他们之间的不同。
这是两个局域网点之间的连接建立,而一旦涉及到多个站点的连接时,便需要拓扑图来规划直接的结构了,主要的结构分为三种:
星型(Hub and spoke)
全网连接(Full Mesh)
部分连接(partial Mesh)
而我们在最开始局域网规划中的拓扑结构类似的优缺点,全网连接的成本太高,所以更多会倾向于星型与部分连接的使用。
在数据的封装上也有所不同,在帧中继中不是对于 IP 与 MAC 地址的对应,而是 IP 地址与 DLCI 的对应,该值表示本地设备和交换机之间的虚拟连接。通过该值来识别建立的虚拟连接,data link connection identifier 便是 DLCI 的全称,他是帧中继(Frame Relay)数据包中最重要的 10 bit 数据标识位了。我们可以通过这样一篇文章来了解帧中继的数据包格式,以及每个表示位的作用。
而这样的端口映射又分为:
静态映射
动态映射
静态的端口映射需要人为手工的配置端口与 DLCI 之间的关系,而动态的端口映射是通过逆向的 ARP 协议来自动学习 IP 地址与 MAC 地址、DLCI 的映射关系。
往往中间的中继云都一块很复杂的结构,一般由运营商提供无需我们配置,我们只需要配置本地路由端口上的部分配置即可实现不同城市之间的局域网的连接。
下面我们就通过这样一个实验来体验帧中继所带来的功能。
帧中继的配置
实验目的:配置实现 Frame Relay
实验材料:四台路由器
实验方法:
拖动四台路由器
配置路由器名字与连接线路
配置路由器的端口地址
配置中继设备的功能
配置各分散地区的路由
1.我们通过三台路由器模拟分散在不同城市的出口路由,通过一台路由器来模拟中继云结构的功能(当然也可以直接使用 Frame-Relay-Switch 的设备,但是这样就体验不到配置的过程了,下文会介绍)。由此搭建出这样的拓扑图:
image.png
2.首先配置各个端口的 IP 地址:
#Router-guangzhou config code
Router-guangzhou#conf t
Router-guangzhou(config)#int s2/0
Router-guangzhou(config-if)#ip add 192.168.1.1 255.255.255.0
Router-guangzhou(config-if)#no sh
#Router-shanghai config code
Router-shanghai#conf t
Router-shanghai(config)#int s2/1
Router-shanghai(config-if)#ip add 192.168.1.2 255.255.255.0
Router-shanghai(config-if)#no sh
#Router-beijing config code
Router-beijing#conf t
Router-beijing(config)#
Router-beijing(config)#int s2/2
Router-beijing(config-if)#ip add 192.168.1.3 255.255.255.0
Router-beijing(config-if)#no sh
3.配置 Frame-Relay-Switch 设备的中继功能:
#Frame Switch config code
#进入全局配置模式
Frame-Switch#conf t
#开启帧中继模式
Frame-Switch(config)#frame-relay switching
#配置与广州连接的串口
Frame-Switch(config)#int s2/0
#确保没有配置 IP 地址
Frame-Switch(config-if)#no ip add
#使用帧中继的数据封装
Frame-Switch(config-if)#encapsulation frame-relay
#配置时钟,在 GNS3 中可以不配置
Frame-Switch(config-if)#clock rate threshold 64000
#配置该接口的类型
Frame-Switch(config-if)#frame-relay intf-type dce
#将进入该接口数据的 DLCI 与出口的接口以及对应的 DLCI 关联起来,这是到上海的虚电路
Frame-Switch(config-if)#frame-relay route 102 interface s2/1 202
#这是广州到北京的虚电路,将进入该接口数据的 DLCI 与出口的接口以及对应的 DLCI 关联起来
Frame-Switch(config-if)#frame-relay route 103 interface s2/2 203
Frame-Switch(config-if)#no sh
Frame-Switch(config-if)#exit
#配置完了与广州连接的端口,便配置与上海连接端口的数据走向
Frame-Switch(config)#int s2/1
Frame-Switch(config-if)#no ip add
Frame-Switch(config-if)#encap frame-relay
Frame-Switch(config-if)#clock rate threshold 64000
Frame-Switch(config-if)#frame-relay intf-type dce
#进入该端口数据的上海 DLCI 与其专用线路到广州的出端口以及 DLCI 关联起来
Frame-Switch(config-if)#frame-relay route 202 interface s2/0 102
Frame-Switch(config-if)#no sh
Frame-Switch(config-if)#exit
#配置了上海到广州的虚电路便配置北京到广州的虚电路
Frame-Switch(config)#int s2/2
Frame-Switch(config-if)#no ip add
Frame-Switch(config-if)#encap frame-relay
Frame-Switch(config-if)#clock rate threshold 64000
Frame-Switch(config-if)#frame-relay intf-type dce
#进入该端口数据的北京 DLCI 与其专用线路到广州的出端口以及 DLCI 关联起来
Frame-Switch(config-if)#frame-relay route 203 interface s2/0 103
Frame-Switch(config-if)#no sh
如此我们便配置好了在 Frame-relay 上面的配置信息。从配置上设备便知道从那个端口进来的数据并且当 DLCI 为多少时数据该从哪个端口出去。
我们可以通过这个命令来查看我们配置的对应关系是否与我们的拓扑图匹配:
Frame-Switch#show frame-relay route
image.png
检查无误之后我们就配置各个地区的路由端口了。
4.配置各个出口路由上的端口映射:
#只需要在我们刚刚配置 IP 的端口上配置该命令即可
Router-guangzhou(config-if)#encap frame-relay
Router-shang'hai(config-if)#encap frame-relay
Router-beijing(config-if)#encap frame-relay
此时我们再去查看 Frame Switch 上的 show frame-relay route 信息,我们会发现所有的端口都是处于 Active 的状态。
我们可以测试一下使用广州的 Router 此时是否能够 ping 同 上海和北京的 Router 了呢?
image.png
如此我们便实现了跨区域的公司内网互联。
这边是帧中继,Router 系统默认开启的是动态端口映射的模式,可以自动学习端口的对应关系。使用的技术便是 inverse ARP 逆向ARP,这样便可以动态的自动学习端口对的 IP 与 DLCI 的关系。
我们可以通过这个命令来查看此时本地中学到的 DLCI 的对应关系:
Router-guangzhou#show frame-relay map
image.png
从图中我们可以看到消息都是动态学习到的,我们当然也可配置成静态的:
#进入全局模式
Router-guangzhou#conf t
#配置与 Frame Switch 连接的端口
Router-guangzhou(config)#int s2/0
#关闭逆向 ARP 的功能
Router-guangzhou(config-if)#no frame-relay inverse-arp
#配置 DLCI 的对应关系,通向上海的
Router-guangzhou(config-if)#frame-relay map ip 192.168.1.2 102 broadcast
#配置 DLCI 的对应关系,通向北京的
Router-guangzhou(config-if)#frame-relay map ip 192.168.1.3 103 broadcast
如此我们便配置好了 DLCI 的对应关系,我们可以再次使用 show frame-relay map 来验证:
image.png
而且与其他地区同样可以通信。
可以发现我们实现的其实是星型拓扑结构,这样的信息传输使得上海与北京是无法通信的,有两种解决方案:
建立一条上海到北京的线路
通过广州中转到北京
image.png
而若是新建一条上海与北京的线路与上述的方法相同,这里不在做过多的解释,若是需要通过广州中转过去只需要在上海的出口路由中添加到北京的 IP 地址与 DLCI 的端口映射,同时在北京中添加到上海的映射即可,链路毕竟是双向的嘛:
#配置上海的出口路由
Router-shanghai#conf t
Router-shanghai(config)#int s2/1
#添加本地上通往北京 IP 地址的 DLCI 映射关系
Router-shanghai(config-if)#frame-relay map ip 192.168.1.3 202 broadcast
#配置北京的出口路由
Router-beijing#conf t
Router-beijing(config)#int s2/2
#配置北京通往上海的 IP 与 DLCI 的映射,否则 ICMP 数据包过来了回不去,同样不通。
Router-beijing(config-if)#frame-relay map ip 192.168.1.2 203 broadcast
此时我们可以再次尝试配置使用上海的设备去 ping 北京的设备是完全没有问题的:
image.png
还记得我们在配置静态映射的时候后面添加了可选参数 broadcast 吗?还有在看 frame-relay map 中的信息时也是默认使用了该参数。
原因是帧中继属于 non-broadcast multiple access network 非广播型多路访问技术,简单来说就是该协议本来是不支持广播的,只有我们添加了该参数之后才会支持广播,广播都不支持更别说组播了,这样的话例如 RIP、OSPF 等等这样需要通过组播信息来通信的协议便不支持了。
简单的例子就是上海的设备不能与北京的内部其他网段的设备通信了,这样的情况是无法忍受的,所以使用了该参数,我们可以尝试一番,在北京中开启一个环回接口用于模拟内网中的其他网段,然后在三个地区的设备上开启 OSPF 进程并发布网段:
#还记得如何设置换回端口、开启 RIP 发布网段吗
#配置北京的设备上环回接口
Router-beijing(config)#int lo 0
Router-beijing(config-if)#ip add 10.3.1.1 255.255.255.0
Router-beijing(config-if)#no sh
#开启 RIP 进程,发布网段
Router-beijing(config)#router rip
Router-beijing(config-router)#netwo
Router-beijing(config-router)#network 192.168.1.0
Router-beijing(config-router)#network 10.3.1.0
#开启广州的 RIP 进程
Router-guangzhou#config t
Router-guangzhou(config)#router rip
Router-guangzhou(config-router)#net 192.168.1.0
上海做同样的配置,然后我们使用 show ip route 便可以看到多了一条 RIP 的路由信息,并且此时我们可以在上海 Ping 同 10.3.1.0 网段了:
image.png
同样若是我们在配置静态的 DLCI 映射关系时不适用 broadcast 可选项我们是学习不到 RIP 的路由信息的,因为不支持广播了嘛:
Router-guangzhou(config)#int s2/0
Router-guangzhou(config-if)#frame-relay map ip 192.168.1.2 102
Router-guangzhou(config-if)#frame-relay map ip 192.168.1.3 103
Router-guangzhou(config-if)#end
修改广州设备上的映射配置:
image.png
同样的方法关闭上海的广播配置,我们在广州的特权模式中使用 clear ip route *,立即清理一下路由表,就会发现再也学不到 10.3.1.0 网段了。
当然 frame-relay 也是可以运行 OSPF 协议的,只是比 RIP 超微麻烦一点点,因为默认在选举的时候发送的 Hello 数据包是通过组播的方式发送。
这边是帧中继的简单配置了。
网友评论