p4lang / tutorials

P4 language tutorials
Apache License 2.0
1.33k stars 878 forks source link

To what extent can P4 extract attributes/headers/etc from HTTPS packets #538

Closed bcheevers123 closed 9 months ago

bcheevers123 commented 9 months ago

Hello, this isn't an issue, more of a question, but I am not too sure where to ask questions. If you would like me to ask this question somewhere else, please let me know where I can.

To what extent can P4 extract attributes/headers/etc from HTTPS packets?

I understand that P4 can extract information from protocols at Layer's 4 and below:

`header ethernet_t { bit<48> dstAddr; bit<48> srcAddr; bit<16> etherType; }

header ipv4_t { bit<4> version; bit<4> ihl; bit<8> diffserv; bit<16> totalLen; bit<16> identification; bit<3> flags; bit<13> fragOffset; bit<8> ttl; bit<8> protocol; bit<16> hdrChecksum; bit<32> srcAddr; bit<32> dstAddr; }

header tcp_t{ bit<16> srcPort; bit<16> dstPort; bit<32> seqNo; bit<32> ackNo; bit<4> dataOffset; bit<3> res; bit<9> tcp_flags; bit<16> window; bit<16> checksum; bit<16> urgentPtr; }

header udp_t { bit<16> srcPort; bit<16> dstPort; bit<16> udplen; bit<16> udpchk; }

header icmp_t { bit<8> type; bit<8> code; bit<16> checksum; }

struct headers { ethernet_t ethernet; ipv4_t ipv4; tcp_t tcp; udp_t udp; icmp_t icmp; } `

But how would one go about extracting Layer 6 protocol information, such as HTTPS? Are their examples of this?

jnfoster commented 9 months ago

Thanks for the interest in P4 and the question. I'm going to suggest that you ask it on the P4 Forum.