Skip to content
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

Add final GSoC project report #23

Merged
merged 13 commits into from
Aug 22, 2024
19 changes: 5 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# P4ContainerFlow

This is the repository for the Google Summer of Code project [P4-Enabled Container Migration in Kubernetes](https://summerofcode.withgoogle.com/programs/2024/projects/sYbpOJhD). The project is actively being worked on.
This is the repository for the Google Summer of Code project [P4-Enabled Container Migration in Kubernetes](https://summerofcode.withgoogle.com/programs/2024/projects/sYbpOJhD).

For more information about the project, please refer to the [final report](REPORT.md).

## Table of Contents
- [P4ContainerFlow](#p4containerflow)
Expand All @@ -9,7 +11,6 @@ This is the repository for the Google Summer of Code project [P4-Enabled Contain
- [Prerequisites](#prerequisites)
- [Install Python Dependencies](#install-python-dependencies)
- [Installing PI](#installing-pi)
- [Build Custom Podman Images](#build-custom-podman-images)
- [Running examples](#running-examples)


Expand Down Expand Up @@ -44,22 +45,12 @@ The p4 library files in your `.venv` will be owned by the root user. Make sure t
sudo chown -R $USER .venv
```

### Build Custom Podman Images
```bash
make images
```
This will build the following images:
- `tcp-client`: A simple TCP client that sends a message to a server (this will run in h1-pod)
- `tcp-server`: A simple TCP server that listens for a message from a client (this will run in all other pods)

You can configure the target IP of the client and the port of the server in the [tcp/Containerfile.server](tcp/Containerfile.server) and [tcp/Containerfile.client](tcp/Containerfile.client) files respectively.

Furthermore, you can specify which image to run in the hosts by changing the `IMG` and `ARGS` variables in [scripts/switch_container/build.sh](scripts/switch_container/build.sh).

## Running examples
There are three examples in the `examples` directory:
- [process_migration](examples/process_migration): Process migration demo using network namespaces
- [host_containers](examples/host_containers): Container migration demo using containerized hosts, but not switch
- [switch_container](examples/switch_container): Container migration demo with all hosts and the switch containerized
- [redis](examples/redis): Redis container migration demo using the [Redis](https://redis.io/) in-memory database
- [container_migration_in_kubernetes](examples/container_migration_in_kubernetes): Container migration demo in Kubernetes

Simply `cd` into the desired example directory and follow the instructions in the README.
254 changes: 254 additions & 0 deletions REPORT.md

Large diffs are not rendered by default.

Binary file added assets/container_interface_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/container_interface_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/container_network_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/container_network_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/controller_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/controller_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/linux_network_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/linux_network_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/redis_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/redis_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/simple_lb_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/simple_lb_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion examples/host_containers/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
include ../../utils/Makefile

all: compile build controller
all: images compile build controller

terminals: h1 h2 h3 h4

Expand Down
2 changes: 1 addition & 1 deletion examples/switch_container/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
include ../../utils/Makefile

all: compile build controller
all: images compile build controller

terminals: h1 h2 h3 h4

Expand Down
Loading