-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FDD Leaf Nodes Generating Un-constrained Drop Rules #463
Comments
I think the problem may be that the EthType 0x800 is not set for the IP -N On Thu, Dec 17, 2015 at 10:31 AM, Craig Riecke [email protected]
|
@arjun @smolkaj: So Nate and I talked about this. OpenVSwitch is doing the right thing by interpreting the condition "Ipv4Dst = nn" as "*" because it doesn't specify the EthType. The problem is that rule is an artifact of FDD-to-table generation, not something I explicitly wrote in NetKAT. Nate came up with a possible fix. If we enumerate a row which contains Ip4Src or Ip4Dst, for those fields to make sense, EthTyp must be 0x800 or 0x806. So rather than emitting a false branch is "EthTyp is *", it would be "EthTyp is {0x800, 0x806} minus everything that we haven't matched on a true branch". If all of those values have been specified, we emit no rule. If the rule doesn't specify a dependent field, then EthTyp rule generation is left alone. Does this make sense? |
Actually, I think I am to blame for this. Look at my recent pull reques #454. If you recompile your example with |
This still leaves the question of how the compiler should deal with missing |
Oh, I see. And yes, turning on Strict did make it work. I thought #454's default mode only allowed writing NetKAT with Ip4Src/Dst and no EthTyp. |
Here's how I would do it: During the iterative conversion from an FDD to a Flowtable, if you For example if a test on IPSrc appears high in the FDD, then when we go -N On Thu, Dec 17, 2015 at 1:07 PM, Steffen Smolka [email protected]
|
I'm gonna grab this just because the CoSciN app needs it. |
FYI implementing BDD minimization (or approximating heuristics) should address this problem. Minimal diagram should produce minimal rules and therefore minimal drops. Just remember that the ordering you're going for isn't just on the |
Huh. I don't see how this would help (it's possible I'm missing something). On Thu, Jan 14, 2016 at 7:53 AM, Spiros Eliopoulos <[email protected]
|
Got it working for ip4Src, ip4Dst and ipProto dependencies. As a bonus, as you can see in the second example, if you forget the dependency in the NetKAT, it simply fills it in for you. It sorta has to be that way because there's no way to tell whether an FDD node came from an explicit NetKAT policy or was just generated
The last thing I need is to handle tcpSrcPort and tcpDstPort, but these are harder because there are TWO field dependencies: ethDst=0x800 and ipProto in [1, 17]. |
COOL!!! Nice job! -N On Fri, Mar 18, 2016 at 2:03 PM, Craig Riecke [email protected]
|
Fixes issue #463 - field dependencies.
This is not working as it should, see |
:-( Damn. Well, the fix is not hard. -N On Fri, Nov 18, 2016 at 12:38 AM, Steffen Smolka [email protected]
|
I'm sending over NetKAT that generates the following flow table:
The rules that look like "condition" -> drop (no actions) are artifacts of FDD complilation. If this generated the right flow table in OpenFlow, it'd be fine ... the drop rules have lower priority than the ones above it, and are therefore not fired under the right circumstances. But on OpenVSwitch, here's the flow table:
Because the rule in 65534 does not have a condition, it's catching all the packets that don't fit rule 65535 and dropping them.
The text was updated successfully, but these errors were encountered: