首页 > 其他分享 >ns3_ Day 9

ns3_ Day 9

时间:2023-01-11 15:57:52浏览次数:29  
标签:协议 ns src 网络层 分组 传输层 ns3 Day

ns-3的分层结构概览

应用层

ns-3应用层协议主要负责数据分组的收发和处理,源码位于src/application/下。应用层协议的软件架构如下:
image.png

  • 分组生成部分按照给定的规则发送分组
  • 分组处理部分负责接收来自下层协议的分组并对分组相关信息进行记录

这两部分均通过Socket与下层协议交互。原语函数值的就是基于POSIX套接字的原生函数,用于与下层协议连接、收发分组;回调函数用于接收事件通知。
ns-3支持4种套接字:

  • 与传输层协议交互的流套接字;
  • 数据报文套接字;
  • 与网络层协议交互的原始套接字;
  • 与链路层交互的Packet套接字。

传输层

ns-3实现了TCP和UDP,传输层协议为应用提供了逻辑上的端到端服务,源码位于src/internet/下。传输层的软件架构如下:
image.png

  • 端点(endpoint)是传输层通信连接的起始点。ns-3应用层创建一个Socket的同时,系统同时也在传输层创建一个与其匹配的端点对象。这个端点对象内部存储了本地和通信对端的套接字地址(IP:端口)。
  • IpL4Protocol是传输层和网络层交互的接口,负责分组的实际收发。具体地,负责分组收发时的多路复用(分解)。
    • 两个节点之间可以同时建立多个传输层连接,也就是一个节点拥有多个端点。

网络层

ns-3的网络层需要经历多个中间节点将分组发送至目标主机,同时不依赖任何底层物理链路技术而运行,源码位于src/internet/下。网络层的软件架构如下:
image.png

  • Ipv4是IPv4协议的基类,定义了IPv4协议的接口函数,其主要算法在子类Ipv4L3Protocol中实现。在ns-3中,一个节点只能有一个Ipv4L3Protocol和一个Ipv6L3Protocol对象。
  • Ipv4Interface是网络层与链路层交互的媒介。节点的每一个NetDevice都对应着唯一一个Ipv4Interface对象,其内部保存着所属NetDevice的若干IP地址。
  • Ipv4RoutingProtocol是所有路由协议的基类。

对于下行分组(传输层到网络层)来说,Ipv4L3Protocol的主要任务就是获取下一跳IP地址,并确定将分组发往哪一个Ipv4Interface对象;Ipv4Interface主要执行一些与NetDevice相关的操作。
对于上行分组来说,NetDevice通过回调函数把分组发送给Node对象的handler,从而确定是将分组发送给Ipv4L3Protocol还是Ipv6L3Protocol,之后Ipv4L3Protocol需要查询路由表确定如何处理分组;对于要接收的分组,Ipv4L3Protocol通过提取分组头中的协议号来确定将分组发送个哪一个传输层协议对象。
在脚本中,网络层的创建分为两步:

  1. 在节点安装网络层协议栈 InternetStackHelper::Install()
  2. IP地址分配 Ipv4AddressHelper::Assign()

还有一个不属于传统TCP/IP的TC层未在图中标出。流量管理层TC位于网络层和链路层之间,在ns-3中实现为TrafficControlLayer。

  • 对下行分组来说,它位于Ipv4Interface和NetDevice之间
  • 对上行分组来说,它位于node handler和Ipv4L3Protocol之间

TC层可以通过不同的队列算法来控制分组的收发行为。

链路层和物理层

PPP和CSMA

其分别实现在独立的模块:src/point-to-point/src/csma/中。PPP和CSMA的软件架构完全相同:
image.png
在发送端,任何来自网络层的分组都会被存入一个发送缓存队列。待信道可用后,发送端队列才会开始向外传输分组。
在接收端,默认状态下分组会被直接转发到上层协议,但用户可以在脚本中选择一个错误模型,模拟信道中的分组丢失。队列和错误模型都属于network模块,源码位于src/network/utils/目录。
PPP和CSMA的主要区别是判断信道是否可用。

  • PPP NetDevice可以持续发送分组;
  • CSMA 信道被多个节点共享,发送分组前需要先进行载波监听。

image.png

Wi-Fi

源码位于src/wifi/下,实现了一系列IEEE 802.11协议。软件架构如下:
image.png

  • WifiNetDevice 是Wi-Fi设备与上层协议通信的接口,可以视为WifiMac和网络层的中介。
  • WifiMac Wi-Fi协议的MAC层实现,功能包括关联(association)、探测(probe)、信标(beacon)、分组重传等。
  • RemoteStationManager 速率控制
  • WifiPhy Wi-Fi协议的物理层实现,包括计算发射功率、传输延迟、接收功率阈值等。
  • Channel 模拟Wi-Fi信道,属于物理层的一部分。结合传播和移动模型,Channel负责计算一个分组的接收功率、传播延迟等。

标签:协议,ns,src,网络层,分组,传输层,ns3,Day
From: https://www.cnblogs.com/leewaytang/p/17043986.html

相关文章

  • Linux day2:⽹络不通排查流程 linux重要数据文件 系统优化相关 上传下载 文件权限 所属
    目录⽹络不通排查流程linux重要数据文件etc⽬录下重要的数据⽂件usr⽬录下重要的数据⽂件var⽬录下重要的数据⽂件proc⽬录重要的数据⽂件系统优化相关环境变量下载软件优......
  • Java面试题Day08
    1.强引用,软引用,弱引用,虚引用的区别?强引用:我们平时new了一个对象就是强引用,例如Objectobj=newObject();即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误......
  • Namomo Winter Camp 2023 Day 2
    A-MixJuice排个序再求和就好#include<bits/stdc++.h>usingnamespacestd;intread(){...}int32_tmain(){intn=read(),k=read();vector<int>......
  • Day01
    知识点梳理C#特性[]反射理解,C++实现反射C#使用,API泛型单例,MonoSingletonOdin插件安装与使用*对象池C#拓展方法C#自定义特性反射单例Odin插件对象池......
  • day1---二分查找打卡---力扣704--力扣27
     打卡第一天,希望自己可以坚持两个月,把算法能力提升去,然后方便找工作。然后很久没有刷算法题目了,这次的态度要很端正,因为之前刷题目的过程都不是一个非常完整的过程,所以......
  • 算法刷题 Day 14 | 二叉树的递归遍历
    今日内容:理论基础递归遍历迭代遍历统一迭代详细布置理论基础需要了解二叉树的种类,存储方式,遍历方式以及二叉树的定义文章讲解:https://programm......
  • mt_Day3:编程案例练习
    编程练习1.买机票publicclasstest1{publicstaticvoidmain(String[]args){//1.用户输入月份,票价,仓位类型System.out.println("请输入月......
  • mt_Day3:面向对象基础
    面向对象1.案例练习:购物车对象商品类publicclassgoods{intid;Stringname;doubleprice;intbuyNums;}购物车功能1.添加商品到购物车2.......
  • Day11:数组基础知识
    packagecom.dfyfhqsgclxry.array;publicclassArrayDemo08{publicstaticvoidmain(String[]args){//1.创建一个二维数组11*11,0:没有棋子1:黑棋2:白棋int[......
  • 每日食词—day094
    parameterizev.参数化、参量化、用参数表示descriptorn.描述符号、描述符、描述器、描述子、描述元、描述信息块inspectionn.检查、视察、检视、审视、检测、......