Iptables sits in the kernel and is also not available on non-Linux platforms like FreeBSD. With packet bricks you bypass the kernel and expose &quot;virtual&quot; interfaces to your applications by means of a simple configuration. Here&#x27;s an example from the README:<p><pre><code>        bricks&gt; lb = Brick.new(&quot;LoadBalancer&quot;, 2)
	bricks&gt; lb:connect_input(&quot;eth3&quot;)
	bricks&gt; lb:connect_output(&quot;eth3{0&quot;, &quot;eth3{1&quot;, &quot;eth3{2&quot;, &quot;eth3{3&quot;, &quot;eth2&quot;)
	bricks&gt; pe:link(lb)
</code></pre>
This binds pkteng pe with LoadBalancer brick and asks the system to read ingress packets from eth3 and split them flow-wise based on the 2-tuple (src &amp; dst IP addresses) metadata of the packet header. The &quot;lb:connect_output(...)&quot; command creates four netmap-specific pipes named &quot;netmap:eth3{x&quot; where 0 &lt;= x &lt; 4 and an egress interface named &quot;eth2&quot;. The traffic is evenly split between all five channels based on the 2 tuple header as previously mentioned. Userland applications can now use packet-bricks to get their fair share of ingress traffic. The brick is finally linked with the packet engine.