Ad Hoc Networks TOPIC THREE
- 其他资料
- 知乎传送门:IP 基础知识全家桶
- 距离矢量和链路状态的对比
正文:
Classful IP Address Structure
- network size: A>B>C
- network number : C>B>A
IP地址:用来识别network interface的唯一地址
为什么IP地址分配给network interface而不是物理设备:一个物理设备可能有多个network interface(比如router)(识别物理设备的是network point of attachment (NPA) address, or MAC address or data link identifier.)
Private IP addresses
- intro net IP address
- Internet IP address
Router——connect different network
- 两种路由协议
- routable protocol:可路由协议,也被称为路由协议,是那些封装信息和数据到包(比如IP)
- routing protocol:路由器会寻找每个packet最佳的路由路径
Internet Protocol(Routable Protocol)
- 在不同的network中传输信息
- Two main function:
- packet forwarding
- 分割PDU
router在network layer增加header时做了什么
IP Datagram Structure
IHL: Internet header length。表明data起始位置(因为header里有可选内容,header的长度并不固定,所以需要记录length)
Total length:总长度(总长度最大64kb,因为最多记录216bits;最小20bytes)
TTL: 当前datagram的有效时长(现实中的设备时钟可能不同步,所以不使用时间戳而是规定可在不同network中传播的次数)
Protocol:Transport layer中适用哪种协议(TCP【Transmission Control Protocol】/ UDP【User Datagram Protocol】)
Fragmentation
保证IP datagram 能被所有网络中的network所处理
- ID:所有片段ID要相同
- offset:
- MF:表示当前片段的last unit是否是原数据的尾部(而不是:是否还有片段,因为片段到达顺序不确定),1表示否;0表示是
- DF:表示当前数据能否被分段(设置选项1的原因是:可用来检测network最大容量),0表示可以分段;1表示不能
Summary
IP的特点:
- 两大功能:发送数据表/ 分割数据表
- 不受MTU(Maximum Transmission Unit)影响
- 不能保证服务质量
- 独立于物理网络:与终端结构(mechanism)无关
- 是逻辑地址
IP Network Routing
自治系统(Autonomous System),即AS
根据实现方法分类:
- source routing:每个节点根据预先选择的节点路径经行跳跃。
- next-hop routing:每个节点只关心下一个
在计算机网络中,源路由允许数据包的发送者部分或完全指定数据包在网络中的路线。相反,在非源路由协议中,网络中的路由器根据数据包的目的地确定路径。
Default Route
- end-system:出入经由一个router(该router为默认router)
- 其他:出入经由不只一个router(此时需配置一个默认router)
Static Routing
Dynamic Routing
Convergence
整个网络中的路由器拥有统一的关于网络连接的更新信息
一. Distance Vector Protocols 距离向量协议
DV Algorithms
特点
- 让每个路由器通过邻居路由器得知network中的其他节点
- 获取全部信息后,根据DV Algorithms更新Routing Table,计算通向每个可能目的地的最短路径和下一跳
- 信息将被广播,耗费时间
- 难以“收敛”(整个网络中的路由器拥有统一的关于网络连接的更新信息)
- 难以保留正确信息
方框:路由器
实线:network
数字:cost(在本图中,跳数不是评判cost的唯一标准,可能还包括电缆长度和带宽)
Routing Table
Updates
输入和输出
Routing Information Protocol (RIP)
- 通过提供输入参数信息,提供了让网络中路由器发送更新的途径。借此每个路由器生成routing table
- 是一种 interior gateway protocol (IGP),实现了DV Algorithms
- 最多15跳 (16代表不可用/ 无限远)(因此适用于小型网络)
format:
- 一条信息最大512bytes (entry<dest, cost>)
- 每个RIP响应最大25条entries(25个相邻节点),大于25需要更多的RIP
- 当一个初始化的路由器出现,它将向邻居路由器发送request请求RIP信息,计算自己的routing table
UDP:User Datagram Protocol
- 路由器定期向邻居发送自己包含routing table entries的响应;当收到请求,也会发送响应(即使没到发送周期)
- 从相邻节点获得信息的途径:定期广播/ 发送请求(事件驱动)
1. 一些周期
- 每隔30s路由器向邻居广播自己的路由表信息
- 180秒未收到RIP更新:标为无限远
- 又过了60秒:从routing table中删除
2. routing table 更新
如果收到的更新dest比已有的dest更大:将其标为无限远
3. routing table 结构
- Destination IP Address(只包含net ID部分,因此不被网络内部的结构改变所影响)
- Metric (hop count 1-15, 16 unreachable)(cost)
- Next Hop, Advertising Router – split horizons
- Timeout (seconds)
- 两种RIP routers
- 主动:周期性广播
- 被动:不发送更新
4. 存在的问题
场景一
B与C的连接断开,B将C修改为unreachable,在B广播更新前,B收到了A的过时的更新。
出错原因:发出的更新信息只包含目标和cost
解决办法:Split Horizon 和 hold down
5. 解决办法
- 减缓错误更新传播速度的方法,促进收敛(仍然无法完全避免成环)
- Split Horizon 水平分割:更新信息不包括接收方作为下一跳的条目
- Poison Reverse 毒性逆转:推迟unreachable的广播(两个广播周期)
- Triggered Updates 触发更新:发生事件时马上更新(不再等待30秒)
- Hold-Down Timer:等60秒再修改路由消息
6. Summary of RIP
- 广播耗能
- 跳数限制
- 会成环
- 只存储一条路径
- 无安全保障
- 收敛过慢
- • Broadcasts (not scalable)
• Infinity of 16 (not large enough)
• Routing loops
• Poor robustness – only one path to a destination is stored
• Does not use variable length subnet masks - classful
• Insecure
• Reliance on fixed metrics to calculate routes
• Slow convergence – instability when routes change rapidly
subnet masks:RIP不交换子网掩码信息
根据跳数计算距离,限制了route selection mechanism
timer ?
二. Link State Protocols 链路状态协议
Dijkstra’s Algorithm
-
Dijksra的算法是一个贪婪算法,时间复杂度是O(VLogV)(使用最小堆)。但是迪杰斯特拉算法在有负权值边的图中不适用,Bellman-Ford适合这样的图。在网络路由中,该算法会被用作距离向量路由算法。
-
Bellman-Ford也比迪杰斯特拉算法更简单和同时也适用于分布式系统。但Bellman-Ford的时间复杂度是O(VE),这要比迪杰斯特拉算法慢。(V为顶点的个数,E为边的个数
例子协议——Open Shortest Path First(OSPF)
- OSPF所发送的LSA(link state advertisements)只包含link(到邻居的cost)——RIP发送的routing table包含了dest和cost
- LSA只包含邻居的信息,而不是整个网络的路由信息
- RIP选择跳数少的,OSPF选择代价小的
工作步骤
- 结识邻居neighbours(连接到同一个链路的路由器) – discovery mechanism
- 邻接(虚拟的点对点连接)(从邻居关系中选出的为了交换路由信息而形成的关系)
- 发送LSA到邻接
- 在link state database中记录LSA并原封不动转发
- 通过将LSA泛洪,所有路由器将构建相同的链路状态数据库
- 每个路由器使用SPF算法计算一个无环图(SPF树),描述到每个已知目的地的最短(最低成本)路径
- 根据SPF树构建自己的routing table
两个相邻的路由器通过发报文的形式成为邻居,邻居再相互发送链路状态信息形成邻接,之后各自根据SPF算出路由,放在OSPF路由表
1. OSPF 结构
LSA包括:
- node ID:谁生成的LSA
- Sequence number:判断是否首次收到当前LSA
- Dijkstra’s shortest path algorithm
- Destination IP地址的不同导致发送对象类型的不同
2. OSPF 更新
- LSA只发送一次,拓扑结构变化时才更新
- OSPF十分“安静”,发送消息的频率更低(30mins)
- 所有路由器广播完毕后,开始各自SPF
3. Hello Messages
- 周期广播
- 建立邻接
4. 五种报文
- Hello 问候:建立并维护邻居关系
- DBD 数据库描述:发送链路状态头部信息
- LSR 链路状态请求:把从DBD中找出需要的链路状态头部信息传给邻居,请求完整信息
- LSU 链路状态更新:将LSR请求的头部信息对应的完整信息发给邻居
- LSACK 链路状态确认应答:收到LSU报文后确认该报文
5. Scaling
To be continued
Subnet
- 定义:将network在内部分割
- 优点
- 提供额外的灵活性,减少拥塞
- 使多个物理网络共享net ID
- 隐藏复杂性
- 对外界隐蔽,相对安全,隐私
子网掩码Subnet Masks
- 表明了network中是否有subnet
- 让路由器识别subnet ID
Construct
对于ABC三种IP的子网掩码:net ID全为1,host ID全为0
其他类型网络的子网掩码:
对外为一整体,所以net ID不变;使用host ID中的一部分作为subnet bits
为什么是2046个而不是2048:保留全1和全0的地址作为特殊用途(255.255.255.255/ 0.0.0.0)
主机号全为 1 指定某个网络下的所有主机,用于广播
主机号全为 0 指定某个网络
如何用IP地址表示整个网络/子网:将host ID部分用0替代
如何应用
- 估计subnet数量或host数量
- 保留掩码bits
- 查找网络范围(也就是每个子网的host数量)
Variable Length Subnet Mask(VLSM)
支持不同大小的子网
情景一:分配子网【20+20+50】
将subnet No.2再分
情景二:已知IP求子网掩码
- 首先通过第一个字节的大小判断属于哪一类(ABC),得到net ID长度
- 斜线后的数等于net ID+subnet bits。
Layer 2 / Layer 3 Address Usage
网络/子网里没有路由器,packet到达网络/子网后怎么找到目标主机:通过硬件地址(network point of attachment (NPA) address, or MAC address or data link identifier)
MAC Address
由设备制造商分配
Address Resolution Protocol (ARP)
ARP请求是广播的;ARP应答是单播的
为什么请求要广播:不知道目标IP的MAC;让其他设备记录发送者的IP和MAC,以备不时之需
Reverse Address Resolution Protocol(RARP)
RARP请求包被广播;RARP应答包被单播。
情景一:相同子网通信(通过链路层)
情景二:不同子网通信
设备如何知道目标是否在同一subnet下:通过子网掩码,得知subnet ID不同,所以属于不同子网