Skip to content

Instantly share code, notes, and snippets.

@trozet
Created March 1, 2022 18:35
Show Gist options
  • Save trozet/b8b4ef29784be971285be1b7b7c44f59 to your computer and use it in GitHub Desktop.
Save trozet/b8b4ef29784be971285be1b7b7c44f59 to your computer and use it in GitHub Desktop.
sctp reproducer with OVN
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