最近负责实现 1588 时钟同步客户端(OC 时钟功能),由于设计方案的原因,OC 和 主时钟 之间有一个三层路由器,导致1588二层组播包无法通过。于是写了个程序,专门转发 1588 二层组播包。
原理很简单,使用 RAW socket 监听接口拿到原始 1588 以太网报文,并将其转发到另一个接口上。如上图:
监听 br0 收到的 1588二层组播包,并转发到 eth0。
同理,监听 eth0 收到的 1588二层组播包,并转发到 br0。
include_code ptpproxy.c