GPS和PTP时间同步

      

目录

1.GPS

2.PTP

2.1 PTP中的TTL

3.二层/三层交换机

4.三层交换机与路由器的区别    


        常见的时间同步方案/技术有两种,一种是基于GPS的“PPS+NMEA”,另一种是基于以太网的IEEE1588时钟同步协议

        PPS+NMEA的优点是协议简单,容易实现;缺点是必须基于 RS232,多个设备之间实现同步比较难。此时IEEE 1588就成了最好的选择,1588 是基于以太网的高精度时钟同步协议,能够实现以太网中多个从节点(各种传感器)与主节点(主机)之间的亚微秒级时钟同步,前提是所有节点之间都通过以太网互联,并且每个节点都支持1588协议。

         NTP:网络时间协议英文名称: NetworkTimeProtocol。NTP 基于UDP 报文进行传输,使用的UDP 端口号123。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行 NTP 的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。
        GPS (Global Positioning System,全球定位系统)、BDS(BeiDouNavigation Satellite System,中国北斗卫星导航系统)、SyncE (同步以太网)、NTP (Network Time Protocol,网络时间协议) 之间的对比如下:

GPS和PTP时间同步_第1张图片

1.GPS

        GPS能够从卫星获得高精度的时钟信号,因此通常作为整个系统的时钟源。常规的GPS单元都支持输出精确到毫秒的秒脉冲信号PPS包含年月日时分秒信息的NMEA指令,通过PPS和NMEA的组合就能够实现对感知设备或主机的毫秒级时钟同步。只要感知设备支持基于RS232接口的PPS+NMEA时钟同步输入信号,就可以实现毫秒级的时钟同步。
        PPS则通常使用1PPS,即频率为1次每秒的秒脉冲。接入工控机,当工控机支持时,设备接收到PPS脉冲后,毫秒及以下位清零重新计算。PPS: pulse per second,秒脉冲。1PPS=1Hz=1次/秒。就是一秒钟一个脉冲信号用来指示整秒时刻,该时刻通常由秒脉冲的上升沿来标示。秒脉冲精度可达到ns 级别,并且没有累积误差

        NMEA是一套定义接收机输出的标准信息,有几种不同的格式(GPGGA、GPRMC),每种都是独立相关的ASCII 格式,逗点隔开数据流数据流长度从30-100字符不等,通常以每秒间隔选择输出。它包含了定位时间,纬度,经度,高度,定位所用的卫星数,其他的有速度,跟踪,日期等。

        GNSS:全球卫星导航系统也叫全球导航卫星系统(GlobalNavigation Satellite System)是能在地球表面或近地空间的任何地点为用户提供全天候的3维坐标和速度以及时间信息的空基无线电导航定位系统。包括一个或多个卫星星座及其支持特定工作所需的增强系统。全球卫星导航系统国际委员会公布的全球4大卫星导航系统供应商,包括中国的北斗卫星导航系统(BDS)、美国的全球定位系统 (GPS)、俄罗斯的格洛纳斯卫星导航系统(GLONASS)和欧盟的伽利略卫星导航系统(GALILEO)。

        GPRMC是GPS推荐定位信息,GBRMC是北斗推荐定位信息,GNRMC是北斗和GPS推荐定位信息。GNRMC的前级标识符GN指GNSS,也就是融合后的(如GPS+BD),有些激光雷达只能识别GPRMC,也就是GPS的,所以我们要关闭掉北斗。
        

2.PTP

        PTP(Precision Time Protocol,遵循IEEE1588协议,简称1588),基于网络的高精度时间同步协议。PTP是一种主从式的时间同步系统,一般用在工业以太网上较多。采用硬件时间戳,因此可以大幅减少软件处理时间。可分为1588V1(亚毫秒级别,老版本协议)和1588V2(同步精度可以达到亚微秒级别,可同时实现相位同步和频率同步)。

        根据PTP报文传输所采用的链路类型配置 PTP 报文采用MAC封装还是UDP封装。(系统默认采用组播MAC封装方式。)1588可运行在L2层(MAC层)L4层(UDP层)。运行在L2层网络时,离物理层只有一步之遥,直接在MAC层进行报文解析,不用经过UDP协议栈。既能减缓协议栈缓存带来延时的不确定性,又能缩短报文传输延时,大幅减少协议栈驻留时间,进一步提高时间同步精度,对自动驾驶系统来说非常友善;工作在传输层时,报文要经历协议栈缓存、操作系统调度等过程,这两个过程都会带来传输延时的增加且大小不可控。
        
        PTP之后又衍生出:

  • IEEE 1588V2PTPV2:P2P和E2E):准确时间协议。1588V2可以在L2-4 层工作。
  • IEEE 802.1ASgPTP:P2P):广义准确时间协议。在PTPV2的基础上,新增了一些特征使得时间精度锁定时间提高。gPTP报文都是通过L2数据链路层获取即转发。
IEEE 1588V2PTPV2) IEEE 802.1ASgPTP)
网络层级 L2-4层 L2层(MAC层)
时延测量方式 P2P和E2E,二者不能在同一个网络中共存 P2P
时间戳采样方式 PTP工作在MAC子层时,报文要么直接发给物理层要么从物理层收到,因此可以支持物理层硬件打或由软件打时间戳。通过硬件的方式打,可以消除操作系统调度带来的延时不确定性。 gPTP 从延时可控,延时减少的角度考虑,只允许打硬件时间戳
时钟类型

1)one-step(事件报文中直接包含了时间信息。节省报文数量,但是对于硬件要求高,成本更高);

2)two-step

two-step(事件报文event message不带有时间信息,需要另外一条普通报文general message传输时间信息。这种机制对于硬件要求较低方便后续扩展,在现有的网络中已普及。)
使用场景 适用性广,对网络环境无强制要求,可根据不同的应用环境灵活扩展 对1588v2在桥接局域网中的实现进行了细化支持点对点全双工以太网链路、IEEE802.1链路、IEEE802.3EPON链路
主要差异点

使用BMC(Best Master Clock,最佳主时钟)算法计算主从关系;

链路延时测量机制支持端延时机制和请求应答机制

协议报文支持IEEE802.3/Ethernet 封装和UDP封装

参考MSTP算法计算主从关系,较1588v2简单;

链路延时测量机制只支持端延时机制;

协议报文仅支持IEEE802.3/Ethernet封装。

        在E2E方法中测量的是网络中任意两个支持 PTP 设备之间的传输延迟,而在这两个设备之间允许存在普通交换机等可以透传PTP报文的设备。这导致P2P和E2E方式在如下方面存在差异:

  1. 测量精度:
    P2P方法中,报文在桥接设备的驻留时间可以被测量,且会和传输延时时间一同发给后面链路上的设备,故测量精度可控且足够高。
    E2E 方法中,报文在普通交换机的驻留时间具有随机性且不可测量,导致量精度不可控且波动范围大。
  2. 架构灵活性:
    P2P方法中,测量报文不跨设备传输,主时钟变化或新增从时钟,仅对物理上相邻的设备有影响,有利于网络拓展;
    E2E 方法中,无论主时钟变化还是从时钟变化,都需要重新测量整个网络的传输延迟,且在网络比较复杂时,网络开销会比较大,因此网络拓展性较差。        

        根据主从节点间的拓扑类型配置PTP报文采用单播封装还是组播封装。时间同步过程PTP默认使用组播协议,L2层(MAC层)和L4层(UDP层)组播都可以,一般我们使用基于UDP组播使用319和320两个端口。

  • 单播封装:实现时钟信息点对点传输,实现单台设备同步主节点时钟。指定PTP 报文发送的目的MAC地址或IP地址为单播地址,则表示报文采用单播封装的方式。
  • 组播封装:实现点到多点的时钟信号同步,对于同一个PTP 域,同一个延时测量机制,默认加入同一个组播组,所以采用组播封装时,无需配置目的MAC地址或IP地址。

        设备中运行PTP协议的网络端口称为PTP端口,PTP主端口用来发布时间PTP,从端口用来接收时间。同时定义了三种时钟节点:

  1. 边界时钟节点 (BC,Boundary Clock),拥有多个PTP 端口,其中一个用来同步上游设备时间,其余端口用来向下游设备发送时间。当边界时钟节点的上游时间同步设备是GNSS 接收机时,此时的边界时钟节点就是一个主时钟节点(最优时钟);
  2. 普通时钟节点(OC,Ordinary Clock) ,只有一个PTP 端口,用来同步上游时钟节点的时间;
  3. 透明时钟节点(TC,Transparent Clock),具有多个 PTP 端口,收到什么时间,转发什么时间,不进行协议解析,内部不参与时间同步。

        PTP同步原理:在系统的同步过程中,主时钟周期性发布PTP时间同步协议及时间信息,从时钟端口接收主钟端口发来的时间截信息,系统据此计算出主从线路时间延迟及主从时间差,并利用该时间差调整本地时间,使从设备时间保持与主设备时间一致的频率与相位

        主从节点在网络链路层打时间截,利用支持EEE1588协议的PHY片,精准记录时间同步网络报文接受或发送的时刻。交换机、路由器等网络中间节点准确记录时间同步报文在其中停留的时间,实现对链路时延的准确计算。

        PTP定义了四条同步报文: Sync、Follow_Up、Delay_Req、Delay_Resp,精确同步过程如下。

GPS和PTP时间同步_第2张图片

  1. PTP主端口向从端口发送Sync报文,同步记录下Sync发送的时间t1。从端口收到Sync 报文后记录下收到的时间t2;
  2. 紧接着主端口将t1时间放到Follow Up 报文发送给从端口,从端口收到此报文后就可以解析出t1,并由此得到第一个方程式:t1+网络延时+时钟偏差=t2。
  3. 从端口向主端口发送Delay_Req 报文,同步记录下Delay_Req 发送的时间t3。主端口收到报文后,记录下收到的时间t4。
  4. 紧接着主端口将t4时间放到 Delay_Resp 报文发送给从端口,从端口收到此报文后就可以解析出t4,并由此得到第二个方程式:t3+网络延时-时钟偏差=t4。
  5. 两个未知数两个方程组应用初中数学知识可以解出:网络延时=[(t2-t1)+(t4-t1)/2,时钟偏差=[(t2-t1)-(t4-t3)/2。

        将设备上运行了PTP的设备的端口称为PTP端口,PTP端口分为三种:

  • 主端口(Master Pot):发布同步时间的端口;发布同步时间的节点称为主节点;主节点上的时钟称为主时钟;
  • 从端口(SlavePort):接收同步时间的端口;接收同步时间的节点则称为从节点;从节点上的时钟则称为从时钟;
  • 被动端口(Passive Port):既不发布也不接收,只作为转发所用。

linuxPTP模拟gPTP和1588v2:(sudo apt install linuxptp)

  • gPTP指令:sudo ptp4l -A -S -2 -i enp4s0 -m -f gPTP.cfg
  • 1588v2指令:sudo ptp4l -m -4 -i enp4s0 -S

2.1 PTP中的TTL

        TTL是 Time To Live的缩写,该字段指定IP 包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4 包头一个8bit字段,它位于IPv4包的第9个字节。

        TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64。虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP 数据包在计算机网络中可以转发的最大跳数。TTL字段由IP 数据包的发送者设置,在IP 数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP 包转发出去。如果在IP 包到达目的IP 之前TTL减少为0,路由器将会丢弃收到的TTL=0的IP包,并向IP包的发送者发送ICMP time exceeded消息。

        TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络资源并能使P包的发送者能收到告警消息。

GPS和PTP时间同步_第3张图片

3.二层/三层交换机

        二层交换机工作于OSI模型的二层数据链路层),故而称为二层交换机,主要功能包括物理编址、错误校验、序列以及流控。二层交换机属数据链路层设备,可以识别数据包中的 MAC 地址信息,根据MAC 地址进行转发并将这些 MAC地址与对应的端口记录在自己内部的一个地址表中。需要注意的是,二层交换机只能允许主机设备与同一个VLAN的主机通信。要到达另一个网络的主机设备,需要三层交换机或路由器。

        具体的工作流程如下:

  1. 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
  2. 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
  3. 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
  4. 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。

  不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。

        三层交换机位于三层网络层),是一个具有三层交换功能的设备,即带有三层路由功能的二层交换机,但它是二者的有机结合,并不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。当我们需要在不同的 LAN 或VLAN 之间传输数据时,二层交换机就无法满足了。这时需要三层交换机,因为它们将数据包路由到目的地的技术是IP地址和子网划分。

        二层和三层交换机之间的主要区别在于是否拥有路由功能。三层交换机就是具有部分路由器功能的交换机,工作在OSI网络标准模型的三层:网络层,目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。此外,三层交换机可以执行静态路由和动态路由。这意味着三层交换机同时具有MAC地址表和IP路由表,并且还处理VLAN内通信以及不同VLAN之间的数据包路由。仅添加静态路由的交换机称为弱三层交换机。除路由数据包外,三层交换机还包括一些功能,这些功能需要能够理解进入交换机的数据的IP地址信息例如基于IP 地址标记VLAN 流量,而不是手动配置端口。三层交换机的功率和安全性得到了提高。
        当您在纠结是选择二层或者三层交换机时,需要考虑的是您的网络需求。如果您的网络是纯二层网络,则二层交换机即可满足您的需求。在网络结构中,这通常称为访问层。如果您需要交换机聚合来访问多个交换机并进行VLAN 间路由,则需要三层交换机。这在网络拓扑中称为分布层。二层交换机用于小型的局域网络,它的快速交按功能、多个接入端口和相对便宜的价格为小型网络用户提供了很完善的解决方案。而三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也是为这个目的服务的。 

        二层与三层交换机之间有以下区别:

  • 工作层级不同:二层交换机工作在数据链路层,三层交换机工作在网络层,三层交换机不仅实现了数据包的高速转发,还可以根据不同网络状况达到最优网络性能。
  • 原理不同:二层交换机的原理是当交换机从某个端口收到一个数据包,它会先读取包中的源MAC地址,再去读取包中的目的MAC地址,并在地址表中查找对应的端口,如表中有和目的MAC地址对应的端口,就把数据包直接复制到这个端口上。三层交换机的原理比较简单,就是一次路由多次交换,通俗来说就是第一次进行源到目的的路由,三层交换机会将此数据转到二层,那么下次无论是目的到源还是源到目的都可以进行快速交换。
  • 功能不同:二层交换机基于MAC地址访问,只做数据的转发并且不能配置IP 地址。而三层交换机将二层交换技术和三层转发功能结合在一起,也就是说三层交换机在二层交换机的基础上增加了路由功能,可配置不同VLAN的IP地址。可通过三层路由实现不同VLAN之间通讯。
  • 应用不同:二层交换机主要用于网络接入层和汇聚层,而三层交换机主要用于网络核心层,但是也存在少部分三层交换机用于汇聚层的现象。

4.三层交换机与路由器的区别    

        路由器是三层设备,可是三层交换机却可以同时工作在三层和二层的。事实上三层交换机与路由器还是存在很大的差别:

  1、主要功能不同。路由器不仅具有路由功能,还提供了交换机端口、硬件防火墙(路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。)附加功能,其目的是使设备适用面更广、使其更加实用。

  三层交换机,同时具备了数据交换和路由转发两种功能,但其主要功能还是数据交换,只不过它是具备了一些基本的路由功能的交换机;而路由器仅具有路由转发这一种主要功能。

  2. 主要适用的环境不一样。三层交换机的路由功能通常比较简单,因为它所面对的主要是简单的局域网连接,特性远没有路由器那么复杂。它用在局域网中的主要用途还是提供快速数据交换功能,满足局域网数据交换频繁的应用特点。

  而路由器则不同,虽然也适用于局域网之间的连接,但它的路由功能更多的体现在不同类型网络之间的互联上,如局域网与广域网之间的连接、不同协议的网络之间的连接等,优势在于选择最佳路由、负荷分担、链路备份及和其他网络进行路由信息的交换等。另外,为了与各种类型的网络连接,路由器的接口类型非常丰富,而三层交换机则一般仅同类型的局域网接口,非常简单。

  3、技术实现不一样。路由器和三层交换机在数据包交换操作上存在着明显区别。

  路由器一般由基于网络处理器或多核的路由引擎执行数据包交换。

  而三层交换机通过硬件执行数据包交换。三层交换机在对第一个数据包送控制面进行路由查找后,它将会产生一个供数据面查找的MAC地址与IP地址的映射表,当同样的数据流再次通过时,将根据此表查表通过而不是再次送控制面查路由(即“一次路由,多次交换”)。提高了数据包转发的效率。三层交换机的路由查找是针对数据流的,它利用缓存技术,很容易利用ASIC技术来实现,因此,可以大大节约成本,并实现快速转发。

  而路由器的转发采用最长匹配的方式,实现复杂,一般采用价格高昂的网络处理器或多核处理器实现,并且路由表数目庞大,成本相当高。
 

        SoC的全称叫做: System-on-a-Chip ,中文的的意思就是“把系统都做在一个芯片上”。

        IGMP是Internet Group Management Protocol的简称,被称为互联网组管理协议,是TCP/IP协议族中负责IPV4组播成员管理的协议。

  • 作用1:IGMP用来在接收者主机和直接相邻的组播路由器之间建立和维护组播组成员的关系。
  • 作用2:IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。

参考链接:

路由器与三层交换机的区别 - 知乎 (zhihu.com)

你可能感兴趣的:(网络)