Start work on parser
This commit is contained in:
55
docs/core/parser.md
Normal file
55
docs/core/parser.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Parser
|
||||
|
||||
The parser must parse the following packet:
|
||||
|
||||
EthernetII | IPv4 | UDP | WireGuard
|
||||
|
||||
From this packet type, we must parse the Following:
|
||||
|
||||
1. Dest Mac address
|
||||
2. Source Mac Address
|
||||
3. Ethertype
|
||||
4. Source IP address
|
||||
5. Destination IP address
|
||||
6. Protocol
|
||||
7. UDP Source port
|
||||
8. UDP Destination Port
|
||||
9. Wireguard Message Type
|
||||
10. Wireguard Receiver Index
|
||||
11. Wireguard Counter
|
||||
|
||||
These fields all go to metadata lookup to determine the destination and
|
||||
operations to perform on the packet.
|
||||
|
||||
The parser works by analyzing the packet 32 bits at a time as it flows in.
|
||||
It uses a state machine which keeps track of the position in the packet,
|
||||
and based on what it sees it updates the fields. Here are the states:
|
||||
|
||||
| State | Desciption |
|
||||
| -------- | -------- |
|
||||
| ETH_1 | Upper 32 bits of Dest Mac |
|
||||
| ETH_2 | Lower 16 bits of Dest Mac, Upper 16 bits of source mac |
|
||||
| ETH_3 | Lower 32 bits of Source Mac |
|
||||
| ETH_4_IP_1 | Ethertype and first 16 bits of IP. Version, IHL, DCSP, ECN |
|
||||
| IP_2 | Total Length, Identification |
|
||||
| IP_3 | Flags, Fragment Offset, TTL, Protocol |
|
||||
| IP_4 | Header Checksum, upper 16 bits of source ip |
|
||||
| IP_5 | lower 16 bits of source ip, upper 16 bits of dest ip |
|
||||
| IP_6_UDP_1 | lower 16 bits of dest ip, UDP Source port |
|
||||
| UDP_2 | Destination Port, Length |
|
||||
| UDP_3_WG_1 | Checksum, Message Type |
|
||||
| WG_2 | lower 16 bits of receiver index |
|
||||
| WG_3 | upper 16 bits of receiver index, lower 16 bits of counter |
|
||||
| WG_4 | middle 32 bits of counter |
|
||||
| WG_5 | upper 16 bits of counter |
|
||||
| IDLE | Do nothing until the packet ends |
|
||||
|
||||
As we parse, if we detect that the packet no longer follows the pattern, for example
|
||||
if the protocol is not UDP or the Ethertype is not IPv4, then we set as many fields
|
||||
as we parsed, for example if the protocol is TCP we would set the ethernet mac addresses,
|
||||
the ethertype, ip addresses, and protcol, but the udp ports and wireguard ports would all
|
||||
be 0. The outputs will either match the metadata rules or not, so we don't care in this
|
||||
block.
|
||||
|
||||
The pattern specifically is IPv4 Ethertype (No VLAN), IHL 5 (No options), UDP protocol,
|
||||
Wireguard dest port, and wireguard message type 4.
|
||||
@@ -1,92 +1,271 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.3.0 Chrome/140.0.7339.249 Electron/38.7.2 Safari/537.36" version="29.3.0">
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.3.0 Chrome/140.0.7339.249 Electron/38.7.2 Safari/537.36">
|
||||
<diagram name="Page-1" id="72PB9eZoycvEeqRRA-Ze">
|
||||
<mxGraphModel dx="786" dy="595" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<mxGraphModel dx="1284" dy="863" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-17" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-15">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-37" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.875;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="840" y="390" as="sourcePoint" />
|
||||
<mxPoint x="960" y="390" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-42" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-37" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Post Crypto Data" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.158" y="1" as="geometry">
|
||||
<mxPoint x="9" y="-9" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-68" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.813;exitDx=0;exitDy=0;exitPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-36">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="encrypt datapath" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="320" y="220" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-69" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-68" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="tag" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.2276" y="-1" as="geometry">
|
||||
<mxPoint x="14" y="-11" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-25" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-20">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-77" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-74">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="decrypt datapath" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="320" y="300" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-78" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-77" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="tag" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.097" as="geometry">
|
||||
<mxPoint x="39" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-3" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="S2M DMA" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="320" y="140" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="ChaCha20-Poly1305" vertex="1">
|
||||
<mxGeometry height="160" width="160" x="680" y="240" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-4" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="M2S DMA" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="480" y="140" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-13" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.063;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="560" y="250" as="sourcePoint" />
|
||||
<mxPoint x="590" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-5" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="S2M DMA" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="480" y="380" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-15" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-13" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="key" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.5355" as="geometry">
|
||||
<mxPoint x="12" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-24" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-20">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-31" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-2">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="540.01" y="320.01" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-35" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-31" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="encrypt/decrypt" vertex="1">
|
||||
<mxGeometry relative="1" x="0.1873" as="geometry">
|
||||
<mxPoint y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-33" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-21">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-6" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="S2M DMA" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="320" y="380" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-34" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-33" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="decap_len" vertex="1">
|
||||
<mxGeometry relative="1" x="0.3582" y="1" as="geometry">
|
||||
<mxPoint x="-31" y="-14" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-18" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-3">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-39" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-38">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-19" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-1">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-62" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-39" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="tunnel index" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.1041" y="1" as="geometry">
|
||||
<mxPoint x="191" y="11" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-64" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-44">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="560" y="210" />
|
||||
<mxPoint x="840" y="210" />
|
||||
<mxPoint x="840" y="180" />
|
||||
<mxPoint x="1220" y="180" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-65" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-64" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="destination" vertex="1">
|
||||
<mxGeometry relative="1" x="0.211" y="1" as="geometry">
|
||||
<mxPoint x="48" y="-9" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-14" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Metadata Lookup" vertex="1">
|
||||
<mxGeometry height="80" width="160" x="400" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-16" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.063;entryDx=0;entryDy=0;entryPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="560" y="270" as="sourcePoint" />
|
||||
<mxPoint x="680" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-17" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-16" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="counter" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.5355" as="geometry">
|
||||
<mxPoint x="12" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-22" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.9;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-21">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-14" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;" value="" vertex="1">
|
||||
<mxGeometry height="40" width="120" x="200" y="180" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-23" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-22" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="data" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.2054" as="geometry">
|
||||
<mxPoint x="8" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-32" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-30">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-25" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.625;entryDx=0;entryDy=0;entryPerimeter=0;">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="320" y="230" as="sourcePoint" />
|
||||
<mxPoint x="400" y="230" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-26" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-25" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="source ip" vertex="1">
|
||||
<mxGeometry relative="1" x="0.1137" as="geometry">
|
||||
<mxPoint x="-5" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-75" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-74">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="300" y="350" />
|
||||
<mxPoint x="300" y="460" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-76" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-75" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="tag" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.2126" as="geometry">
|
||||
<mxPoint x="166" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-18" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Parser" vertex="1">
|
||||
<mxGeometry height="200" width="40" x="280" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-19" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.2;exitDx=0;exitDy=0;exitPerimeter=0;">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="320" y="210" as="sourcePoint" />
|
||||
<mxPoint x="400" y="210" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-20" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-19" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="dest ip" vertex="1">
|
||||
<mxGeometry relative="1" x="0.0846" y="-1" as="geometry">
|
||||
<mxPoint x="-3" y="-11" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-21" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Decap" vertex="1">
|
||||
<mxGeometry height="40" width="160" x="400" y="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-24" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.875;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-15" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;flipV=1;legacyAnchorPoints=0;" value="" vertex="1">
|
||||
<mxGeometry height="40" width="120" x="520" y="180" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-41" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-24" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Raw Data" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.2123" y="1" as="geometry">
|
||||
<mxPoint x="3" y="-9" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-16" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-15">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-27" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.625;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-14">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-29" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-28">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-28" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-27" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="type" vertex="1">
|
||||
<mxGeometry relative="1" x="0.2841" as="geometry">
|
||||
<mxPoint x="-11" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-29" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.875;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-14">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="320" y="270" />
|
||||
</Array>
|
||||
<mxPoint x="320" y="270" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-30" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-29" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="counter" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.3376" as="geometry">
|
||||
<mxPoint x="14" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-45" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-44">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-20" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;" value="" vertex="1">
|
||||
<mxGeometry height="40" width="120" x="200" y="340" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-36" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Encap" vertex="1">
|
||||
<mxGeometry height="40" width="160" x="960" y="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-22" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-2">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-40" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-36">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-23" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-5">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-43" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-40" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="header/len" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.0722" y="2" as="geometry">
|
||||
<mxPoint x="-32" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-38" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Encap Header Lookup" vertex="1">
|
||||
<mxGeometry height="80" width="160" x="960" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-47" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.9;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-46">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-21" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;flipV=1;legacyAnchorPoints=0;" value="" vertex="1">
|
||||
<mxGeometry height="40" width="120" x="520" y="340" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-26" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Downstream RX" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="120" y="160" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-27" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.502;entryY=-0.037;entryDx=0;entryDy=0;entryPerimeter=0;" target="e5_vLxzb2aWtIEc7nj2M-14">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-49" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-48">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-28" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Downstream TX" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="120" y="320" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-30" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Upstream TX" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="640" y="160" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-33" edge="1" parent="1" source="e5_vLxzb2aWtIEc7nj2M-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="e5_vLxzb2aWtIEc7nj2M-21">
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-52" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-50">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-31" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Upstream RX" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="640" y="320" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-44" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;shapeInside=1;fixedSize=1;rotation=-90;" value="" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="1120" y="280" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-35" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;dashed=1;" value="upstream path" vertex="1">
|
||||
<mxGeometry height="160" width="400" x="220" y="120" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-46" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="CPU DMA" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="1280" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5_vLxzb2aWtIEc7nj2M-36" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;dashed=1;" value="downstream path" vertex="1">
|
||||
<mxGeometry height="160" width="400" x="220" y="280" as="geometry" />
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-48" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Local Eth" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="1280" y="280" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-50" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Remote Eth" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="1280" y="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-53" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.9;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-56">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-54" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-56">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-55" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.1;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-56">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-61" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-18">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-56" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;shapeInside=1;fixedSize=1;rotation=-90;flipV=1;legacyAnchorPoints=0;" value="" vertex="1">
|
||||
<mxGeometry height="40" width="200" x="120" y="280" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-57" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="CPU DMA" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="120" y="200" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-58" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Local Eth" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="120" y="280" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-59" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;" value="Remote Eth" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="120" y="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-66" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.563;entryDx=0;entryDy=0;entryPerimeter=0;" target="7ZK-1vDvfmA7mbs2EBc0-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-67" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-66" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="bypass" vertex="1">
|
||||
<mxGeometry relative="1" x="0.3463" y="1" as="geometry">
|
||||
<mxPoint y="11" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-79" edge="1" parent="1" source="7ZK-1vDvfmA7mbs2EBc0-74" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="7ZK-1vDvfmA7mbs2EBc0-36">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1040" y="460" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-80" connectable="0" parent="7ZK-1vDvfmA7mbs2EBc0-79" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="tag match" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.5624" as="geometry">
|
||||
<mxPoint x="9" y="-10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="7ZK-1vDvfmA7mbs2EBc0-74" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Tag Check" vertex="1">
|
||||
<mxGeometry height="40" width="120" x="840" y="440" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
|
||||
Reference in New Issue
Block a user