Created
March 1, 2022 18:35
-
-
Save trozet/b8b4ef29784be971285be1b7b7c44f59 to your computer and use it in GitHub Desktop.
sctp reproducer with OVN
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. Pull https://github.com/trozet/ovn-kubernetes/tree/fix_delete_sctp_ct | |
2. ./kind.sh -wk 1 | |
3. Create ovn networked pod: | |
[trozet@fedora ovn-kubernetes]$ cat ~/basic.yaml | |
--- | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: trozet3 | |
labels: | |
pod-name: client | |
role: webserver | |
app: spk-coredns | |
spec: | |
#hostNetwork: true | |
containers: | |
- name: pod1 | |
image: docker.io/centos/tools:latest | |
command: | |
# - /usr/bin/echo | |
- /sbin/init | |
imagePullPolicy: IfNotPresent | |
4. Create host networked pod: | |
[trozet@fedora ovn-kubernetes]$ cat ~/basic2.yaml | |
--- | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: pod2 | |
labels: | |
pod-name: server2 | |
spec: | |
hostNetwork: true | |
containers: | |
- name: pod2 | |
image: docker.io/centos/tools:latest | |
command: | |
- /sbin/init | |
5. Create SCTP service: | |
[trozet@fedora ovn-kubernetes]$ cat ~/sctp_service.yaml | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: my-service | |
spec: | |
selector: | |
#role: sctpserver | |
pod-name: client | |
ports: | |
- protocol: SCTP | |
port: 30102 | |
targetPort: 30102 | |
externalIPs: | |
- 172.31.249.11 | |
6. Start sctp server in ovn networked pod: | |
kubectl exec -it trozet3 /bin/bash | |
nc -l 30102 --sctp | |
7. Start sctp client in host networked pod: | |
kubectl exec -it pod2 /bin/bash | |
nc -v 172.31.249.11 30102 --sctp | |
8. Send some data from host networked pod, verified received in ovn networked pod. Also sctp heart beats should be being sent. | |
9. Start tcpdump in the ovnkube-node watching breth0 for port 30102: | |
kubectl exec -n ovn-kubernetes -it ovs-node-xlqsm /bin/bash | |
tcpdump -i breth0 -nneev port 30102 | |
10. Start tcpdump in the ovn networked pod: | |
kubectl exec -it trozet3 /bin/bash | |
tcpdump -i eth0 sctp -eennv | |
11. Delete the service. | |
12. You will now see heartbeats only making it from the ovn networked pod -> host networked pod. | |
Host networked pod will send heartbeat Req/Ack, and it will make it into breth0, but dropped somewhere in OVN. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment