路由和路由协议

路由(Route)是网络层的功能,负责确定数据包在网络中的路径和将数据包从源主机传送到目标主机的过程。它基于IP协议,通过网络层物理设备路由器(Router)来实现。

路由器

基本功能

  • 路由器维护管理着路由表,记录了网络的拓扑结构和如何到达不同网络的信息。
  • 当路由器收到一个数据包时,它会根据目标 IP 地址查找路由表,确定下一跳的路由器或直接连接的目标主机,然后将数据包转发到正确的接口。
  • 路由器根据一系列的路由协议(例如 RIP、OSPF、BGP)来制定路由决策,选择最佳的路径将数据包传送到目标。
  • 路由器能够分割广播域,将一个大的网络分割成多个子网,减少广播流量。
  • 一些路由器还可以执行网络地址转换(NAT),将内部私有网络的IP地址映射到外部公共网络的IP地址,帮助实现多个设备共享一个公共IP地址。

不同的路由器支持的协议可能不同。主流的路由器如下:

  • Cisco 路由器: Cisco的ASR系列、ISR系列和Catalyst系列路由器通常支持BGP、OSPF、EIGRP、RIP协议。
  • Juniper Networks路由器:MX系列和EX系列路由器通常支持BGP、OSPF、ISIS、RIP协议。
  • Huawei路由器:NE系列路由器(如NE40E、NE5000E)通常支持BGP、OSPF、ISIS、RIP协议。
  • 家用小型路由器:通常无需支持复杂的路由协议,支持静态路由。主要目的是简单易用,提供基本网络连接和共享功能。基本都具备DHCP,NAT,DNS等功能。某些家用路由器支持PPPoE进行宽带拨号连接。

路由表

路由表会根据路由协议与邻居路由器交换信息,收集相关网络拓扑的数据(其包含目标网络地址、子网掩码、下一跳等信息),收集的数据用来生成路由表,路由表会定期检查邻居路由器更新或当网络拓扑发生变化时动态更新路由表

路由表的内容

路由表的内容可能根据其使用的路由协议和配置而有所不同,但通常包含:目标网络地址,子网掩码,下一跳(Next Hop),出口接口,路由度量值。例如以下是一个简化的示例:

目标网络     子网掩码       下一跳       出口接口    路由度量值
192.168.1.0 255.255.255.0  192.168.0.1   eth0         1
10.0.0.0    255.0.0.0      10.0.0.1      eth1         2
0.0.0.0     0.0.0.0        203.0.113.1   eth2         3

下一跳(Next Hop):数据包应该被发送到的下一个路由器或目标主机的地址。

出口接口:数据包应该通过的物理或逻辑接口,以便离开路由器并传送到下一跳或目标网络。

路由度量值:表示到达目标网络的路径的相对成本,路由度量值越小,表示到达目标网络的路径越好。实际中,具体值一般由路由协议的算法和度量标准计算得出,不同的路由协议可能算法不同。

路由协议

路由协议主要类型分为距离矢量协议链路状态协议路径矢量协议,路径状态协议。

静态路由

静态路由就是不使用动态变化的路由协议,网络管理员直接在路由器中手动配置维护路由表,明确指定每个目标网络的下一跳路由器或出口接口。静态路由操作和管理简单,但不适用于大型网络,需手动更新路由信息,不够灵活且容易出错。

常见厂商配置静态路由命令简单示例如下:


#### [Cisco 路由器]
# 进入全局配置模式
Router> enable
Router# configure terminal
# 配置静态路由
Router(config)# ip route [目标网络] [目标子网掩码] [下一跳路由器或出口接口]

#### [华为 路由器]
# 进入全局配置模式
[Huawei] system-view
# 配置静态路由
[Huawei] ip route-static [目标网络] [目标子网掩码] [下一跳路由器或出口接口]

#### [Juniper 路由器]
# 进入全局配置模式
% cli
# 配置静态路由
[edit]
user@router# set routing-options static route [目标网络/目标子网掩码] next-hop [下一跳路由器]

RIP协议

RIP(Routing Information Protocol)路由信息协议是一种基于距离矢量的路由协议,适用在中小型网络中实现动态路由。具有一定局限性,不适应复杂的网络拓扑。

协议原理和作用

  • 距离矢量算法:RIP使用跳数作为路由度量值,即将到达目标网络的路径表示为路由器经过的路由器数量。通常,一个直接连接到目标网络的路由器被认为有距离为1,这是最小距离。路由器会选择跳数最少(即最短距离的路径)为最佳路径。
  • 路由表维护/更新:路由器通过RIP协议定期将路由信息广播到相邻的路由器。
  • 度量限制:RIP将最大距离限制为15跳。如果一个网络的距离超过15跳,RIP将认为该网络不可达。这是RIP的局限性,因为它限制了协议在大型网络中的使用。
  • 防止环路:主要通过Split Horizon(分割视野)和Route Poisoning(路由毒化)两种策略。
  • 路由稳定:当一个路由器检测到一个网络不可达时,它将启动一个Hold-down Timer(守候时间),在一段时间内拒绝有关该网络的新的路由信息,防止路由表在短时间内发生频繁变化。

Split Horizon(分割视野):如果一个路由器知道某个网络可以通过某个邻居访问,它就不会再将该信息发送回这个邻居,防止信息在路由器之间不断循环,形成环路。

Route Poisoning(路由毒化):当一个路由器检测到某个网络不可达时,它不仅仅停止对该网络的广播,还会向邻居路由器发送特殊消息,通知它该网络不可达。这个特殊消息就是“毒化”了该路由信息,防止路由器再继续使用失效的路由信息。

OSPF协议

OSPF (Open Shortest Path First) 开放最短路径优先协议是一种链路状态算法路由协议,用在网络中动态计算路由。它是一种内部网关协议(IGP),被广泛用于企业和互联网服务提供商内部网络路由器中。

协议特点及原理

  • 分层设计:OSPF采用分层设计,主要依赖Hello协议、链路状态算法,链路状态数据库、最短路径计算。
  • 最短路径计算:OSPF的计算核心是链路状态算法,通过链路状态算法的Dijkstra算法来计算最短路径树。
  • 路由度量:OSPF使用成本(Cost) 作为路由度量标准,成本通常与链路的带宽成反比。较低成本的路径被认为是更优的路径。
  • 区域划分:OSPF将网络被划分为不同的区域,区域的核心是主干区域(Backbone Area),且包含多个非主干区域(Non-Backbone Area),每个非主干区域通过区域标识符(Area Identifier) 进行标识,区域与区域通过区域连接器(Area Border Router,ABR) 来进行连接。并通过自治系统边界路由器(Autonomous System Boundary Router,ASBR) 让OSPF域内与外部路由器的网络进行连接。
  • LSA Flood(洪泛):当网络链路状态发生变化时,会生成LSA(Link State Advertisement),然后通过邻居路由关系进行洪泛。

OSPF使用LSA(Link State Advertisement,链路状态广告)来传递路由信息(不同的LSA类型传递的消息不同),LSA是一个格式固定的二进制结构。

ISIS协议

ISIS(Intermediate System to Intermediate System)中间系统路由交换协议也是基于链路状态算法的一种内部网关协议(IGP),实现动态计算路由。ISIS最初是用于OSI(即OSI七层模型)协议套件的网络,后被适应到TCP/IP网络。

协议特点及原理

  • ISIS协议基于状态链路算法依赖Hello协议,使用区域(Area)域(Domain) 划分网络。区域是ISIS中的基本单元,包含一个或多个区域。
  • ISIS的SPF(Shortest Path First)算法同样基于Dijkstra算法来计算最短路径树。
  • ISIS定义了不同类型的路由器,包括L1路由器、L2路由器和L1/L2路由器。L1路由器负责区域内的路由L2路由器负责域内的路由,而L1/L2路由器具有两者的功能。
  • LSP Flood(洪泛):当网络链路状态发生变化时,会生成Link State PDU(LSP),其数据内容为TLV(Type-Length-Value) 格式,然后通过邻居路由关系进行洪泛。

PDU(Protocol Data Unit),即协议数据单元。

TLV(Type-Length-Value)是LSP的通用格式,格式结构相对简单。

  • Type(类型):TLV的类型,表示携带的信息的种类。
  • Length(长度):指定TLV值的长度,以字节为单位。
  • Value(值):包含实际的信息,其格式和内容由Type字段决定。

EIGRP协议

EIGRP(Enhanced Interior Gateway Routing Protocol)增强型内部网关路由协议是由 思科(Cisco) 开发的内部网关协议(IGP)。它是高级距离矢量协议,结合了链路状态协议的特性,具备高效路由选择快速收敛的特点。其官方实现仅在思科设备上可用

协议特点

  • EIGRP将拓扑信息分为活动路由表拓扑数据库。活动路由表包含主路径,而拓扑数据库包含备用路径。这种设计更能够快速切换到备用路径,而不需要重新计算整个路由表。
  • EIGRP使用DUAL算法(Diffusing Update Algorithm,扩散更新算法)来计算备用路径。当主路径不可用时,DUAL算法能迅速选择并使用备用路径,以最小化网络的收敛时间。
  • EIGRP的路由更新分为突发更新(SIA,Stuck-in-Active)和增量更新突发更新可快速传播主路径的变化, 增量更新能传播拓扑数据库的变化,且仅传输变化的拓扑信息,传输量小网络效率高。这两类更新机制的优先级可以调整,确保更新能够迅速传播。
  • EIGRP依赖Hello协议维持邻居关系,通过RTP协议确保路由消息可靠性(这里消息包含Hello消息,Update消息、Acknowledgment消息等)。当网络拓扑发生变化时,会发送EIGRP Query消息快速触发活动路由表的更新,确保网络快速收敛。

RTP(Reliable Transport Protocol,可靠传输协议,是EIGRP的子协议)

BGP协议

BGP(Border Gateway Protocol)边界网关协议是互联网核心路由协议,是用在自治系统(AS)之间交换路由信息的路径矢量协议。它具备高度的可扩展性和灵活性,使互联网能实现全球范围内的路由。然而因其复杂性,为了网络稳定性和安全性,需谨慎配置和管理。

自治系统AS(Autonomous System)是互联网中的基本概念。可以把它看作由一个管理机构来管理和运营的自治网络系统,它由一组相互连接的网络和路由器组成。这个机构可以是一个互联网公司,一个网络提供商或其他组织。每个自治系统都有一个唯一编号,称为自治系统号(ASN) 。公共ASN范围为1~6451165536~4200000000,其它范围都是私有ASN。

例如常见的ASN对应的AS:

- AS15169:Google。
- AS714:Apple。
- AS16509:Amazon。
- AS4134:中国电信(China Telecom)。
- AS17621:中国移动(China Mobile)。

BGP协议特点

  • BGP分为两种基本形式:eBGP(External BGP)和iBGP(Internal BGP)。eBGP用于不同自治系统之间,而iBGP用于同一自治系统内的不同路由器之间的路由交换。
  • BGP会话:
    • 相邻的自治系统的路由器上进行配置BGP协议参数信息。包括双方BGP路由器的IP地址和相关参数,自治系统号(ASN),保证网络可达的同时建立邻居连接对等关系(BGP Peering)。BGP Peering的实现标准是通过TCP建立连接,极少情况下可能通过物理直连。
    • 建立连接后,双方会进行Open消息交换(包含了各种信息,如BGP版本、ASN、持有时间),进行BGP版本协商。然后互相发送UPDATE消息交换路由信息并更新路由表。
    • 建立连接后的整个过程中,双方路由器之间会定期发送Keepalive消息以维持邻居关系,保持会话活跃性。
  • 路由选择:BGP是路径矢量协议,路径选择的根据是路径属性,并通过复杂的规则及策略来进行,原则上首先考虑AS Path的长度,再考虑路由权重,当长度和权限相同时,会根据本地优先级和最近出现的路径来考虑,BGP也会根据路由来源类型(eBGP/iBGP,优先选择iBGP)。BGP支持多路径(允许路由器同时使用多个相等的最佳路径)提高网络冗余性和负载均衡。
  • 路由安全:
    • BGP可通过前缀列表(ip prefix-list),路由映射(route-map),路径过滤列表(access-list)等策略来过滤路由
    • BGP通过数字签名算法(例如MD5)对路由信息进行签名,保证路由信息的来源和完整性; 通过公钥基础设施的RPKI框架,来验证证书链以BGP路由的真实性,防范路由劫持和恶意攻击。
    • BGP允许路由器在不中断网络连接的情况下刷新BGP路由表。有助于路由策略及时地应用和更新,并减少潜在恶意路由的存在。
    • BGP通过BGP TTL Security Check 检查消息中Time-to-Live(TTL)字段,防范TTL Expire Attack(攻击者通过发送具有过期TTL的BGP消息,以使其在传播过程中被丢弃,从而导致网络中断或其他问题)。这是一个安全增强特性,配置和实施可能因厂商和设备而异。

BGP路径属性

  • AS Path(自治系统路径):是BGP中一个重要的概念,表示数据包经过的自治系统的路径。BGP会优先选择AS Path较短的路径。
  • Next Hop(下一跳):BGP路由器会选择具有最佳Next Hop的路径。
  • Local Preference(本地优先级):BGP内部属性,用于在同一自治系统内进行路由选择。较高的Local Preference值表示更优先的路径。
  • MED(Multi-Exit Discriminator):BGP内部属性,用于在不同自治系统之间进行路由选择。它表示到达某一目的网络路径的度量,数值较低的MED通常表示更优先的路径。

BGP常见路由消息

  • Open:在BGP Peering会话建立时进行握手。
  • Update:包含了路由更新信息,用于通知其他路由器有关可达网络的变化。
  • Keepalive:用于维持BGP Peering会话。
  • Notification:用于报告错误和终止BGP Peering。

路由算法

Hello协议

Hello协议是一种用在路由协议中的辅助协议,并非主要的路由协议。它用来路由器之间发现邻居、确认邻居状态、建立邻居关系的协议。

  • 邻居发现:Hello协议可使路由器能发现相邻的路由器(例如路由器共享同一网络)。
  • 确认邻居状态:Hello协议消息中包含了有关发送路由器的状态信息,以确认邻居的存活状态(活跃性)。
  • 建立邻居关系:路由器可通过该协议建立和维护与邻居路由器之间的关系,这是路由协议构建拓扑的基础。

链路状态算法

链路状态(Link-State)是一种路由算法,其核心思想是路由器在网络中维护一个关于整个拓扑结构信息,包括所有链路和它们的状态。每个路由器都有一个完整的拓扑结构信息,该拓扑信息由网络中所有路由器共同维护的,并相互进行同步

  • 链路状态算法依赖Hello协议,根据邻居路由器发送的Hello消息和其他链路状态信息,每个路由器会维护了一个拓扑结构信息,这个信息包含了网络中其它路由器和链路的详细信息,被称为本地的链路状态数据库(Link-State Database,LSDB)
  • 基于链路状态数据库,每个路由器使用最短路径算法(通常是Dijkstra算法)计算到达网络中每个目标的最短路径树
  • 当链路状态发生变化时,例如链路断开或恢复,路由器会将这一信息通过洪泛(Flooding) 的方式广播到整个网络。这样虽每个路由器只维护与自己直接相连的链路的状态信息,但都能及时了解到整个网络拓扑的变化。
posted @ 2024-01-26 10:49  EalenXie  阅读(33)  评论(0编辑  收藏  举报