3个版本

0.1.2 2021年5月24日
0.1.1 2021年5月21日
0.1.0 2021年5月21日

#8 in #encapsulation

MIT/Apache

52KB
782

hep

使用HEP网络协议规范

HEP v3 (Homer封装协议版本3) 通过UDP/TCP/SCTP连接传输数据包。

支持HEP v1、HEP v2、HEP v3。

HEP v2仅支持ipv4。

hep v1格式

索引 备注
0 hep版本
1.. 数据包有效载荷

hep v2格式

索引 备注
0 hep版本,静态值:2
1 hep头部长度
2 IP协议族
3 转换类型
4-5 源端口
6-7 目的端口
8-11 源IP
12-15 目的IP
16-19 时间戳秒
20-23 时间戳微秒偏移
24-27 捕获ID
28.. 数据包有效载荷

hep v3格式

请参阅 https://github.com/sipcapture/HEP

示例

use hep::parse_packet;
use std::net::UdpSocket;

fn main() -> std::io::Result<()> {

    let socket = UdpSocket::bind("169.254.165.11:9060").expect("couldn't bind to address");
    loop {
        let mut buffer = [0x0; 0xdbba0];
        let (number_of_bytes, src_addr) =
            socket.recv_from(&mut buffer).expect("Didn't receive data");
        let filled_buf = &mut buffer[..number_of_bytes];

        /// data allways return Hep v3 format.
        ///     :if hep v1 or v2, futrue is default value.
        ///     :Hep v3 format,see sturct Chunk
        let data = parse_packet(&filled_buf);
        
        match data {
            Ok(chunk) => {
                println!("Message length:{}", &chunk.packet_payload.len());
                if chunk.packet_payload.len() > 6 {
                    println!(
                        "Received Hep(sip) Message from IP:{}, CaptureId:{}\n{}",
                        src_addr, 
                        chunk.capture_agent_id, 
                        chunk.packet_payload
                    );
                } else {
                    println!(
                        "Received Hep(Keepalive) Message from IP:{}, CaptureId:{}.\n",
                        src_addr, 
                        chunk.capture_agent_id
                    );
                }
            }
            Err(_) => {
                println!(
                    "Received Hep Message from IP:{}\n ignore data.\r\n\r\n",
                    src_addr
                );
            }
        }
    }
}

升级版本

0.1.0:

创建版本。

0.1.1:

发布版本,添加readme.md。

0.1.2:

修复readme.md。

依赖项

~205KB