一条路由是如何传播的:一个简化的例子
假设有一家小公司,使用AS 64500(私有编号范围内的号码,此处仅作示意),拥有地址段198.51.100.0/24,并向一家区域运营商购买转接服务。公司的路由器把这段地址通告给运营商,运营商在AS路径中加入自己的AS编号后,再通告给它的上游和对等方,对方再依次添加自己的编号。经过几跳之后,地球另一端的路由器就会得到一条记录:要到达198.51.100.0/24,把流量送往某个邻居,经过若干个AS,最终到达64500。如果公司的线路故障,运营商会撤回通告,其他地方的路由器会改用其他已知路径,或者彻底失去这条路由。这个收敛过程可能需要几秒到几分钟,所以互联网故障很少是瞬间、均匀发生的。
BGP通告的地址段究竟是如何划分的
如果好奇AS通告IP地址段时使用的表示方法,可以了解一下CIDR表示法——这是简洁表达地址块及其大小的基础机制,理解它会让路由通告变得容易读懂得多。/24包含256个地址,/16包含65,536个,前缀长度每减少1位,地址块就翻一倍。全球路由表中的IPv4前缀数量已达到百万量级,每台路由器都需要存储这些条目。
真正在洲际之间承载流量的是什么
BGP决定的只是逻辑上的路径,而真正在各大洲之间物理传输数据的,是海底电缆。BGP的逻辑路由与实体电缆网络相结合,才构成了一个统一的全球互联网。当某条电缆中断时,BGP会把流量切换到其余线路上,不过备用线路的容量可能会吃紧。
运营商如何自我防护
网络运营商通常采取多层防护:对客户的通告做过滤,确保客户只能通告自己的前缀;限制从任一邻居接收的前缀数量;为自己的地址空间发布ROA;拒绝未通过起源验证的路由。这些措施单独看都不完整,所以严重的路由事故每年仍会发生。对一般组织而言,最现实的做法是发布准确的ROA,并选择严格执行过滤和验证的服务商。
常见问题
我家里用的路由器也用到BGP吗?
不会。家庭或办公室的内部网络通常依靠静态路由,或DHCP分配的默认网关信息就足以正常运行。BGP专门用于拥有自己AS编号的组织——例如运营商、云服务商和大型企业——之间交换路由信息。
普通用户能察觉到BGP劫持正在发生吗?
普通用户通常只会感觉到某个网站突然变慢或无法访问,很难直接判断原因是否出在BGP上。多数情况下,是网络运营商或安全公司通过监控路由,在事后才确认BGP路由错误是根本原因。加密连接(HTTPS)能限制攻击者对被劫持流量的利用,但不能阻止流量被引走。
BGP和OSPF有什么区别?
OSPF是内部网关协议,用于在单个组织的网络内部,根据链路成本找出最短路径。BGP是外部协议,在不同组织之间交换可达性信息,主要根据商业关系等策略而不是单纯的速度来选路。大型网络通常两者并用:内部使用OSPF或IS-IS,边界使用BGP。
小企业可以自己运行BGP吗?
可以,但需要有自己的AS编号和独立的公网IP地址段,二者通常通过区域互联网注册机构或服务商申请,还需要有愿意与你建立BGP会话的上游。大多数小企业并不需要,使用运营商分配的地址空间就足够了。只有在需要多线接入(同时连接多家运营商以保证冗余)时,BGP才变得有价值。
有了RPKI,BGP就安全了吗?
RPKI是重要的一步,但并不完整。路由起源验证能防止许多意外劫持和简单的恶意劫持,但它不验证完整的AS路径,因此更复杂的路径操纵仍然可能发生。路径验证方面已有新的技术,但部署有限,所以RPKI最好被看作多层防护中的一层。