Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/pythops/oryx/llms.txt

Use this file to discover all available pages before exploring further.

Oryx decodes network frames at each layer of the stack before they reach userspace. An eBPF TC classifier attached to the selected interface reads the Ethernet header, determines the EtherType (IPv4, IPv6, or ARP), and then walks down through the network and transport headers. The fully-decoded frame — including every field that Oryx surfaces in the TUI — is written into a RingBuf eBPF map and consumed by the Aya-based userspace process. The protocol filter controls which traffic is forwarded to the TUI. Filters exist independently for each layer and are enforced inside the kernel before any data is copied to userspace.

Transport layer

TCP is supported over both IPv4 and IPv6. The eBPF program reads the full TcpHdr and the TUI surfaces all of the following fields in the packet detail view:
FieldDescription
Source portOriginating port number
Destination portReceiving port number
Sequence numberByte-stream position
Acknowledgment numberNext expected byte
Data offsetHeader length in 32-bit words
CWR, ECE, URG, ACK, PSH, RST, SYN, FINIndividual flag bits
WindowReceive window size
ChecksumHeader and data checksum (hex)
Urgent pointerOffset to urgent data
The packet list shows <src-ip> <src-port> <dst-ip> <dst-port> TCP.TCP packets are subject to the firewall blocklist. If a matching IPv4 or IPv6 address and port rule is found in the eBPF maps, the packet is dropped (TC_ACT_SHOT) before it is recorded.
UDP is supported over both IPv4 and IPv6. The eBPF program reads UdpHdr and the TUI displays:
FieldDescription
Source portOriginating port number
Destination portReceiving port number
LengthDatagram length in bytes
ChecksumChecksum (hex)
The packet list shows <src-ip> <src-port> <dst-ip> <dst-port> UDP.Like TCP, UDP packets are checked against the firewall blocklist before being forwarded to the TUI.
SCTP is supported over both IPv4 and IPv6. The eBPF program reads SctpHdr and the TUI displays:
FieldDescription
Source portOriginating port number
Destination portReceiving port number
Verification tagAssociation verification tag (hex)
ChecksumCRC-32c checksum (hex)
The packet list shows <src-ip> <src-port> <dst-ip> <dst-port> SCTP.SCTP packets are also subject to the firewall blocklist.

Network layer

IPv4 is the primary network-layer protocol. Oryx uses the IPv4 header to extract source and destination addresses for display and firewall evaluation. IPv4 traffic can carry TCP, UDP, SCTP, ICMPv4, and IGMP payloads.The IPv4 filter hides all IPv4 traffic from the TUI regardless of transport protocol. Firewall rules for IPv4 are stored as u32 address keys in the BLOCKLIST_IPV4 eBPF map.
IPv6 is fully supported alongside IPv4. Source and destination addresses are 128-bit values. IPv6 traffic can carry TCP, UDP, SCTP, and ICMPv6 payloads.Firewall rules for IPv6 are stored as u128 address keys in the BLOCKLIST_IPV6 eBPF map. Up to 32 rules are supported (matching MAX_FIREWALL_RULES).
ICMPv4 is decoded from IPv4 packets with IpProto::Icmp. The TUI displays:
FieldDescription
TypeHuman-readable message type (see below)
CodeSub-type code
ChecksumChecksum (hex)
Recognised ICMPv4 message types include: Echo Reply, Echo Request, Destination Unreachable, Redirect Message, Router Advertisement, Router Solicitation, Time Exceeded, Bad IP header, Timestamp, Timestamp Reply, Extended Echo Request, and Extended Echo Reply.The packet list shows <src-ip> <dst-ip> ICMP.
ICMPv6 is decoded from IPv6 packets with IpProto::Ipv6Icmp. The TUI displays the same three fields as ICMPv4 — type, code, and checksum.Recognised ICMPv6 message types include: Destination Unreachable, Packet Too Big, Time Exceeded, Parameter Problem, Echo Request, Echo Reply, Multicast Listener Query/Report/Done, Router Solicitation/Advertisement, Neighbor Solicitation/Advertisement, Redirect Message, Router Renumbering, ICMP Node Information Query/Response, Inverse Neighbor Discovery, Home Agent Address Discovery, Mobile Prefix Solicitation/Advertisement, Duplicate Address Request/Confirmation, Extended Echo Request, and Extended Echo Reply.The packet list shows <src-ip> <dst-ip> ICMP.
IGMP is decoded from IPv4 packets with IpProto::Igmp. Oryx distinguishes between all three IGMP versions and the following message types:
Type byteMessage
0x11 (8-byte payload, max response time = 0)IGMPv1 Membership Query
0x11 (8-byte payload, max response time ≠ 0)IGMPv2 Membership Query
0x11 (>8-byte payload)IGMPv3 Membership Query
0x12IGMPv1 Membership Report
0x16IGMPv2 Membership Report
0x17IGMPv2 Leave Group
0x22IGMPv3 Membership Report
The packet list shows <src-ip> <dst-ip> IGMP.
IGMP is an IPv4-only protocol. The eBPF program matches it under the EtherType::Ipv4 branch only; there is no corresponding IPv6 path.
ARP frames are matched directly from the Ethernet header (EtherType::Arp) before any IP parsing. The eBPF program reads the full ArpHdr and the TUI surfaces:
FieldDescription
Hardware typeLink-layer protocol type
Protocol typeNetwork-layer protocol type
Hardware lengthLength of a hardware address
Protocol lengthLength of a protocol address
OperationArp Request or Arp Reply
Sender hardware addressSource MAC address
Sender protocol addressSource IPv4 address
Target hardware addressTarget MAC address
Target protocol addressTarget IPv4 address
The packet list shows <src-mac> <dst-mac> ARP.

Build docs developers (and LLMs) love