|
| 1 | +## 4.1 概述 |
| 2 | + |
| 3 | +### 4.1.1 转发和路由选择 |
| 4 | + |
| 5 | +网络层的作用,将packet从一台发送主机,移动到一台接收主机,为此,需要两种重要的网络层功能: |
| 6 | ++ 转发forwarding:当一个packet到达路由器的一条输入链路时,路由器必须将该packet移动到适当的输出链路。 |
| 7 | ++ 路由选择routing:当packet从发送方流向接收方时,网络层必须决定这些packet所采用的路由或者路径。计算这些路径的算法被称为路由选择算法routing algorithm |
| 8 | ++ 建立连接 connection setup : 网络层体系结构,如ATM,帧中继,MPLS,要求从源到目的地沿着所选择的路径彼此握手。。。 |
| 9 | + |
| 10 | +转发是指将packet从一个输入链路接口移动到适当的输出链路接口的路由器本地动作。路由选择是指网络范围的过程,以决定packet从源到目的地所采取的端到端的路径。 |
| 11 | + |
| 12 | +每台路由器有一张转发表forwarding table, 路由器通过检查到达packet的首部字段的值来转发packet,然后使用该值在该路由器的转发表中索引查询。 |
| 13 | + |
| 14 | +路由选择算法决定了插入路由器的转发表中的值。路由选择算法可以是集中式的,也可以是分布式的。路由器接收路由选择协议报文,该信息被用于配置其转发表。 |
| 15 | + |
| 16 | +分组交换机:一台通用交换设备,它根据分组首部字段的值,从输入链路接口到输出链路接口转移packet。 |
| 17 | ++ 链路层交换机 link-layer switches:基于链路层中的值做转发决定 |
| 18 | ++ 路由器 router:基于网络层字段的值做转发决定 |
| 19 | + |
| 20 | +### 4.1.2 网络服务模型 network service model |
| 21 | + |
| 22 | +定义了packet在发送与接收端系统之间的端到端运输特性。 |
| 23 | + |
| 24 | +网络体系结构|服务模型|带宽保证|无丢包保证|有序|定时|拥塞指示 |
| 25 | +---|---|---|---|---|---|--- |
| 26 | +因特网|尽力而为|无|无|任何可能的顺序|不维护|无 |
| 27 | +ATM|CBR|保证恒定速率|是|有序|维护|不出现拥塞 |
| 28 | +ATM|ABR|保证最小速率|无|有序|不维护|提供拥塞指示 |
| 29 | + |
| 30 | +ATM Asynchronous Transfer Mode 异步传输模式,信元中继。 |
| 31 | + |
| 32 | ++ CBR Constant Bit Rate ATM网络服务 |
| 33 | ++ ABR Available Bit Rate ATM网络服务 与因特网不同的是,cell不会被重新排序 |
| 34 | + |
| 35 | +## 4.2 虚电路和数据报网络 |
| 36 | + |
| 37 | +网络层与传输层类似,也提供无连接服务和连接服务。两层的主要差异如下: |
| 38 | ++ 网络层向传输层提供主机到主机的服务,而在传输层中,这些服务是向应用层提供的进程到进程的服务 |
| 39 | ++ 特定的计算机网络(因特网、ATM、帧中继)不能同时提供无连接服务和连接服务 |
| 40 | + + 仅在网络层提供连接服务的计算机网络称为虚电路Virtual-Circuit网络 |
| 41 | + + 仅在网络层提供无连接服务的计算机网络称为数据报网络 datagram network |
| 42 | ++ 在传输层实现的面向连接的服务与在网络层实现的连接服务是根本不同的。网络层的连接服务不仅在端系统中实现,也在网络核心的路由器中实现。 |
| 43 | + |
| 44 | +### 4.2.1 虚电路网络 |
| 45 | + |
| 46 | +一条虚电路,就是某些网络在网络层的连接,组成如下 |
| 47 | ++ 源和目的主机之间的一条路径,即一系列链路和路由器 |
| 48 | ++ VC号,沿着该路径的每段链路的一个号码 |
| 49 | ++ 沿着该链路的每台路由器中的转发表表项 |
| 50 | + |
| 51 | +无论何时跨越一台路由器创建一条新的虚电路,转发表就增加一个新表项。 |
| 52 | + |
| 53 | +虚电路有三个阶段 |
| 54 | ++ 虚电路建立:传输层与网络层联系,制定接收方地址,等待网络建立虚电路。 |
| 55 | + + 网络层决定发送方与接收方之间的路径 |
| 56 | + + 为沿着该路径的而所有链路确定一个VC号码。 |
| 57 | + + 网络层在沿着路径的每台路由器的转发表中增加一个表项 |
| 58 | + + 预留虚电路路径上的资源 |
| 59 | ++ 数据传送 |
| 60 | ++ 虚电路拆除:发送方通知网络层终止虚电路。更新路径上每一台路由器的转发表。 |
| 61 | + |
| 62 | +启动与终止虚电路的报文称为信令报文signaling message, 用来交换这些报文的协议称为信令协议signaling protocol. |
| 63 | + |
| 64 | +### 4.2.2 数据报网络 |
| 65 | + |
| 66 | +每当一个packet到达路由器时,会根据该路由器的转发表匹配目的地址的前缀,根据最大前缀匹配原则将该packet送往匹配的输出链路。 |
| 67 | + |
| 68 | +### 4.2.3 虚电路和数据报网络的由来 |
| 69 | + |
| 70 | ++ 虚电路的概念来自电话界,采用了真正的电路。 |
| 71 | ++ 因特网连接的端系统比较复杂,所以使网络层服务模型尽可能简单,另外的功能在更高的层次实现 |
| 72 | + |
| 73 | +这么设计导致了很有趣的结果 |
| 74 | ++ 因特网网络模型保证最少,导致可以使用各种不同的链路层技术:卫星,光纤,无线等 |
| 75 | ++ 新增网络服务,只需要在网络中接入一个主机提供服务即可 |
| 76 | + |
| 77 | + |
| 78 | +## 4.3 路由器工作原理 |
| 79 | + |
| 80 | + |
| 81 | + |
| 82 | ++ 输入端口:物理链路与路由器相连的物理层功能;链路层功能;通过查询路由选择处理器决定输出端口 |
| 83 | ++ 交换结构:将输入实处端口相连,这种交换结构完全包含在路由器中,它是一个网络路由器中的网络。 |
| 84 | ++ 输出端口:存储从交换结构接收的packet,并执行必要的链路层和物理层功能 |
| 85 | ++ 路由选择处理器:执行路由选择协议,维护路由表和连接的链路状态信息,并未路由器计算转发表。并且执行网络管理功能。 |
| 86 | + |
| 87 | +路由器转发平面 router forwarding plane 一台路由器的输入端口,输出端口,和交换结构共同实现了转发功能,并且总是用硬件实现,以ns尺度运行(远快过硬件实现的速率)。 |
| 88 | + |
| 89 | +路由器控制平面 router control plane 在毫秒或秒尺度上运行,通常用软件实现,并在路由选择处理器上执行。 |
| 90 | + |
| 91 | +### 4.3.1 输入端口 |
| 92 | + |
| 93 | + |
| 94 | + |
| 95 | +转发表由路由选择处理器计算并更新,而且会复制到每个端口中(上上图虚线),这样每次转发时,不需要调用处理器。 |
| 96 | + |
| 97 | +由于转发速度限制,查找必须在纳秒级执行,因此,不仅必须要用硬件进行查找,而且需要对大型转发表使用超出简单线性搜索的技术; |
| 98 | +同时必须给于内存访问时间以特别关注,这导致用嵌入式片上DRAM和更快的SRAM内存来设计。 |
| 99 | +三态可寻址存储器 Tenary Content Address Memory 也经常被用于查找。 |
| 100 | + |
| 101 | +通过查找确认某packet的输出端口后,packet即可进入交换结构。 |
| 102 | + |
| 103 | +输入端口的其他动作: |
| 104 | ++ 物理层和链路层处理 |
| 105 | ++ 检查packet的版本号,校验和以及寿命字段,并且重写后两个字段 |
| 106 | ++ 更新用于网络管理的计数器 |
| 107 | + |
| 108 | +### 4.3.2 交换结构 |
| 109 | + |
| 110 | + |
| 111 | + |
| 112 | +#### 1 经内存交换 |
| 113 | + |
| 114 | +最简单,最早的路由器是传统计算机。交换是在CPU控制下完成的。 |
| 115 | + |
| 116 | +#### 2 经总线交换 |
| 117 | + |
| 118 | + |
| 119 | + |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | + |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | + |
| 128 | + |
0 commit comments