李坚强
李坚强
关于agent和server通讯方式的疑问 1.看agent数据流图,agent上报网络流量数据到server是通过GRPC。 https://github.com/deepflowio/deepflow/blob/main/docs/design/data-flow.md   2.分析agent源码,agent上报网络流量数据到server是通过TCP/IP(没有使用PB) let result = tcp_stream.write(&buffer[write_offset..]); struct Encoder { id: usize, header: Header, buffer: Vec, _marker: PhantomData, } 想请教下关于agent和server通讯方式,是由于我自己没有理解源码,还是数据流图没有更新
agent中,网络时延是在单点计算的。 对于TCP/ICMP协议来说,可以通过seq_id可以唯一区分同一个会话中某个请求。 请问下对于UDP协议来说,可以通过什么方式唯一区分同一个会话中某个请求。想到一个方式是使用IPID,但是IPID最大到65535就被重置到0了,所以流量大了,使用IPID貌似不太可靠。
> @taohorse 是 TCP + pb。数据应该是有 pb 序列化的。 > > 不是 grpc 比较好奇server和agent之间的通信方式有两种,部分业务使用gRPC,部分业务使用TCP(PB)。 对于TCP(PB)来说,如果是流需求的话,也可以使用grpc streaming的。其实可以统一使用grpc的。请问下根据业务区分不同通信方式,是有什么考量吗 @sharang
**src/dispatcher/recv_engine/af_packet/tpacket.rs** // TODO: 这里看起来不需要,golang版本未涉及该配置,后续有需要再添加 #[allow(dead_code)] fn set_promisc(&self) -> Result { // 设置混杂模式 //raw_socket.set_flag(IFF_PROMISC as u64)?; // TODO: //let mut mreq: packet_mreq = std::mem::zeroed(); //mreq.mr_ifindex = interface.index as i32; //mreq.mr_type =...