数据平面路由转发与IP报文
计算机的网络层可以分为数据平面和控制平面。数据平面执行的任务是转发功能,就是将数据从路由器的输入端口,发送到输出端口。控制平面执行的功能是路由选择功能,就是选择报文从源地址到目的地址经过的路由器的路径。这里主要讲的路由器如何转发一个报文(数据平面),然后讲一下IP
报文。
文章目录
1. 路由器的功能
路由器的转发有两种,基于目的的转发和通用转发,这里我们用基于目的的转发,后面讲IP
的时候再讲通用转发。下图展示了路由器的整体状态:
![](https://i-blog.csdnimg.cn/blog_migrate/ece133be7c4953f8ecc18ab4749fa8f2.png)
1.1 输入端口
在每一个输入端口里,都有一个转发表。输入端口会通过将报文的目的地址与转发表相匹配来决定将报文发送到哪个输出端口。
下面是一个例子看图:
Prefix | Output port |
---|---|
11001000 00010111 00010 |
0 |
11001000 00010111 00011000 |
1 |
11001000 00010111 00011 |
2 |
Otherwise | 3 |
图中是一个转发表,匹配采用的是最大前缀匹配规则。假设我们的IP
地址是11001000 00010111 00011000 10100001
,这个地址同时与第2
项和第3
项匹配上了,但是根据最大前缀匹配规则,我们选择的是第2
项,将报文发送的1
号输出端口。
1.2交换结构
交换结构将一个报文从输入端口发送到输出端口。经典的有三种方式,总线,内存和纵横式。
下面是介绍这三种交换方式的各自的特点:
- 总线,一次只能通过一个分组。
- 内存,一次仅能执行一个内存的读写。
- 纵横式,当报文的目的端口不是同一个时,可以并行地发送多个报文。
1.3 输出端口
到达输出端口后,输出端口将报文发送出去。
1.4 排队现象
1.4.1 输入排队
即使交换结构很快,在输入端口仍然可能发生排队现象。
考虑下面这种情况,我们采用纵横式的交换结构,假设现在在输入队列的报文如图1
,同时我们假定当上中下三个队列中要发送的报文相同时,优先发送上面队列的报文。
- 第一次发送时:由于上下队列中的要发送的报文相同,优先发送上面的报文到对应的输出端口。同时并行的发送中间队列的报文到对应的输出端口(对应图
1
)。 - 第二次发送时:由于上下队列中的要发送的报文还是相同的,优先发送上面的报文到对应的输出端口(对应图
2
)。 - 第三次发送时:现在只有下面的队列有报文,发送第一个报文。此时下面还剩下一个报文。
于是我们看到,即使没有与下面队列左边那个报文竞争的,但是由于他前面的报文一直没有发送,所以他也一直被堵塞着。这就导致了他白白等待了三个报文的发送时间,这种现象叫做输入队列的线路前部阻塞(HOL)。由于有HOL的存在只要输入链路的分组到达速率达到其容量的58%
,在某些假设前提下,输入队列长度就会无限增长。
![](https://i-blog.csdnimg.cn/blog_migrate/7a964058ebf4d3ebc16e281ba7c349c9.png)
1.4.2 输出排队
当到达报文的速度超过输入端口发送报文的速度时,输出队列就会迅速的被填满。当输出队列满了的时候,一是采取弃尾,把后面到达的报文全部丢弃,二是删除前面的分组,给新的分组提供位置。在某些情况下,可以在队列满之前,先丢弃一个分组(或在首部添加标志),这可以向发送方发送一个拥塞信号,来调控阻塞情况。
同时当报文在输出队列排队时,还涉及到了分组调度,即如何排队。现在有三种排队方法,先进先出,优先权排队和循环和加权公平排队。
- 先进先出,就是先来的报文也先发送出去,这和我们日常排队买东西一样。
- 优先权排队,将队列分为优先权高的和低的,只要优先权高的有分组,就先发送他的分组。这就和我们有应急车道差不多。
- 循环和加权公平排队,循环排队就是把报文分成几类,然后循环的一类一类的发送报文,如果其中一类在轮到他是在他的队列中没有报文,那就直接跳过。加权公平排队把报文分成几类,并且第 i i i类的权重为 w i w_i wi,加权公平排队保证第 i i i类接受到的服务等于 w i / ∑ w i w_i/\sum w_i wi/∑wi。当加权公平排队的 w i w_i wi都相同时,加权公平排队和循环排队的作用就一模一样了。
2. I P v 4 IP_v4 IPv4报文
2.1 报文格式
I P v 4 IP_v4 IPv4的报文格式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/07c2f44a3d90d1f8d8afd2a454ee450b.png)
I P v 4 IP_v4 IPv4的关键字段解释如下:
- v e r s i o n version version版本字段:根据他来识别 I P IP IP数据报的版本,即 I P v 4 IP_v4 IPv4或 I P v 6 IP_v6 IP