|
| 1 | +# Open Offload Integration FAQ |
| 2 | + |
| 3 | +## Introduction |
| 4 | +This is not intended to be a comprehensive list of answers, but rather a compendium of questions and answers to help prospective developers implement a working open offload server. |
| 5 | + |
| 6 | +## FAQ |
| 7 | + |
| 8 | +1. **Question:** Are there any examples of an open offload server that can be used to get started? |
| 9 | + |
| 10 | + **Answer:** Yes, there are a few implementations that are available. |
| 11 | + |
| 12 | + * *Python:* There is a test Python implementation in this github repository under the test directory. The python client can be used to test new C/C++ server implementations. |
| 13 | + |
| 14 | + * *C/C++:* There is a sample C++ implementation in this github repository under the openoffload directory. |
| 15 | + |
| 16 | + * *C Implementation:* Nivdia has kindly put their implementation in github under open source at: [Firewall Offload]https://github.com/BodongWang/firewall_offload |
| 17 | + |
| 18 | +2. **Question:** Can multiple VMs talking to the same SmartNIC be supported? |
| 19 | + |
| 20 | + **Answer:** Currently the implementation is focused on a single VM supporting a single SmartNIC. However more deployment models could be supported depending on customer use cases. |
| 21 | + |
| 22 | +3. **Question:** What is the impact/use of inLIF/outLIF for SmartNIC deployments? |
| 23 | + |
| 24 | + **Answer:** The inLIF/outLIF parameters are just placeholders for the future network router case. They can be just hardwired to 1 and 2 for the basic SmartNIC case. |
| 25 | + |
| 26 | +4. **Question:** Are there any management functions in the gRPC API? |
| 27 | + |
| 28 | + **Answer:** Not currently but this is something we would like to add and are actively soliciting feedback and suggestions. |
| 29 | + |
| 30 | +5. **Question:** Does the current implementation support IPv6? |
| 31 | + |
| 32 | + **Answer:** Yes the current implementation supports IPv6 |
| 33 | + |
| 34 | +6. **Question:** Does the current implementation support VLANs? |
| 35 | + |
| 36 | + **Answer:** Yes the current implementation supports VLANs |
| 37 | + |
| 38 | +7. **Question:** Can the current implementation support High Availability scenarios? |
| 39 | + |
| 40 | + **Answer:** Yes the current implementation supports High Availability Scenarios. |
| 41 | + |
| 42 | +8. **Question:** Where is the TCP State managed? |
| 43 | + |
| 44 | + **Answer:** All TCP state is managed by the firewall, as there are several TCP attack vectors that the firewall needs to protect against and it is easier if there is only one entity managing state. Therefore all TCP control packets must be sent to the firewall and the offload device should not act on them. |
| 45 | + |
| 46 | +9. **Question:** Is there a preferred implementation technology for the offload server? |
| 47 | + |
| 48 | + **Answer:** Providing the server implements the gRPC API to the offload client the implementation approach and technology is left open to the developers of the offload device. |
| 49 | + |
| 50 | +10. **Question:** Can other applications beside firewall use the API? |
| 51 | + |
| 52 | + **Answer:** Yes. Any application that can use the match/action parameters in the API can use the API for session offload. |
| 53 | + |
| 54 | +11. **Question:** Are additional offload types like UPF accelleration supported? |
| 55 | + |
| 56 | + **Answer:** Not at this time. The plan is to extend the API over time to handle more use cases through extenstion to the match/action parameters. We encourage suggestions on additional offload use cases. |
| 57 | + |
| 58 | +12. **Question:** How are timeouts handled? |
| 59 | + |
| 60 | + **Answer:** The device will track the cacheTimeout setting on each session entry. When no packets are received after the timeout period, the device will remove the session from the session table and stream the closed session and stats to the application over the getClosedSessions gRPC call. The application will handle the TCP and UDP overall timeout. If additional packets are received , it will be a cache miss so the application will process these packets and determine if the session should be re-inserted into the session table. The device does not need to track anything about the two disjoint in time session table entries, the application will sum up the total packet/byte counts. |
0 commit comments