第四章:网络层
§4-1 网络层的功能
一. 异构网络互联
1. 如何理解"异构"?
- 概念: 每个网络的拓扑结构、物理层及链路层的实现不同,主机类型也各不相同。
2. 重要的设备
- 重要的设备是:路由器 (Router)。
- 注: 在TCP/IP文献中,路由器也称为 网关 (Gateway)。
二. 路由与转发
1. 路由 (Routing)
- 各个路由器之间相互配合,规划 IP 数据报(分组)的最佳转发路径。
- 注: 各个路由器需要运行"路由协议 ",最终生成各自的"路由表"。
2. 转发 (Forwarding)
- 一台路由器根据自己的"转发表",将收到的IP数据报从合适的端口转发出去。
- 注: 转发表是精简路由表,更精简的数据结构有助于快速检索。
三. 拥塞控制
1. 拥塞 (Congestion)
- 原因: 网络上出现过量分组,超负荷,引起网络性能下降。
- 现象: 网络上的分组数增加,但吞吐量反而降低。
- 类比: 节假日路上车辆增多到一定程度时,收费站的吞吐量反而降低。
2. 拥塞控制方法
- 开环控制(静态的方法)
- 在部署网络时,就提前设计好预防拥塞的方法。
- 一旦网络系统开始运行,就不再修改。
- 闭环控制(动态的方法)
- 动态监测网络状态,及时发现拥塞发生或即将发生拥塞。
- 将拥塞信息传递给相关路由器(如:通过ICMP)。
- 相关路由器及时调整"路由表"。
§4-2 IPv4
§4-2-1 IPv4分组
一.各种协议之间的服务关系
二.IP数据报(IP分组)的格式
三.分片
-
一个链路层数据帧能承载的最大数据量称为最大传送单元(MTU)。如以太网的MTU=1500B。
-
如果一个IP数据报的总长度超出了下一段链路的MTU,就需要分片
-
每个分片都是一个可以被单独转发的IP数据报,都包含首部
注意:
- IP数据报的"分片"可能在源主机、或任何一个路由器中发生只有目的主机才会对分片进行"重组"
- 各分片有可能乱序到达目的主机
- 由于首部的"片偏移"字段是以×8为单位,因此,除了最后一个分片外,其他每个分片的数据部分必须是8B的整数倍
§4-2-2 IP地址(最初的分类方案)
一.最初的IP地址分类方案
二.特殊用途的IP地址
§4-2-3 子网划分和子网掩码
一.子网划分原理
- 原理: 某单位租用了一个IP地址,假设该主机位占 n bit,可以以前 k bit 抠出来作为子网号 ,用剩余的 n-k bit 作为主机号 。这样就能划分出 2k2^k2k 个子网(每个子网包含的IP地址块大小相等)。
- 划分前结构: IP地址为两级结构 = <网络号, 主机号>。
- 划分后结构: IP地址为三级结构 = <网络号, 子网号, 主机号>。
- 注意: 每个子网地址中,主机号不能分配为全 0/全 1;全 0 表示子网本身,全 1 为子网广播地址。
二.子网掩码
- 作用:
- 用子网掩码跟IP地址逐位与,算出 <网络号, 子网号>(可合称为"网络前缀")。
- 只有网络前缀相同的IP地址,才属于同一个网络(或子网)。
- 注意:
- 如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码
- 如果一台路由器支持子网划分技术,那么在它的转发表中,需要包含**<目的网络号,子网掩码,转发接口>**
如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码如果一台路由器支持子网划分技术,那么在它的转发表中,需要包含<目的网络号,子网掩码,转发接口>
三.默认子网掩码
如果一个传统网络 (A/B/C类) 内部没有进行子网划分,可以将其对应网络的转发表项设置为"默认子网掩码"。
- A类默认: 255.0.0.0
- B类默认: 255.255.0.0
- C类默认: 255.255.255.0
四.默认路由
- 默认路由(默认转发表项)设置:<目的网络号全0,子网掩码全0>
- 在路由器转发表中,如果所有表项都不匹配,那么将从"默认路由"转发出去。
五.主机发送IP数据报的过程
-
判断目的主机和本机是否属于同一个网络
- 检查本机IP地址和目的IP地址的网络前缀是否相同(需要用本机配置的子网掩码"逐位与")
- 若网络前缀相同,说明目的主机和本机属于同一个网络;若网络前缀不同,说明不属于同一网络
-
将IP数据报封装成MAC帧并发送到链路上
如果目的主机与本机属于同一个网络,就通过ARP协议找到目的主机的MAC地址,再将IP数据报封装成帧,并将帧发送给目的主机
如果目的主机与本机不属于同一个网络,就通过ARP协议找到默认网关的MAC地址,再将IP数据报封装成顿,并将帧发送给默认网关
六.路由器转发IP数据报的过程
- 路由器的某个接口收到一个IP数据报
- 对IP数据报首部进行校验,并从中找到目的IP地址
- 查"转发表"
- 转发表的表项包含<目的网络号, 子网掩码, 转发接口>。
- 检查目的IP地址 与每个表项能否匹配。(将目的IP地址和子网掩码逐位与 ,看结果是否匹配表项中的目的网络号)。
- **注:**至少"默认路由"表项一定是可以用匹配成功的。
- 转发
- 根据查转发表的结果,将IP数据报从匹配的 接口转发出去。
- 注: 如果匹配的"转发接口"和该IP数据报的 入口相同,就不用再把IP数据报转发回去。
七.画图练习
§4-2-4 无分类编址CIDR
一.相关概念
1. 为什么要提出无分类编址CIDR?
最初的IP地址分类方案,IP地址资源分配不灵活,利用率低,有限的IP地址资源将很快耗尽
2. CIDR定义
二.CIDR地址块的子网划分
1. 定长子网划分
定长子网划分:在申请一个 IP 地址块后,把 n bit 主机号的前 k bit拔出来作为子网号,这样就能划分出 2k 个定长子网(每个子网包含的 IP 地址块大小相等,都包含 2n−k个 IP 地址)。
缺点:每个子网都一样大,不够灵活,IP 地址利用率低,浪费有限的IP地址资源。
注意:在每个子网中,主机号全0、全1的IP地址不能分配给特定节点私用
2. 变长子网划分
变长网划分:在一个CIDR地址块中,划分子网时,子网号长度不固定(每个子网包含的IP地址块大小不同)
注意:在每个子网中,主机号全0、全1的IP地址不能分配给特定节点私用
3. 例子
-
例1:无分类编制CIDR、变长子网划分的应用


-
例2:定长子网划分

-
例3:变长子网划分

三.CIDR发送IP数据报过程
1. 主机发送IP数据报
2. 路由器转发IP数据报
§4-2-5 路由聚合
一.路由聚合定义
二.最长前缀匹配原则
采用CIDR技术后,由于"路由聚合",一个IP地址在转发表中可能会匹配多个表项,所以在路由器转发一个IP数据报的过程,应使用最长前缀匹配原则。
§4-2-6 NAT-网络地址转换
网络层实现了"主机到主机"的通信。网络层在IP数据报的首部,指明源IP地址、目的IP地址
传输层实现了"端到端"(进程到进程)的通信。传输层在TCP(或UDP)报文段的首部,指明源端口、目的端口
一. 私有IP地址 (内网IP)
1. 地址范围 (牢记三类):
10.0.0.0~10.255.255.255172.16.0.0~172.31.255.255192.168.0.0~192.168.255.255
2. 分配规则:
- 只允许分配给局域网内部的节点,不允许分配给互联网上的节点。
- 每个局域网内部都可以自行分配这些私有IP地址。
- 私有IP地址是可复用的,只要求局域网内唯一,不要求全球唯一
3. 核心特性:
- 可复用: 私有IP地址在不同的局域网之间可以重复使用(例如你家和我家都可以用 192.168.1.1)。
- 局域网内唯一: 在同一个局域网内部,IP地址必须唯一,不能冲突。
二. 全球IP地址 (外网IP)
- 通常由ISP提供,全球唯一。
- 外网IP 是一个局域网与外界通信时所需使用的IP地址。
三. NAT路由器
这是连接内网和外网的桥梁,负责"翻译"地址。
1. 核心作用
- 转发IP数据报时,进行内网IP、外网IP的相互转换
2. 工作机制 (NAT表)
- 路由器内部维护一张 NAT表,记录地址转换关系。
- 映射关系:
<内网IP : 端口号>↔\leftrightarrow↔<外网IP : 端口号>
3. 数据报处理流程
- 从内网 →\rightarrow→ 外网 (发送):
- 路由器会将数据包的源IP地址 和源端口号修改为路由器的外网IP和新的端口号。
- 从外网 →\rightarrow→ 内网 (接收):
- 路由器根据NAT表,将数据包的目的IP地址 和目的端口号修改回对应的内网IP和内网端口号。
4. 层级归属
- NAT路由器包含传输层的功能: 因为它需要处理和修改端口号 (端口号是传输层的概念)。
5. 对比: 与普通路由器的区别
| 特性 | 普通路由器 (Regular Router) | NAT路由器 (NAT Router) |
|---|---|---|
| 转发行为 | 转发数据报时,不会改变源IP和目的IP | 转发时会更改IP地址和端口号 |
| 功能层级 | 仅包含 网络层 及以下的功能 | 包含 传输层的功能 (涉及端口) |
§4-2-7 ARP地址解析协议
-
IP协议(Internet Protocol,网际协议)是互联网的核心!
-
ARP协议用于查询同一网络中的<IP地址,MAC地址>之间的映射关系
-
ICMP协议用于网络层实体之间相互通知"异常事件"
-
IGMP协议用于实现IP组播
- ARP分组MAC帧样式
一. 作用
在一个局域网内部,可以通过ARP协议查询到一个IP地址对应的MAC地址。
二. ARP表(ARP缓存)
- 记录 (IP地址 ↔\leftrightarrow↔ MAC地址) 之间的映射关系。
- 一个数据结构(每台主机、每台路由器都有自己的ARP表)。
- 需要定期更新ARP表项。
三. 过程
1. ARP请求分组
- 内容:
- 我是谁? ------ 我的IP地址是X,我的MAC地址是Y。
- 我想找谁? ------ 我想找的这个家伙,IP地址是Z。
- 封装与传输:
- ARP请求分组封装进MAC帧(帧目的地址=全1,源地址=Y) ------ 广播帧。
2. ARP响应分组
- 内容:
- 你好,我就是你要找的那个靓仔,我的IP地址是Z,我的MAC地址是V。
- 封装与传输:
- ARP响应分组封装进MAC帧(帧目的地址=Y,源地址=V) ------ 单播帧。
§4-2-8 动态主机配置协议DHCP
§4-2-9 ICMP 网际控制报文协议
(Internet Control Message Protocol)
一.概念
1. 作用
ICMP可以让主机或路由器互相报告网络中发生的差错和异常情况
2. 与IP数据报的关系
- ICMP属于网络层
- ICMP报文封装在IP数据报中
二.常见类型
1. 差错报告报文
(1).终点不可达
- 路由器告诉发送方:目的IP地址不可到达
- 目的主机告诉发送方:目的端口号不存在
(2).时间超过
- 路由器告诉发送方:"你的IP数据报到我这里TTL=0,被我丢了"(路程太远)
- 目的主机告诉发送方:"你的IP数据报被分片了,规定时间内没到齐,我已全部丢弃"
(3).参数问题
- 告诉发送方:"你的IP数据报首部参数不合法、或首部校验出错"
(4).改变路由(重定向)
- 路由器告诉发送方:"对于这个目的网络下次你让另一合路由器帮你转发,路径会更短"
2. 询问报文
(1).回送请求、回送回答
用来探测源主机和目的主机之间的网络通路是否通畅可达
回送请求 (Echo Request) A -> B:在吗?回答我!
回送回答 (Echo Reply) B -> A: 在!
ps:ping命令就是基于回送请求报文、回送回答报文实现功能
(2).时间戳请求、时间戳回答
时间戳请求(Timestamp Request) A→B:我这边现在的时间是xxxx,你那边几点了?
时间戳回答(TimestampReply) B→A:我收到请求的时间是yyyy,我发出回答的时间是zzzz
三.不必反馈ICMP差错报告报文的情况
- 若携带ICMP差错报告报文的IP数据报出错,不再反馈ICMP差错
- 若IP数据报被分片,则无论几个分片出错,都只反馈一次ICMP差错
- 若IP数据报的目的地址为多播地址,不反馈ICMP差错
- 若IP数据报的源地址为特殊地址(如:127.X.X.X、0.0.0.0),则即便发生IP数据报异常也不反馈ICMP差错
§4-3 IPv6
一.概念
1. 地址记法
IPv6地址的冒号十六进制记法 :总共 128bit 地址,16bit 为一段,共8段,记录为十六进制,段间以冒号分隔
(1).二进制
0010000000000001 0000110110111000 1000010110100011 0000000000000000
0000000000000000 1000101000101110 0000001101110000 0111001100110100
(2).冒号十六进制记法
2001:0db8:85a3:0000:0000:8a2e:0370:7334
(3).压缩记法
冒号十六进制记法优化
1.去除每个分段的前导零
2001:db8:85a3:0:0:8a2e:370:7334
- 每个16位段内的前导零可以省略。
2.用双冒号"::"替代连续出现的多个0
2001:db8:85a3::8a2e:370:7334
- 注意:一个地址中只能出现一次双冒号,否则会产生歧义
二.地址资源的分配
IPv6支持即插即用(IP地址自动配置)
一台主机接入网络后,只需向路由器确认本网络前缀,就可以给自己分配IP地址(通常以主机自身的MAC地址作为接口标识符)
三.IPv6地址的分类
IPv6数据报的目的地址有以下三种基本类型:
- 单播(unicast)。就是传统的点对点通信。
- 多播(multicast)。一点对多点的通信,数据报发送到一组计算机中的每一台。
应用:网络会议 - 任播(anycast)。这是IPv6 增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一台计算机,通常是距离最近的一台计算机。
应用:多个DNS服务器共享一个任播地址
§4-4 路由算法与路由协议
§4-4-1 路由算法
一.路由算法&路由协议之间的关系
注:路由协议 = 路由选择协议;路由算法 = 路由选择算法
二.路由算法的分类
根据能否随网络的通信量或拓扑自适应地进行调整变化来划分
1. 静态路由算法
- 由网络管理员手工配置每一条路由
- 实现简单、开销小,不具备自适应能力。适用于小型网络
2. 动态路由算法
路由器 根据网络流量负载和拓扑结构的变化来动态调整自身的路由表
- 距离-向量路由算法(RIP协议)
- 链路状态路由算法(OSPF协议)
三.距离-向量路由算法(RIP)
根据
- 路由器到邻居的距离
- 每个邻居到目的节点的最短距离(最小代价)
来判断路由器到目的节点的最短距离(最小代价)
注:路由器不必关心完整的网络拓扑结构
例题:
四.链路状态路由算法(OSPF)
链路状态路由算法要求每台路由器节点都了解完整的网络拓扑结构 (知道全网共有多少个节点、哪些节点是相连的、其代价是多少等)
只要一台路由器知道完整的网络拓扑结构(数据结构:带权图),就可以用Djkstra算法找到最优转发路径
4-4-2 路由协议
一.分层次的路由协议
1. 如何分层
- 将全世界的网络划分为多个相互独立的自治系统(AS)
- AS的管理单位有权决定在本自治系统内,使用何种内部路由协议(如:RIP、OSPF)
- 每个AS至少要有一台自治系统边界路由器(如R6)与其他自治系统相连
- 各边界路由器之间,使用统一的外部路由协议(如:BGP-4)
- 自治系统之间的路由选择也称域间路由选择,自治系统内部的路由选择也称域内路由选择。
2. 自治系统(AS)
- 全世界目前已接近8w个自治系统
- 每个自治系统拥有全球唯一的AS编号,简称ASN
- 自治系统之间是平级关系,不存在包含关系
- 一个自治系统通常包含一个或多个CIDR地址块
3. 两大类路由协议
(1).内部网关协议(IGP)
- 用于AS内部的路由选择(例:RIP、OSPF)
(2).外部网关协议(EGP)
- 用于AS之间的路由选择(例:BGP)
注:网关=路由器 早期术语沿用至今
二.RIP路由协议(Routing Information Protocol)
1. RIP在协议栈中的位置
RIP属于应用层,它使用UDP传送数据
2. RIP的规定
3. 运行 RIP的路由器之间如何交换必要信息?
- Who,和谁交换信息:仅和直接相邻的路由器交换信息。
- What,交换什么信息:交换的信息是本路由器所知道的全部信息,即自己的路由表
- When,何时交换信息:通常按固定的时间间隔(通常为30秒)交换路由信息
注:为了加快RIP收敛速度,也可以引入触发更新(Triggered Update)机制一一当路由器发现网络拓扑发生变化时,立即向相邻路由器通告拓扑变化后的路由信息,而不必等待30秒。
4. RIP的工作过程示例
(从路由器启动到收敛)
5. RIP的优缺点
(1).RIP 的缺点:
- RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。
- 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
- 当网络出现故障时,路由器之间需反复多次交换信息才能完成收敛,要经过较长时间才能将故障消息传送到所有路由器(慢收敛现象),俗称坏消息传播得慢。
注:距离向量路由可能会出现环路的情况,RIP规定路径上的最高跳数=16是一种防止环路的简单粗暴的方式。
注1:RIP协议支持多条等价路径共存,将它们同时加入路由表,实现负载均衡转发 (如:轮询转发)
注2:此时,转发至Net2的路径形成环路,IP数据报会"兜圈子",直到TTL=0才会被丢弃
(2).RIP的优点
- 实现简单、开销小、收敛过程较快。
- 若一个路由器发现了更短的路由,则这种更新信息就传播得很快,在较短时间内便可被传至所有路由器,俗称"好消息传播得快。
三.OSPF路由协议(Open Shortest Path First)
- 开放最短路径优先协议
1. OSPF在协议栈中所处的位置
2.OSPF原理
-
路由器可以直接探测到的信息:自己和哪些节点直接连接?
-
如何把自己探测到的信息"说给"其他所有路由器?
-
What说什么:
与自己直接连接的所有链路状态 (Link-State, LS)
-
我是谁?
-
我的邻居都有哪些?
-
我到每个邻居之间的代价是多少?带权有向边
-
-
How说:
洪泛法 (Flooding)
- 一传十,十传百,迅速广而告之
- 注意,洪泛信息不可"回流"转发
- 若收到重复的链路状态信息,不可重复转发
-
When什么时候说:
探测到身边有变化时
路由器探测到与自己直接的链路或节点发生变化时,就立即洪泛最新的链路状态信息
不存在"环路信息传播的慢"的问题
-
3.OSPF的特点
-
OSPF允许对每条路由设置成不同的代价,对于不同类型的业务可计算出不同的路由。
例如,OSPF默认基于带宽计算链路代价:metric=参考带宽/接口带宽
注:参考带宽默认为100Mbps
说明:为简化图示,本课程默认两台路由器之间的链路两个方向权值相同,但在现实应用中: 一段链路的两个方向,权值可能不同
直连网络→路由器方向的权值通常=0
-
若到同一个目的网络有多条相同代价的路径,则可将通信量分配给这几条路径。
-
OSPF分组具有别功能,从而保证仅在可信赖的路由器之间交换链路状态信息。
- 防止非法路由器的恶意攻击
- 防止中间人攻击篡改 OSPF洪泛分组
-
OSPF支持可变长度的子网划分和无分类编址CIDR。
-
每个链路状态都带上一个32位的序号,序号越大,状态就越新。(相当于信息的版本号)
迪杰斯特拉算法(Dijkstra's Algorithm)是一个解决单源最短路径问题的贪心算法,旨在从图中的某个源节点出发,找到该节点到所有其他节点的最短路径。
4.迪杰斯特拉算法
- 初始化 :
- 为图中的每个节点分配一个最短路径估值。源节点的估值设为0,其他节点的估值设为无限大(表示不可达)。
- 将所有节点标记为"未处理"。
- 创建一个集合来存储已经找到最短路径的节点。
- 选择当前节点 :
- 在未处理的节点中,选择最短路径估值最小的节点作为当前节点。
- 更新邻居节点 :
- 对于当前节点的每个邻居,计算从源节点到该邻居的路径长度。
- 如果通过当前节点到达邻居的路径更短,则更新该邻居的最短路径估值。
- 标记当前节点为已处理 :
- 将当前节点标记为已处理(即最短路径已经找到)。
- 重复步骤2-4,直到所有节点都被标记为已处理,或者没有可达节点。
- 结果 :
- 最终每个节点的最短路径估值即为从源节点到该节点的最短路径长度。
小例子:
假设有以下带权图:
2
A -------- B
| |
4 | | 3
| |
D -------- C
1
目标:从节点A出发,找到到所有节点的最短路径。
步骤:
- 初始化 :
- 源节点A的最短路径估值为0,其他节点(B、C、D)为∞。
- 未处理节点:A, B, C, D。
- 选择当前节点A (最短路径估值为0):
- 更新邻居节点B和D的最短路径估值。
- B的最短路径估值更新为2(A到B),D的最短路径估值更新为4(A到D)。
- 选择当前节点B (最短路径估值为2):
- 更新邻居节点C的最短路径估值。通过B到达C的路径为2 + 3 = 5,因此C的最短路径估值更新为5。
- 选择当前节点D (最短路径估值为4):
- 更新邻居节点C的最短路径估值。通过D到达C的路径为4 + 1 = 5,但C的最短路径估值已经是5,故不更新。
- 选择当前节点C (最短路径估值为5):
- 此时所有节点已处理完毕。
5. OSPF的区域划分
为了使OSPF能用于规模很大的网络,可将一个自治系统再划分为若干区域(Area)
划分区域后,洪泛法(flooding)交换链路状态信息的范围局限在各个区域,而不是整个AS。这样可以减少网络通信量,也让每个路由器的LSDB更小
6. LSDB/LSA/LSI术语辨析
7. OSPF类型
-
Type 1: Hello分组(问候分组)
各台路由器每隔10秒向直接邻居发送一次"问候分组"(Hello分组),如果超过40秒未收到邻居的问候,就认为该邻居不可达
-
Type2: DD分组(数据库描述分组)
两台路由器的邻居关系建立时,通过数据库描述分组,向邻居给出自己的LSDB摘要(即LSA的头信息)
-
Type3: LSR分组(链路状态请求分组)
路由器通过LSU分组,向邻居传输具体的LSA(可能引发全网洪泛)
-
Type4: LSU分组(链路状态更新分组)
-
Type5: LSAck分组(链路状态确认分组)
四.BGP路由协议(边界网关协议)
1. 定义
- BGP 是一种 外部网关协议 ,用于在 自治系统 (AS) 之间交换路由信息,实现路由选择。
2. 特点
- BGP 力求找到一条自治系统之间 比较好的路由 ,而不是"最佳路由"。
- AS 之间的路由选择必须考虑 政治、安全或经济 等有关因素。
- BGP 采用 路径向量路由算法 ------ 路由器之间通告BGP路由信息时,不仅告知目的地,还告知到达该目的地的 完整路径 (即需要经过哪些自治系统)。
- BGP 是应用层 协议,基于 TCP (端口号 179)。
注:每个AS都有全球唯一的ASN(32bit)
3. 概念
在一个自治系统中,边界路由器一定要运行BGP协议,内部的一些核心路由器也要运行BGP协议。
为简化理解,姑且认为自治系统内所有路由器都要运行 BGP协议,与此同时,也要运行RIP 或OSPF协议。
(1). BGP邻居
- BGP 协议的通信双方称为BGP 对等方 (BGP peers),也常译为"BGP邻居"。
(2). BGP会话
- 建立过程: BGP邻居之间先建立 TCP连接 ,然后在该连接上交换 BGP 报文,从而建立 BGP 会话。
- 两类BGP会话:
- 两个AS的 直连边界路由器 之间,长期保持 eBGP会话。
- AS内部的 BGP路由器 之间,长期两两保持 iBGP会话。
- 注意: 规定AS内 iBGP会话必须全连通 (Full Mesh)。NNN 个路由器形成 N×(N−1)/2N \times (N-1)/2N×(N−1)/2 条 iBGP 会话。
4. BGP路由信息
(1). CIDR前缀
- 指向目的网络。
(2). BGP属性
①. AS-PATH(自治系统路径)
- 描述到目的网络需要经过哪些自治系统(用 ASN 序列表示)。
②. NEXT-HOP(下一跳)
- 对 eBGP: "下一跳"是 eBGP 发送方路由器 自己的IP。
- 对 iBGP:
- 默认: 不修改"下一跳"。
- 特殊情况: 也可修改为 iBGP 发送方路由器自己的IP。
5. BGP的关键规则
(1). 防环路规则
- iBGP 学到的路由 不能 再通过 iBGP 传播给其他 iBGP 邻居(避免环路传播)。
(2). 全连通规则
- 注: AS内 iBGP 会话是 全连通 (Full Mesh) 的。
- 这样可以确保 AS 内所有路由器都能收到从外部学来的、一致的 BGP 路由信息。
6. BGP工作原理
7. BGP路由选择
(1). 问题背景
- 对于 外部AS 的目的网络 X,如果有 多条 AS-PATH 可以走,选哪一条路?
(2). 选择流程
①. 第一步:选择"本地偏好值"最高的路线
- "本地偏好值"由AS 管理员设置 ,相当于"优先级"。
- 通常考虑成本、安全等因素。
②. 第二步:选择"AS跳数"最少的路线
- 注意:AS跳数最少 ,路由器跳数 不一定 最少。
③. 第三步:使用"热土豆路由"选择算法
- 理念: 烫手的土豆,要尽快脱手。
- 原理: 如果多条路线的AS跳数都相同,那么要根据内部网关协议(如 RIP 或 OSPF)找到一条路线让 IP分组 以"最小代价 "离开本自治系统。
- 注: RIP 以 路由器跳数 作为代价,OSPF 以 路径总长度 作为代价。
④. 第四步:选择"BGP标识符"最小的路由
- (BGP标识符 = BGP ID)
- 理念: 如果两个员工说的都很好,就听"老员工 "的(工号更小的)。
- 每一台 BGP 的路由器都有唯一的 32 bit BGP标识符(常选取路由器各接口中更大的IP地址作为标识符)。
- 路由器之间发送BGP报文时,会告知彼此 BGP ID。
8. BGP的四种报文
(1). Open (打开) 报文
- 发送时机: TCP 连接成功后 ,BGP 发出的 第一个报文。
- 作用: 用来与相邻的另一个 BGP 对等方 (peers) 建立 BGP会话,使通信初始化。
(2). Update (更新) 报文
- 发送时机: 发现新的路由信息 、或 发现老的路由信息发生变化。
- 作用: 用来通知某一路由的信息,以及列出要撤销的多条路由。
(3). Keepalive (保活) 报文
- 发送时机: 周期性发送 ,如 60秒一次。
- 如果超出 60×3=18060 \times 3 = 18060×3=180秒 未收到,说明 BGP会话出问题。
- 作用: 用来 周期性地 通知 BGP对等方 "我还活着"。
(4). Notification (通知) 报文
- 发送时机: 检测到BGP错误时 。
- 例如 BGP报文首部参数错误。
- 作用: 用来发送检测到的错误,并立即关闭BGP会话。










































