1、什么是路由?
路由器
在互联网中进行路由选择所使用的设备,或者说,实现路由的设备,我们称之为路由器。
- 路由器关键功能:
- 检查数据包的目的地
- 确定信息源
- 发现可能的路由
- 选择最佳路由
- 验证和维护路由信息
什么是路由
路由是指导IP报文发送的路径信息。
A查自己的路由表找到最佳路径 B 查自己的路由表找到最佳路径–>C -->目标网络。
2、路由的原理
路由表
路由器工作时依赖于路由表进行数据的转发。路由表犹如一张地图,它包含着去往各个目的的路径信息(路由条目)。每条信息至少应该包括下面3个内容:
- 目的网络——表明路由器可以到达的网络的地址,可理解为去哪里。
- 下一跳——通常情况下,下一跳(next hop)一般指向去往目的网络的下一个路由器的接口地址,该路由器称之为下一跳路由器。
- 出接口——表明数据包从本路由器的哪个接口发送出去。
[R1]dis ip routing-table
Route Flags: R – relay转发, D - download to fib来自路由表
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 14
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 D 0.0.0.0 NULL0
1.1.1.1/32 Direct 0 0 D 127.0.0.1 LoopBack1
12.0.0.0/24 Direct 0 0 D 12.0.0.1 GigabitEthernet
0/0/0
12.0.0.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/0
12.0.0.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/0
13.0.0.0/24 Direct 0 0 D 13.0.0.1 GigabitEthernet
0/0/1
13.0.0.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/1
13.0.0.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/1
23.0.0.0/24 OSPF 10 2 D 13.0.0.3 GigabitEthernet
0/0/1
OSPF 10 2 D 12.0.0.2 GigabitEthernet
路由表中包含了下列关键项:
•Destination:表示此路由的目的地址。用来标识IP包的目的地址或目的网络。
•Mask:表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。
•Proto:表示学习此路由的路由协议。
•Pre:表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将成为当前的最优路由。各协议路由优先级请参见路由协议的优先级。
•Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
根据目的地与该路由器是否直接相连,路由又可划分为:
- 直连路由:目的地所在网络与路由器直接相连。
- 间接路由:目的地所在网络与路由器非直接相连。
目标网络10.4.1.0,A查到这个地址下一跳10.1.2.2,出接口是E0,就从这里传送数据出去,到B路由器同样查路由表……
这个过程称为路由。
3、路由来源
静态和动态路由
分类 | 描述 |
---|---|
静态路由 | 由网络管理员手工指定的路由。当网络拓扑发生变化时,管理员需要手工更新静态路由。 |
动态路由 | 路由器使用路由协议从其他路由器那里获悉的路由。当网络拓扑发生变化时,路由器会更新路由信息。 |
[RTA] display ip routing-table
Routing Tables: Public
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost NextHop Interface
2.2.2.2/32 Static 60 0 10.1.2.2 Ethernet0
static表示静态路由,手工配置。
[R1]dis ip routing-table
Route Flags: R – relay转发, D - download to fib来自路由表
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 14
Destination/Mask Proto Pre Cost Flags NextHop Interface
23.0.0.0/24 OSPF 10 2 D 13.0.0.3 GigabitEthernet
0/0/1
OSPF 10 2 D 12.0.0.2 GigabitEthernet
OSPF是动态路由,D表示来自于路由表。
3.1、静态路由概述
静态路由是由管理员手工配置而生成的路由。
优点为:
- 使用简单,容易实现
- 可精确控制路由走向,对网络进行最优化调整
- 对设备性能要求较低,不额外占用链路带宽
缺点为:
- 网络是否通畅以及是否优化,完全取决于管理员的配置
- 网络规模扩大时,由于路由表项的增多,将增加配置的繁杂度以及管理员的工作量
- 网络拓扑发生变更时,不能自动适应,需要管理员参与修正
静态路由的应用:
- 静态路由在实际应用中相当广泛,通常应用于以下两个场景:
- 小规模、稳定的网络。
- 路径选择的控制,即控制某些目的网络的路由走向。
3.1.1、静态路由配置
配置单播静态路由:
ip route-static ip-address {mask|mask-length} {nexthop-address|interface-type interface-number [nexthop-address]}[preference preference|tag tag]
[R2]ip route-static 192.168.1.0 30 192.168.2.2
#ip route-static <目的网络地址> <目的网络地址的子网掩码> <下一跳路由器IP地址>
或者 [R2] ip route-static 192.168.1.0 30 g0/0/0 #出接口
[R2]display ip interface brief g0/0/0 #查看接口与IP相关的配置和统计信息或者简要信息
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 12.0.0.1/24 up up
案例1、
1.配置各接口所属VLAN
配置SwitchA。SwitchB和Switch省略。
<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] vlan batch 10 30
[SwitchA] interface gigabitethernet 0/0/1
[SwitchA-GigabitEthernet0/0/1] port link-type trunk
[SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10
[SwitchA-GigabitEthernet0/0/1] quit
[SwitchA] interface gigabitethernet 0/0/2
[SwitchA-GigabitEthernet0/0/2] port link-type access
[SwitchA-GigabitEthernet0/0/2] port default vlan 30
[SwitchA-GigabitEthernet0/0/2] quit
2、配置各VLANIF接口的IP地址
[SwitchA] interface vlanif 10
[SwitchA-Vlanif10] ip address 10.1.4.1 30
[SwitchA-Vlanif10] quit
[SwitchA] interface vlanif 30
[SwitchA-Vlanif30] ip address 10.1.1.1 24
[SwitchA-Vlanif30] quit
3、配置主机
配置主机PC1的缺省网关为10.1.1.1,主机PC2的缺省网关为10.1.2.1,主机PC3的缺省网关为10.1.3.1。
4、配置静态路由
在SwitchA配置IP缺省路由。
[SwitchA] ip route-static 0.0.0.0 0.0.0.0 10.1.4.2
在SwitchB配置两条IP静态路由。
[SwitchB] ip route-static 10.1.1.0 255.255.255.0 10.1.4.1
[SwitchB] ip route-static 10.1.3.0 255.255.255.0 10.1.4.6
在SwitchC配置IP缺省路由。
[SwitchC] ip route-static 0.0.0.0 0.0.0.0 10.1.4.5
5、验证配置结果
[SwitchA] display ip routing-table
Route Flags: R - relay, D - download to fib, T - to vpn-instance
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 10.1.4.2 Vlanif10
10.1.1.0/24 Direct 0 0 D 10.1.1.1 Vlanif30
10.1.1.1/32 Direct 0 0 D 127.0.0.1 Vlanif30
10.1.4.0/30 Direct 0 0 D 10.1.4.1 Vlanif10
10.1.4.1/32 Direct 0 0 D 127.0.0.1 Vlanif10
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
[SwitchA] tracert 10.1.3.1
traceroute to 10.1.3.1(10.1.3.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.4.2 31 ms 32 ms 31 ms
2 10.1.3.1 62 ms 63 ms 62 ms
3.2、缺省路由/默认路由
缺省路由又称为默认路由,在通信网络中,当网络主机上没有特定路由时而设置的数据包转发规则,可以给出一个默认的下一跳地址,当路由表中的所有路由都选择失败的时候,为使得报文有最终的一个发送地,将使用缺省路由进行转发。
缺省路由是一种特殊的路由,可以通过静态路由配置,某些动态路由协议也可以生成缺省路由,如OSPF和IS-IS。
在路由表中,缺省路由以到网络0.0.0.0(掩码为0.0.0.0)的形式出现。
当路由器收到一个在路由表中匹配不到明确路由的数据包时,会将数据包转发给缺省路由指向的下一跳。
缺省路由在其它路由里优先级最低。
[R1]ip route-static 0.0.0.0 0.0.0.0 1.1.4.2 //在R1上配置IPv4缺省路由。不同网段
R1–>R2目标地址由于不能明确,所以采用0.0.0.0 子网掩码0.0.0.0 下一跳1.1.4.2(就是R1去往所有目的的数据都交给R2的下一跳1.1.4.2,让网关帮我转发数据。)
ip route 0.0.0.0 0.0.0.0 在路由功能开启的情况下,为路由器配置默认网关
缺省路由是在路由器没有为数据包找到更为精确匹配的路由时最后匹配的。
子网掩码变成了0.0.0.0,这也意味着该网段的32位二进制形式的IP地址都是主机位,任何一个地址都属于该网段,这就是所谓全球最大的网段。
默认路由(Default Route)一般应用于网络(企业网、校园网、园区网等)出口,用于指向互联网,实现内网主机能够跟外网通信(我们不可能配置百度、新浪各种网站几万个网段。)。一般放在路由表的最底部,只有当常规的路由列表没有匹配时,才会查看/调用默认路由。从而到达另一个路由器,每次转发,路由都增加了一跳的距离。
3.3、黑洞路由
黑洞路由也为一条静态路由,但与其他路由不同的是,黑洞路由的出口接口为NULL0。如果一条静态路由的出口接口为NULL0时,就像扔进一个黑洞(垃圾站),因此出接口为Null 0的路由又称为黑洞路由。
作用:
实现了数据的过滤,防止环路的产生等等。
黑洞路由是一种颇有用处的路由,在图中,R1的GE0/0/0连接着一个终端网络,处于该终端网络的PC将默认网关设置为R1的GE0/0/0接口IP地址,而为了让PC能够访问R2右侧的服务器网络,我们在R1上配置了一条默认路由:
[R1]ip route-s 0.0.0.0 0 10.0.12.2
[R2]ip route-static 0.0.0.0 0 10.0.12.1
PC>ping 10.0.12.2
在服务器网络中,有一个特殊的网段——192.168.60.0/24并不希望被PC访问,能否仅仅通过路由的配置来实现这个需求呢?
使用黑洞路由便可,R1增加如下配置:
[R1]ip route-static 192.168.60.0 255.255.255.0 NULL0
[R1]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 12 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 10.0.12.2 G0/0/1
10.0.12.255/32 Direct 0 0 D 127.0.0.1 G0/0/1
192.168.1.1/32 Direct 0 0 D 127.0.0.1 G0/0/0
192.168.1.255/32 Direct 0 0 D 127.0.0.1 G0/0/0
192.168.60.0/24 Static 60 0 D 0.0.0.0 NULL0
当PC访问192.168.200.0/24时,数据包先被默认网关R1,R1通过路由表查询,发现数据包的目的IP地址匹配路由192.168.60.0/24,而这条路由的出接口是NULL 0,因此它将数据包直接丢弃。
黑洞路由的应用场景:
- 在部署了路由汇总的网络中,用于防止数据转发出现环路。
- 在部署了NAT(网络地址转换)的网络中,用于防止数据转发出现的环路。
- 在BGP网络中,用于发布特定网段的路由。
3.3、动态路由
路由器使用路由协议从其他路由器那里获悉的路由。
当网络拓扑发生变化时,路由器会自动更新路由信息。
总结:路由器之间就会互相学习完成。
路由协议分类——作用范围:
作用范围 | 描述 |
---|---|
IGP内部网关 | AS(自冶系统)中的路由器间交换路由选择信息。RIP、OSPF、ISIS。 |
EGP外部网关 | AS与AS之间交换路由选择信息。BGP |
一个运营网有一个AS,在一个AS内的协议称为IGP。IGP包含几种类型:RIP、OSPF、ISIS。都属于内部网络协议。
AS与AS之间的协议称为BGP(边界网络协议),比如电信和联通之间。
4、路由的优先级
路由优先级(Preference)
当存在多个路由来源时,具有较高优先级(优先级的值越小优先级越高。)的路由来源提供的路由将被激活,用于指导报文的转发。
路由优先级有内外之分,如果外部优先级相同则比较内部优先级。
外部路由优先级如下表:
路由协议 | 外部优先级 |
---|---|
DIRECT | 0 |
OSPF | 10 |
IS-IS | 15 |
STATIC | 60 |
RIP | 100 |
OSPF ASE | 150 |
IBGP | 255 |
EBGP | 255 |
Untrustworthy | 255 |
5、路由的度量值(metric)
路由度量值表示到达这条路由所指定的路径的代价或者开销,也称为路由权值。
路由器A到路由器D有两条路由:
- Path1: A→B→C→D ,总开销是9
- Path2: A→E→F→C→D ,总开销是12
路由器优选较小代价值的路由,并加入到路由表中
通常会考虑以下因素作为或者用来计算路由的度量值 - 跳数
- 链路带宽
- 链路延迟
- 链路负载
- 链路可靠度
- 链路MTU
- 代价
路由条目优选进路由表
6、路由的选路规则
最长匹配原则
当存在多个路由来源时,具有较高优先级(数值越小表明优先级越高)的路由来源提供的路由将被激活,用于指导报文的转发。
目的地址为9.1.2.1的数据报文,将命中9.1.0.0/16的路由:
[R1] display ip routing-table
Routing Tables:
Destination/Mask proto pref Metric Nexthop Interface
0.0.0.0/0 Static 60 0 120.0.0.2 Serial0/0
8.0.0.0/8 RIP 100 3 120.0.0.2 Serial0/1
9.0.0.0/8 OSPF 10 50 20.0.0.2 Ethernet0/0
9.1.0.0/16 RIP 100 4 120.0.0.2 Serial0/0
外部优先级是100、开销是4,但是根据IP最长匹配原则优先匹配9.1.0.0/16。
7、负载均衡
当源网络和目的网络之间存在多条链路时,可以通过等价路由来实现流量负载分担。这些等价路由具有相同的目的网络和掩码、优先级和度量值。
本示例中RTA和RTB之间有两条链路相连,通过使用等价的静态路由来实现流量负载分担。
在RTB上配置了两条静态路由,它们具有相同的目的IP地址和子网掩码、优先级(都为60)、路由开销(都为0),但下一跳不同。在RTB需要转发数据给RTA时,就会使用这两条等价静态路由将数据进行负载分担。
在RTA上也应该配置对应的两条等价的静态路由。
[RTB]ip route-static 192.168.1.0 255.255.255.0 10.0.12.1
[RTB]ip route-static 192.168.1.0 255.255.255.0 20.0.12.1
[RTB]display ip routing-table
Route Flags: R - relay, D - download to fib
--------------------------------------------------------------
Routing Tables: Public Destinations : 13 Routes : 14
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 Static 60 0 RD 10.0.12.1 GigabitEthernet 0/0/0
Static 60 0 RD 20.0.12.1 GigabitEthernet 0/0/1
8、路由的环路
路由环路,就是数据包不断在这个网络传输,始终到达不了目的地,导致掉线或者网络瘫痪。
9、特殊路由
浮动路由介绍:
当网络中存在多条相同路由前缀时,会优先选取AD值(路由可信度,值越小,路由越优先)小的路由为主用路由,AD值大的路由为备份路由。当主用路由的下一跳不可达时,主用路由消失,备用路由生效切换为主用。当网络中有多条路径到达目的网络时,可以通过配置多条静态路由,修改静态路由的AD值,来实现主备链路的备份,该功能即为浮动静态路由。
浮动路由是主用路由的备份,在主用路由失效是,会自动切换到浮动路由。当主用路由下一跳可达,浮动路由不会出现在路由表。
应用:
在金融行业中常见的网点与支行,或者是支行与总行的出口网络中,通常会租用运营商的多条链路,比如电信的10M,联通的2M这样两种链路,客户希望正常的时候生产、办公的流量能够走电信的10M,当故障的时候切换到联通的2M,同时视频监控流量能够主走联通的2M,当该链路故障的时候,能够切换到电信的10M,实现数据业务的分流,同时故障的时候其他链路还可以作为备份链路,避免单点故障,这样的场景也可以考虑采用浮动静态路由(当然静态路由通常需要与BFD功能联动,以便检查到中间运营商设备或者链路存在故障,而交换机上面端口没有down无法感知到静态路由失效,结果路由无法切换的故障)。
RTB上配置了两条静态路由。正常情况下,这两条静态路由是等价的。通过配置preference 100,使第二条静态路由的优先级要低于第一条(值越大优先级越低)。路由器只把优先级最高的静态路由加入到路由表中。当加入到路由表中静态路由出现故障时,优先级低的静态路由才会加入到路由表并承担数据转发业务。
[RTB]ip route-static 192.168.1.0 255.255.255.0 10.0.12.1
[RTB]ip route-static 192.168.1.0 255.255.255.0 20.0.12.1 preference 100
当主用静态路由出现物理链路故障或者接口故障时,该静态路由不能再提供到达目的地的路径,所以在路由表中会被删除。此时,浮动静态路由会被加入到路由表,以保证报文能够从备份链路成功转发到目的地。在主用静态路由的物理链路恢复正常后,主用静态路由会重新被加入到路由表,并且数据转发业务会从浮动静态路由切换到主用静态路由,而浮动静态路由会在路由表中再次被隐藏。
[RTB]display ip routing-table
Route Flags: R - relay, D - download to fib
--------------------------------------------------------------
Routing Tables: Public Destinations : 13 Routes : 14
Destination/Mask Proto Pre Cost Flags NextHop Interface
……
192.168.1.0/24 Static 100 0 RD 20.0.12.1 GigabitEthernet 0/0/1 //故障时,主路由被删除。正常是备份路由隐藏。