【撰写中】网络层那些事儿——计算机网络图文笔记
今天聊聊计算机网络中网络层那些事儿:在TCP/IP分层模型中,网络层起着承上启下的作用,它包含着诸多协议,内容十分繁杂,学习起来属实不易。因此,本文将采用图文的形式拆解网络层中的重要知识点,帮助读者一起过一遍网络层的核心知识。
我选取的教材是经典黑皮书“自顶向下”,同时本文的讲解顺序与原书有所区别。
1 整体框架
下面给出网络层的整体框架,我们将顺着这个脉络梳理一遍网络层的核心知识点。
2 网络层概述
首先我们需要把握网络层在网络分层中的地位和作用:向上提供简单灵活、无连接的、尽最大可能交付的数据报服务。
网络层是不可靠的,不保证数据不出错、不丢失、不重复、不失序和超时,越简单越好,所以网络层造价比较低。网络层的主要功能如下所示:
- 功能1:异构网络互联。路由器可以屏蔽各个子网络之间的物理网络异构性,使得应用不需要关注具体的编址方案和路由选择协议。
- 功能2:路由选择。这是一个计划的过程,属于控制平面做的事情,本章后面会重点探讨。
- 职能:根据路由选择协议构造路由表,不断和网络中其他路由器交换信息以维护和更新路由表。
- 功能3:分组转发。这是一个行动的过程,属于数据平面做的事情,本章乃至本书都不会重点探讨。
- 职能:查询转发表、转发、队列管理和任务调度。(转发表和路由表实际上不太一样,我们讨论的时候为了方便,把他俩当同一个东西处理)
SDN的概念了解
网络可以分为数据平面和控制平面。像我们上面说的路由选择就属于控制平面实现的功能,而分组转发就是数据平面实现的功能。
SDN(软件定义网络)是一种区别于传统路由管理方式的创新网络架构。传统的路由管理方式是分布式的,而SDN是集中式的。采用的协议是Openflow。
几个SDN中的概念需要了解一下:
- 南向接口:控制器和转发设备之间建立双向会话的接口。
- 北向接口:SDN对上层提供的编程接口。
3 IP协议
3.1 IPv4协议
3.2 IPv6协议
4 路由算法与路由协议
4.1 路由算法分类
路由算法关注的是如何获得路由表。路由算法大致可以分为两类:一类是静态路由算法(非自适应路由算法),一类是动态路由算法(自适应路由算法)。
静态路由算法需要网络管理员手动配置路由信息,适合小型网络。本章我们主要讨论动态路由算法。常用的动态路由算法可以分为:距离向量路由算法和链路状态路由算法。下面将会通过具体的算法实现来讲述这两类算法。
4.2 自治系统
自治系统AS可以理解为一组统一管理的路由器,类似于现实世界中分区治理的概念。
通过自治系统,我们可以将路由器的选择算法进一步分为自治系统内部(称为域内)的路由选择和自治系统外部(称为域外)的路由选择。
- 内部网关协议IGP:自治系统内部使用。常见如RIP和OSPF。
- 外部网关协议EGP:自治系统之间使用。常见如BGP-4。
对于动态路由算法,我们现在有两种分类,一种是基于算法的实现来分类;一种是基于算法的作用范围来分类。
4.3 距离-向量算法
这个算法之所以叫做距离向量,是因为其交换的信息为到各个节点的距离,多个不同的距离组成了一个向量。实际上,这个“交换的信息”就是路由表。距离-向量算法的路由表长这个样子:
我们从两个视角来看距离-向量路由的执行过程:
- 单个路由器的视角:定期(比如30s)将整个路由表传给与当前路由器直接相邻的节点。
- 全局的视角:每个路由器都参与路由表的交换,更新自己的路由表,从而得到一个到达目标网络的最小代价同路。
在不同的实现中,代价可以被不同的定义。例如,在RIP算法的实现中,代价被定义为跳数。
然而,由于路由器之间的传递“整个”路由表,如果整个网络的规模非常大的话,这一笔传递的开销是很大的。因此,距离-向量算法只适用于规模较小的网络。
4.3.1 RIP算法
本节针对距离-向量算法的一种实现——RIP算法进行深入的解读。
RIP协议的全称是路由信息协议,其最大特点是简单。算法建立在距离-向量算法的基础上,并规定“距离”为跳数。
RIP还有其他规定:
- 一个路径中最多包含15个路由器,距离为16的时候表示不可大。
- 默认每30s广播一次RIP路由更新信息。
我们以最开始路由表为空作为例子,经过一次交换的时候这个路由器就可以拿到距离自己跳数为1的路由表,经过k次交换后就可以拿到距离自己跳数为k的路由表。这样推演可知,当RIP收敛的时候,每个路由器到每个目标网络的距离都是距离上最短的。
注意:RIP只可以保证距离最短,不可以保证时间延迟最短。
然而,虽然实现简单,RIP协议也存在下面的缺点:
- 仅支持小规模网络。
- “坏消息传得慢”现象。这是由于迭代的时候
针对坏消息传递慢的特点,我绘制了一张图,帮助读者更好的理解这个过程:
假设刚开始路由器R1、R2、R3都收敛,如果Network1突然不可达,消息会如何传递呢?理解了这个过程就能够理解坏消息传递慢的规则,详细请见下面图片:
4.4 链路状态算法
4.5 不同算法的对比
- 转发是部分的路由表还是全局路由表。
- 转发是与相邻路由器之间,还是所有路由器。
- 转发是定时进行,还是事件触发时进行。
- 采用的协议。
附:中英术语表
采用双语教学的学校往往会考察中英文的翻译,下面是本章的中英术语表。
- CBR:constant bite rate 固定比特流
- ABR:avaliable bit rate可用比特流
- VC:虚电路网络
- CAMs:content addressable memory 内容可寻址存储器
- TCAMs:ternary content addressable memory 三元内容可寻址存储器
- 输出队列
- WFQ:加权公平队列
- 输入队列:
- drop tail:去尾,buffer满了的策略。
- AQM:active queue management 主动队列管理
- RED:Random Early Detection 随机早期检测
- HOL:head-of-the-line 线头前部阻塞(尽管buffer没有满,前面的包可能会阻塞后面的包)
- CIDR:Classless Interdomain Routing 无类别域间路由选择
- DHCP:Dynamic Host Configuration Protocol 动态主机配置协议
- NAT:Network Address Translation 网络地址转换
- ICMP:因特网控制报文协议
- load- sensitive algorithm:负载敏感算法,根据拥塞程度来改变链路代价。
- load- insensitive algorithm:复杂迟钝算法。不会根据拥塞程度来改变链路代价。比如说:RIP、OSPF、BGP
- LS:Link State 链路状态算法
- DV:Distance Vector 距离向量算法
- ASs:Autonomous System 自治系统,分层路由的核心
- gateway routers:网关路由器
- hot potato routing:热土豆路由协议。
- RIP:Routing Information Protocol 路由信息协议
- OSPF:Open Shortest Path First 开放最短路径优先
- BGP:Borader Gateway Protocol 边界网关协议
- Poisoned Reverse:毒性逆转,解决RIP中无限ping-pong的错误。
- TOS:Type of Service 服务类型
- QOS:Quality of Service 服务质量
- 感谢你赐予我前进的力量