网络间的互联 - IP路由基础
前言
以太网交换机工作在数据链路层,用于在网络内进行数据转发。而企业网络的拓扑结构一般会比较复杂,不同的部门,或者总部和分支可能出在不同的网路欧中,此时就需要使用路由器来连接不同的网络,实现网络之间的数据转发。
学习目标:
掌握路由器的基本工作原理;
掌握路由器选择最优路由的方法。
自治系统
图片.png自治系统(AS):由同一个管理机构管理,使用统一路由策略的路由器的集合。
一般地,我们可以把一个企业网络认为是一个自治系统AS(Autonomous System)。根据RFC 1030定义,自治系统是由一个单一实体关系啊的网络,这个实体可以是一个互联网服务提供商,或一个大型组织机构。自治系统内部遵循一个单一且明确的路由策略。最初,自治系统内部考虑运行单个路由协议;然而,随着网络的发展,一个自治系统内现在也可以支持同时运行多中路由协议。
我们做IDC,那么这个IDC就是一个AS。
LAN 和 广播域
图片.png一个AS通常由多个不同的局域网组成。以企业网络为例,各个部门可以属于不同的局域网,或者各个分支机构和总部也可以属于不同的局域网。是局域网内的主机可以通过交换机来实现相互通信。不同局域网之间的主机想要互相通信,可以铜鼓路由器来实现。
路由器工作在网络层,隔离了广播域,并可以作为每个局域网的网关,发现到达目的网络的最优路径,最终实现报文在不同网络间的转发。
广播域:
广播是一种信息的传播方式,指网络中的某一设备同时向网络中所有的其他设备发送数据,这个数据所能广播到的范围即是广播域(Broadcast Domain)。
简单地说广播域就是指网络中所有能接受到同样广播消息的设备的集合。
广播域是基于第二层。 ARP广播就可以做到二层广播。ARP request不能通过路由器(除了路由器做ARP 代理),所以就隔离了广播域。
哪些协议可以实现广播?
https://segmentfault.com/q/1010000016456785
此例中,RTA和RTB把整个网络分成了三个不同的局域网,每个局域网为一个广播域。LAN1内部的主机直接可以通过交换机实现相互通信,LAN2内部的主机之间也是如此。但是,LAN1内部的主机与LAN2内部的主机之间则必须要通过路由器才能实现互相通信。
划分VLAN是在三层设备上面划分的,VLAN的网关是存在于三层设备,可以叫做网关设备。
核心层交换机才是三层设备,如果没有核心层交换机,那么网关设备就是路由器,划分VLAN就是在路由器中划分了。
路由选择
图片.png路由器负责为数据包选择一条最有路径,并且进行转发。
路由器接收到数据包之后,会根据数据包中的目的地址选择一条最优的路径,并将数据包转发到下一个路由器,路径上最后的路由器负责将数据包送交目的主机。数据包在网络上的传输就好像是体育运动中的接力赛一样,每一个路由器负责将数据包按照最优的路径向下一跳路由器进行转发,通过多个路由器一站一站的接力,最终将数据包通过最优路径转发到目的地。当然有时候由于实施了一些特别的路由策略,数据包通过的路径可能并是最佳的。
路由器能够决定数据报文的转发路径。如果多条路径可以到达目的地,则路由器会通过进行计算来决定最佳下一条。计算的原则会随实际使用的路由协议不同而不同。
IP路由表
图片.png路由表中包含了路由器可以到达的目的网络。目的网络在路由表中不存在数据包会被丢弃。
路由器转发数据包的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都知名了数据包要到达某网络或某主机应通过路由器的那个物理接口发送,以及可以到达路径的哪个下一个路由器,或者不再经过别的路由器而直接可以到达目的地。
路由表中包含了下列关键项:
Destinations: 目的地址,用来标识IP包的目的地址或目的网络。
Mask: 网络掩码。在IP编址课程中已经介绍了网络掩码的结构和作用。同样,在路由表中网络掩码也具有重要的意义。IP地址和网络掩码进行『逻辑与』便可得到相应的网段信息。
如本例:8.0.0.0/8
。网络掩码的另一个作用还表现在当路由表中有多条目的地址相同的路由信息时,路由器将选择其掩码最长的一项作为匹配项。
Interface: 输出接口。指明IP包将从该路由器的哪个接口转发出去。
NextHop:指明IP包所经过的下一个路由器的接口地址(就是IP地址)。
路由表中的优先级,度量值等其他的几个字段我们将在以后进行介绍。
Mac OS查看路由表:
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.10.10.1 UGSc 20 16 en0
10.10.10/24 link#4 UCS 1 0 en0
10.10.10.1/32 link#4 UCS 1 0 en0
10.10.10.1 bc:67:1c:40:3:f6 UHLWIir 21 14 en0 1193
10.10.10.104/32 link#4 UCS 0 0 en0
10.10.10.107 a8:6b:ad:6b:c4:a5 UHLWI 0 0 en0 820
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 54 2734893 lo0
169.254 link#4 UCS 0 0 en0
172.16.111/24 link#11 UC 1 0 vmnet1
192.168.220 link#12 UC 1 0 vmnet8
224.0.0/4 link#4 UmCS 2 0 en0
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 784 en0
255.255.255.255/32 link#4 UCS 0 0 en0
建立路由表
图片.png根据来源的不同,路由表中的路由通常可以分为下面三类:
1.链路层协议发现的路由(也称为接口路由或直连路由)。
2.由网络管理员手工配置的静态路由。
3.动态路由协议发现的路由。
最长匹配原则
图片.png路由表中如果有多个匹配目的网络的路由条目,则路由器会选择掩码最长的条目。
路由器在转发数据时,需要选择路由表中的最优路由。当数据报文到达路由器时,路由器首先提取报文的目的IP地址,然后查找路由表。
如上图所示,路由表中有两个表项到达目的网段10.1.1.0
,下一跳,地址都是20.1.1.2
,如果要将报文转发到网段10.1.1.1
,则10.1.1.0/30
符合最长匹配原则。
路由优先级
图片.pngOSPF,RIP都是IGP。
路由器可以通过多种不同协议学习到去往统一目的网络的路由,当这些路由都符合最长匹配原则时,必须决定哪个路由优先。
每个路由协议都有一个协议优先级(取值越小,优先级越高)。当有多个路由信息时,选择最高优先级的路由作为最佳路由。
如图所示,路由器通过两种路由协议学习到了网段10.1.1.0
的路由虽然RIP协议提供了一条看起来更加直连的路线,但是由于OSPF具有更高的优先级,因而成为优选路由,并被加入路由表中。
路由度量
图片.png如果路由器无法用优先级来判断最优路由,则只是用度量值(metric)来决定需要加入路由表的路由。
一些常用的度量值有:跳数,带宽,时延,代价,负载,可靠性等。
跳数指的是到达目的地所通过的路由器数目。
带宽是指链路的容量,告诉链路开销(度量值)较小。
metric值越小,路由越有限;因此图中metric=1+1=2的路由是达到目的地的最优路由,其表项可以在路由表中找到。
路由器转发路由包
图片.png路由器需要知道下一跳和出接口才能将数据转发出去。
路由器收到一个数据包之后,会检查其目的IP地址,然后查找路由表。查找到匹配的路由表项之后,路由器会更具该表项所指示的出接口信息和下一跳信息将数据包转发出去。
总结:
1.路由器选择最优路由的顺序是什么?
路由器在选择最优路由时,会首先比较相同路由的优先级;如果优先级相同,再比较metric值。如果metric值也相同,多条相同的路由将实现等价负载分担。
2.Preference字段在路由表中代表了路由优先级。设备厂商会在各自的产品中为不同的路由协议规定不同的优先级。