计算机网络笔记No.21
Internet采用层次路由,AS内部路由协议也称为内部网络协议IGP(interior gateway protocols)
最常见的AS内部路由协议:
- 路由信息协议:RIP(Routing Information Protocol)
- 开放最短路径优先:OSPF(Open Shortest Path First)
- 内部网关路由协议:IGRP(Interior Gateway Routing Protocol)——Cisco私有协议
RIP协议简介
RIP协议早于1982年随BSD-UNIX操作系统发布,采用距离向量算法,具有以下特性:
- 距离度量:跳步数 (max = 15 hops), 每条链路1个跳步
- 每隔30秒,邻居之间交换一次DV,称为通告(advertisement)
- 每次通告:最多25个目的子网(IP地址形式)
图例:图中假设A向D发送一个通告,告知自己到达Z的路径,D的路由表更新
其中下一跳选项也能起到 毒性逆转的作用
RIP:协议的链路失效、恢复机制
如果180秒没有收到通告(6次通告没有接收到) → 表示邻居或者链路失效
- 经过该邻居的路由不可用——重新计算路由
- 向邻居发送新的通告
- 邻居再依次向外发送通告(如果转发表改变)
RIP路由表的处理:RIP路由表是利用一个称作route-d (daemon)的应用层进程进行管理
由应用进程实现,通告报文周期性地通过UDP数据报发送
OSPF协议简介
OSPF协议是开放的,即公众可用
OSPF协议采用链路状态路由算法
OSPF通告在整个AS范围泛洪——OSPF报文直接封装到IP数据报中
OSPF优点(RIP不具备)
- 安全(security): 所有OSPF报文可以被认证(预防恶意入侵)
- 允许使用多条相同费用的路径 (RIP只能选一条)
- 对于每条链路,可以针对不同的TOS设置多个不同的费用度量
- 集成单播路由与多播路由——多播OSPF协议(MOSPF) 与OSPF利用相同的网络拓扑数据
- OSPF支持对大规模AS分层(hierarchical)
OSPF的分层
BGP协议简介
边界网关协议BGP (Border Gateway Protocol):事实上的标准域间路由协议
将Internet “粘合”为一个整体的关键
BGP为每个AS提供了一种手段:
- eBGP:从邻居AS获取子网可达性信息
- iBGP:向所有AS内部路由器传播子网可达性信息
- 基于可达性信息与策略,确定到达其他网络的 “好”路径
好指最符合策略的路径 - 容许子网向Internet其余部分通告它的存在
两个BGP路由器交换信息叫做BGP会话(session)
- 通告去往不同目的前缀(prefix)(子网)的路径 (“路径向量(path vector)”协议)
- 报文交换基于半永久的TCP连接
BGP报文:
- OPEN: 与peer建立TCP连接,并认证发送方
- UPDATE: 通告新路径 (或撤销原路径)
-
KEEPALIVE: 在无UPDATE时,保活连接;
也用于对OPEN请求的确认 - NOTIFICATION: 报告先前报文的差错;也被用于关闭连接
分发路径信息
下图中,在3a与1c之间, AS3利用eBGP会话向AS1发送前缀可达性信息
- 1c则可以利用iBGP向AS1内的所有路由器分发新的前缀可达性信息
- 1b可以(也可能不)进一步通过1b到2a的eBGP会话,向AS2通告新的可达性信息
当路由器获得新的前缀可达性时,即在其转发表中增加关于该前缀的入口(路由项)
路径属性与BGP路由
通告的前缀信息包括BGP属性,前缀+属性= “路由”
以上图为例:两个重要属性:
- AS-PATH(AS路径): 包含前缀通告所经过的AS序列: eg: AS 67, AS 17
表示通过AS3 可去AS 67, AS 17 - NEXT-HOP(下一跳): 开始一个AS-PATH的路由器接口,指向下一跳AS(图中3a的端口)
指示1c向3a的11.11.1.1端口方向发送 - 可能从当前AS到下一跳AS存在多条链路
BGP路由选择
网关路由器收到路由通告后,利用其==输入策略(import policy)==决策接受/拒绝该路由
路由器可能获知到达某目的AS的多条路由,基于以下准则选择:
- 本地偏好(preference)值属性: 策略决策(policy decision)
- 最短AS-PATH
- 最近NEXT-HOP路由器: 热土豆路由(hot potato routing)
- 附加准则
BGP路由选择策略
下图中:
A,B,C是提供商网络/AS(provider network/AS)
X,W,Y是客户网络(customer network/AS)
W,Y是桩网络(stub network/AS): 只与一个其他AS相连
X是双宿网络(dual-homed network/AS): 连接两个其他AS
A向B通告一条路径:AW
B向X通告路径:BAW
B是否应该向C通告路径BAW呢?
- 不! B路由CBAW的流量没有任何“收益”,因为W和C均不是B的客户
- B期望强制C通过A向W路由流量
- B期望只路由去往/来自其客户的流量
为什么采用不同的AS内与AS间路由协议
- 策略(policy)
- inter-AS: 期望能够管理控制流量如何被路由,谁路由经过其网络等
- intra-AS: 单一管理,无需策略决策
- 规模(scale)
- 层次路由节省路由表大小,减少路由更新流量
- 适应大规模互联网
- 性能(performance)
- intra-AS: 侧重性能
- inter-AS: 策略主导
—————————————————————————————————————————————————————
由于水平有限及时间仓促或疏忽大意以及其他的一些原因,文中难免会存在一些错误,如若有发现不正确的地方,还请大佬们评论或私信告之于我,以便及时纠错