计网学习笔记六 Network Layer Overview

科技资讯 投稿 6800 0 评论

计网学习笔记六 Network Layer Overview

网络层有什么作用呢?用一句话来说,就是需要负责将传输层的报文段从发送端传输到接收端。再详细一点点就是:

    在发送方将传输层传下来的数据报文段封装成网络层数据报;
  • 在接收方将接收到的数据报向上送到传输层;
  • 网络层协议在所有的host和router都有应用;
  • router需要检查流经它自身的所有数据报的header。

Network Layer Functions

routing 和 forwarding

routing就是提前决定好一条旅游的路线(从哪到哪然后到哪再到哪……),forwarding则是在路线中的某一个站点进出的过程。

Routing

routing使用路由算法找到一条从src到dest的最短路径。

routing属于网络层的控制平面,需要多个路由器进行协调,以后慢慢阐述。

Forwarding

Forwarding 是网络层数据平面唯一需要实现的功能。“

Forwarding通过switching,来将数据包从节点入口移动到指定的节点出口,“在某个时刻一个包进来了,决定在哪个端口出去”。在这个过程还需要做error handling, queuingscheduling

forwarding table,起到了类似于交换机表的作用:

forwarding 时网络层还会提供一点其它的功能,如queuing 和 scheduling,因为拥塞实时存在,所以加上这两个功能。

Service Model

service model)是指,如果想要传输一个数据报,那么传输所用的"channel"应该为什么样子的呢?

对需求做出抽象后产生的服务功能越强,那么实现起来的代价就越大——所以作为应用最广的协议层,便宜很重要!

可以看到,IP协议的best effort服务真是够鬼舞的……好像什么都干不了,看看ATM协议能做的还真多,还分了四种优先级供人选择。

Inside the Router

Overview了网络层提供的功能和服务,我们来看路由器的工作原理,看它是如何进行forwarding的。

总体路由器系统容量

\[Router\space capacity = N * R \]

在 RFC 8238 第五部分的定义(5.1)有:

The term "nominal value of line rate" defines the maximum speed capability for the given port -- for example (expressed as Gigabit Ethernet, 1 GE, 10 GE, 40 GE, 100 GE。

路由器的属性差异

    Core 核心路由器
    • R = 10/40/100/200/400 Gbps
    • NR = O(100 Tbps (Aggregated速率
  • Edge 边缘路由器
      R = 1/10/40/100 Gbps
  • NR = O(100 Gbps
  • Small business 小型路由器(家用)
      R = 1 Gbps
  • NR < 10 Gbps
  • 路由器的实现机制

      两个平面:控制平面负责routing,数据平面负责forwarding
    • 控制平面由一系列处理器和软件组成,路由器之间进行交流决定路由算法;
    • 组成部分包括:输入端口、交换结构、输出端口、路由处理器。

    问:为什么输入输出端口以及交换结构大部分用硬件实现?

    Input Port Functions

    输入端口主要有以下四个任务:

    线路端接和链路层处理后,我们来到了执行查找输出端口的步骤。转发表通过路由处理器计算和更新(或者由SDN转发过来的内容更新,SDN在控制平面会讲),转发表从路由处理器经过独立总线复制到 line card中,使用副本可以使得查找决策可以在各个输入端口上分别执行,无须调用集中式路由处理器。

    如何处理这样的规模问题?采用地址聚合。(可扩展性好)我们用最长前缀匹配规则 LPM rules来对地址们进行聚合。

    来看一个例子。假设我们的交换机有四个端口,给出各个端口接收到的packet的地址范围(为了方便,用一个字节);可以看到这些地址的LPM分别是蓝色标记的部分:

    由于需要达到纳秒级别执行,即使是用硬件执行查找,简单线性搜索匹配还是太慢。所以我们用一个Trie tree来查找匹配。(或者看这篇:路由查找算法研究综述)这是针对前缀查找问题的一个好方法,有点类似哈夫曼树,可以基于前缀长度而不是前缀内容做线性遍历。

    Switching fabric

    交换结构可以由三种不同的交换技术实现,即内存memory、总线bus和纵横式crossbar

    switching rate是指packet从输入端口传输到输出端口的速率,通常以输入/输出的line rate的倍数来衡量,

    memory

    现代的很多路由器同样采用memory方式,但与早期不同的是,查找packet并将其switch进内存中的行为是由输入端口的line card进行处理的。(这种方式很便宜,相对其它两种)

    bus

    因为一次只有一个packet可以通过总线(同一时间的其余packet需要原地等待),所以bus方式的switching rate与背板总线速率有关。

    crossbar

    non-blocking的。

    Output Port Function

    输出端口需要做的就是选择并取出正在queueing的packet,然后执行链路层功能,再进行物理层线路端接传输。

      Classifier:流分类器,负责将packet分到各个流中;
    • Buffer management:决定哪一个packet以及在什么时候会被丢弃;
    • Scheduler:packet调度器,在queueing的packets中决定哪一个packet以及在什么时候会被传输走;

    在最简单的FIFO机制路由器里面,没有classification机制,buffer的management仅仅是把buffer尾部溢出的packet丢弃,scheduler也只是简单地使用FIFO来对packet调度——谁先来谁就能先出去。FIFO机制弊端太多,我们来看看这三个组成部分可以在此之上有什么提升:

    Packet classification

    Classifier可以根据packet的header来进行流分类(有意义的调度必须要先分类):

    Scheduler

    Priority scheduler)、加权公平调度等。

    对于这两个调度算法来说,buffer里面的每个流都有一个buffer队列。优先级调度的策略很容易理解:就是优先级越高的队列总是比优先级低的队列先进行packet传输;而加权公平调度则是有几种情况:最简单的round-robin方式就是简单的对每一个队列都进行周期性的packet传输,你一下我一下;而weighted fair queue(WFQ方式是对队列进行加权后,按照权值来进行周期性循环。

    VC网络(ATM和数据报网络(Internet

    在第一节讲过我们的network的连接可以分为电路交换模式分组交换模式。在这里我们来说一下它们在网络层中分别对应使用的具体协议实现:电路交换(virtual circuit网络)对应的是ATM协议,而分组交换(datagram网络)对应的是IP协议。

    virtual circuit网络

    每一个在VC网络上传输的packet都会带着一个VC number,VC number在路线上的每一个link存在,它在转发表中的使用如下:

    Signaling Protocols)来建立、维持以及断开VC连接,具体协议有ATM, frame-relay, X.25,但是在今天的Internet已经基本看不见了(因为实现昂贵,昂贵的原因:需要保存途径连接的状态)

    datagram网络

    和VC网络的转发表不同,datagram网络的转发表记录的src地址可能是switch地址,也可能是一整个subnet的地址群:

    Virtual Circuits vs Datagram Networks

    相关资料:Virtual Circuits vs Datagram Networks;有一个小的总结:

    编程笔记 » 计网学习笔记六 Network Layer Overview

    赞同 (35) or 分享 (0)
    游客 发表我的评论   换个身份
    取消评论

    表情
    (0)个小伙伴在吐槽