of cpp consistent packet processing
play

OF.CPP: Consistent Packet Processing Peter Pereni @ EPFL Maciej - PowerPoint PPT Presentation

OF.CPP: Consistent Packet Processing Peter Pereni @ EPFL Maciej Kuniar, Nedeljko Vasi @ EPFL Marco Canini @ TU Berlin / T-Labs Dejan Kosti @ IMDEA Networks 1 Updating Network State loops blackholes Transient forwarding


  1. OF.CPP: Consistent Packet Processing Peter Perešíni @ EPFL Maciej Kuźniar, Nedeljko Vasić @ EPFL Marco Canini @ TU Berlin / T-Labs Dejan Kostić @ IMDEA Networks 1

  2. Updating Network State ⇨ ● loops ● blackholes Transient forwarding ● security inconsistencies violations 2

  3. Network Consistency Work Abstractions for Network Update (Reitblatt et al., SIGCOMM'12) ● introduces Per-packet Consistency Formal consistency model Incremental Consistent Updates of network updates (HotSDN'13) A Safe, Efficient Update Protocol for OpenFlow Networks (McGear, HotSDN'12) 3

  4. Per-Packet Consistency ⇨ 4

  5. What is the "Configuration"? Network Configuration = Switch rules/flowtables Controller state + Previous work This work 5

  6. Our Focus = Reactive Controllers Reactive & Centralized ● install paths by observing Packet-In events Future work ● proactive controllers ● distributed controllers ● both consistent updates & controller consistency at the same time 6

  7. POX Example: ARP Multiplication H2 = ??? H2 = right CTRL unexpected rule is installed && packet copy is sent to H2 H1 H2 7

  8. ARP Multiplication Storm Copies == Performance Problems (switch rules & controller load) 8

  9. Is it Only Performance? Rules not on the shortest path! Unexpected behavior 9

  10. Root Cause Packet processing == multiple events ● programmer assumes non-interleaved execution ● but ctrl state can be changed by concurrent events Two different configurations! 10

  11. If we had Isolation... Packet 1: H1 = left H2 = ??? Packet 2: H1 = left H2 = right H1 H2 11

  12. Isolation + Consistency ? Does it sound familiar? ● Databases & Transactions! ○ ACID properties 12

  13. Challenge 1: What Belongs to a Transaction? Transactions should be implicit ● i.e. no need to manually identify events Our approach ● Transaction == All events caused by the same packet / its copies 13

  14. Challenge 2: Can we have Atomicity? H1 H2 egress packet 14

  15. Can we have Atomicity? Packets are part of the transaction ● atomicity -> packet buffering => We need to relax atomicity! 15

  16. Challenge 3: Relaxed Atomicity & Rollback ● full rollback is impossible ○ but do we need it? ● single event rollback ○ possible ○ no need to expensively buffer packets ○ rollback is perceived by the controller as packet loss 16

  17. Challenge 4: Relaxed Atomicity & Isolation Non-atomic transactions ● send egress packets before the transaction finishes ● problem = causality ○ packets can cause a new transaction ○ should it we process it in isolation? 17

  18. Problem: Isolation vs. Causality Initial state: H1 = ???, H2 = ??? T1: H1 = left H2 = ??? T2: H1 = ??? T2 needs to see state of T1 H2 = right H1 H2 18

  19. Putting it together: Use Transactions ● automatically infer related events Multi-Commit ● commit / abort after each event Preserve causality ● see state from older transactions (even if they did not finish) 19

  20. OF.CPP Prototype ● in Python ● identifies transactions using VLAN tags ● applied to POX controller ○ l2_multi and arp_responder modules ○ solves ARP multiplication problem 20

  21. Summary Consistency is important ● hard to get it right ● our approach: Multi-commit Transactions ○ works well for reactive controllers ● plenty of space for future work! 21

  22. Backup slides

  23. Proactive? Similar problems as reactive ● controller action may span several events

  24. ARP multiplication - It happens in reality

  25. Inconsistency causing loop

  26. Per-packet consistency During any network change a packet should be processed according to ● old configuration; or ● new configuration; ● but never a mixture of the two

  27. Transactions - serialization order

Recommend


More recommend