# 1. 网络层概述 - 网络层中两个关键功能: - 转发:(数据平面)实际传输数据包。纳秒内操作 - 路由:(控制平面)规划路径。包括传统路由算法(在路由器中实现,计算转发表,第5章)和软件定义网络SDN(服务器集中远程控制,第5章)。毫秒内操作 # 2. 路由器工作机理 - 最长前缀匹配:转发表存地址范围到链路接口号的影射。查找给定目标地址的转发表条目时,使用与目标地址匹配的最长地址前缀 - 交换 - 经内存交换:数据包复制到系统内存然后再转发,速度受内存带宽限制 - 经总线交换:数据报通过共享总线从输入端口存储器到输出端口存储器,速度受总线带宽限制 - 经互连网络交换:连接多处理器,将数据报碎片化为固定长度的单元,通过交换结构交换单元 路由器交换结构 - 排队:到达速率超过线路速度时进行缓存 - 输入端口排队:输入缓冲区溢出导致排队延迟和丢失;线路前部(HOL) 阻塞(队列前面的排队数据报阻塞,后面的数据报就堵住了,一个输出端口的阻塞可能导致多个输出端口阻塞) - 输出端口排队:可能输出缓存溢出导致丢失 - 缓存量计算:RTT * 链路容量C(单流或少流适合);或$\frac{RTT\times C}{\sqrt{N} }$​,N为流的数量(适合多流) - 调度:先进先出;设置优先级;分类,每个类轮流调度;加权的分类轮流调度 # 3. IP:互联网协议 - IP数据包格式 IP报文结构 - 分片:网络链路具有最大可能的链路级帧,所以要将IP数据报分片 - e.g. 4000B(20B报头+3980B数据)的数据报拆成(20B+1480B)+(20B+1480B)+(20B+1020B)的形式。另外还需要设置offset=字节偏移量/8 - 子网:具有相同子网部分 IP地址,可以不靠中间路由器物理相互联系 - 地址表示:a.b.c.d/x,x是子网掩码,表示子网共同的IP有x位 - 有限广播地址255.255.255.255,该报文会交付给相同子网中的所有主机(常用于DHCP);定向广播地址:将IP和子网掩码相与计算出网络号,然后子网掩码取反后与网络号或运算,即为广播地址,用于向特定子网内的所有设备发送广播 - DHCP:动态主机配置协议 1. 主机加入网络,255.255.255.255广播寻找DHCP服务器 2. DHCP服务器广播回复该主机,提供一个IP 3. 主机广播回复DHCP服务器,确认占用该IP 4. DHCP服务器广播回复主机,同意主机占用该IP 还会提供第一跳路由器的地址、DNS 服务器的名称和 IP 地址、网络掩码 - NAT:网络地址转换 - 传出时:将内网主机的源(内网IP,Port)对外转换为路由器的源(外网IP,新Port) - 传入时:将外网主机的目的(路由器外网IP,新Port),转换回内网主机(内网IP,Port) - IPv6:IP地址16字节。头部固定长度 40 字节,不允许分片 # 4. 通用转发和SDN - OpenFlow:每个路由器都包含一个流表,该流表由逻辑集中式路由控制器计算和分发 - 流表:匹配+动作转发表(e.g. 路由器匹配为最长的目标IP前缀,动作为转发链接;交换机匹配目标 MAC地址,动作为转发或洪泛)