三层路由
当路由器(或者其他三层设备)收到一个IP数据包时,路由器会找出报文中的IP头里的目的IP地址,然后根据目的IP地址在自己的路由表(routing table)中进行查询,找到匹配的路由条目之后,将数据包根据路由条目所指示的出接口或者下一跳IP转发出去,这就是路由。
每台路由器都会在本地维护一张路由表,路由器通过直连、静态或者动态的方式获取路由条目并维护自己的路由表。
查看IP路由表命令为:display ip routing-table
每个路由条目必须包含以下几个元素:
- 目的网络/掩码:也称为路由前缀。一条完整的路由前缀:网络地址+前缀长度(或者网络掩码)构成,两者缺一不可。例如192.168.1.0/24与192.168.1.0/25虽然网络地址相同,但是两者肯定为两条不同的路由,因此他们的前缀长度不同。
- 协议类型:本条路由是通过什么途径学习到的。例如直连、静态或者是OSPF、ISIS、BGP等动态路由学习到的。
- 优先级:与协议类型相对应,每种协议类型对应不同的优先级,优先级越小则路由越优。
路由类型 | 路由协议优先级 |
---|---|
直连 | 0 |
isis | 15 |
静态 | 60 |
ospf | 内:10 外:150 |
rip | 100 |
bgp | 255 |
- 开销:路由的度量值,直连及静态路由的cost为0。
- 下一跳:指明数据包所经由的下一跳路由器的接口地址。
- 出接口:指明IP数据包将从该路由器的哪个接口转发出去。
路由表中学习到的路由表项主要有以下几种途径:
(1)直连路由自动学习。
(2)通过手工的方式为设备添加静态路由条目。
(3)使用动态路由协议使得设备之间能够进行路由信息的更新及学习,动态维护路由表项。
静态路由
如图,当PC1要访问PC2时,由于PC1的网关设置为R1GE0/0/0口的IP地址,于是PC1将目的地址为172.16.2.1的IP数据包发送给它的网关(也就是PC1)。但是当R1收到这个数据包时,发现这个数据包的目的IP为172.16.2.1,它就会去查找自己的路由表。会发现在自己的路由表中,并没有匹配到这个目的地址的路由,因此数据包会被丢弃。我们应该怎么做呢?
答:通过添加静态路由的方式,在R1上添加去往172.16.2.0/24的路由条目。因为两个节点的通信是双向的,因此也需要在R2上添加去往172.16.1.0/24的路由条目。
[] ip route-static 目的网络地址 掩码 下一跳IP地址
[R1] ip route-static 172.16.2.0 24 172.16.100.2
[R2] ip route-static 172.16.1.0 24 172.16.100.1
实验
在下图中,PC1属于vlan10,使用的网段为192.168.10.0/24;PC2属于vlan20,使用的网段为192.168.20.0/24。两台PC2的网关分别在SW1和SW2上。两台交换机通过vlan200实现三层对接。最后使得PC1能与PC2通信。
[SW1] vlan batch 10 200
[SW1] int vlan10
[SW1-vlanif10] ip add 192.168.10.254 24
[SW1] q
[SW1] int vlan 200
[SW1-vlanif200] ip add 192.168.200.1 30
[SW1] int g0/1/1
[SW1-GigabitEthernet0/0/1] port link-type access
[SW1-GigabitEthernet0/0/1] port default vlan 10
[SW1-GigabitEthernet0/0/24] port link-type trunk
[SW1-GigabitEthernet0/0/24] port trunk allow-pass vlan 200
[SW1-GigabitEthernet0/0/24] q
[SW1] ip route-static 192.168.20.0 24 192.168.200.2
SW2同SW1相似。
负载分担
静态路由支持到达同一目的地的等价负载分担。
当源网络和目的网络之间存在多条链路时,可以通过等价路由来实现流量负载分担,这些等价路由具有相同的目的网络和掩码、优先值和度量值。
[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
RTA相似。
默认路由(缺省)路由
缺省路由是目的地址和掩码全为0的特殊路由。如果报文的目的地址无法匹配路由表中的任何一项,路由器选择依照缺省路由来转发报文。
命令:[RTA] ip route-static 0.0.0.0 0 10.0.12.2
浮动静态路由
浮动静态路由在网络中主路由失效的情况下,会加入到路由表中并承担数据转发业务。
在配置多条静态路由时,可以修改静态路由的优先级,使一条静态路由的优先级高于其他静态路由,从而实现静态路由的备份,也叫静态浮动路由。
[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上配置了两条静态路由,正常情况下,这两条路由是等价的。通过配置preference 100,使得第二条静态路由的优先级要低于第一条(值越大优先级越低)。路由器只把优先级最高的静态路由加入到路由表中。当加入到路由表中的静态路由出现故障时,优先级低的静态路由才会加入到路由表并承担属于转发业务。
动态路由
1、动态路由协议根据作用的范围,可以分为:
IGP | BGP |
---|---|
RIP、OSPF、ISIS | BGP |
- 内部网关协议(简称IGP):在一个自治系统之间运行。
- 外部网关协议(简称BGP):运行于不同的自治系统之间。
AS是一个独立自治、自我管理的路由选择域。
2、动态路由协议根据使用的算法,可以分为:
距离矢量协议 | 链路状态协议 |
---|---|
RIP、BGP | OSPF、ISIS |
- 距离适量协议:运行了距离矢量的路由器直接将自己的路由表更新给直连的邻居路由器,但是这种情况下这些路由器并不了解整个拓扑结构,这很容易在特定情况下产生诸如路由环路之类的问题。
- 链路状态路由协议:运行了链路状态路由协议的路由器之间则更新的不是路由表或者路由条目,而是包括对链路接口的描述的信息,这些信息被称为链路状态信息。通过链路状态信息的泛洪,路由器搜集这些信息并将其装载进链路状态数据库,随后运行特定的算法,计算出一个无环的拓扑。因此运行链路状态路由协议的路由器是知晓网络中的拓扑结构的。