From 13ccea1a14dd12e585ef34680fcbcab5fd17550b Mon Sep 17 00:00:00 2001 From: Kuralamudhan Ramakrishan Date: Sat, 28 Mar 2020 03:56:45 +0000 Subject: [PATCH] adding the example folder - adding vlan and provider network Signed-off-by: Kuralamudhan Ramakrishnan Change-Id: Ic97c61b38b51a7391a4d4b1c2e918c6373bff3b4 --- example/README.md | 199 +++++++++ example/images/direct-provider-networking.png | Bin 0 -> 31119 bytes example/images/vlan-tagging.png | Bin 0 -> 31521 bytes example/ovn4nfv-k8s-plugin-daemonset.yml | 555 ++++++++++++++++++++++++++ example/ovn4nfv_direct_pn.yml | 79 ++++ example/ovn4nfv_vlan_pn.yml | 82 ++++ 6 files changed, 915 insertions(+) create mode 100644 example/README.md create mode 100644 example/images/direct-provider-networking.png create mode 100644 example/images/vlan-tagging.png create mode 100644 example/ovn4nfv-k8s-plugin-daemonset.yml create mode 100644 example/ovn4nfv_direct_pn.yml create mode 100644 example/ovn4nfv_vlan_pn.yml diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..ff52bad --- /dev/null +++ b/example/README.md @@ -0,0 +1,199 @@ +# Example Setup and Testing + +In this `./example` folder, OVN4NFV-plugin daemonset yaml file, VLAN and direct Provider networking testing scenarios and required sample +configuration file. + +# Quick start + +## Creating sandbox environment + +Create 2 VMs in your setup. The recommended way of creating the sandbox is through KUD. Please follow the all-in-one setup in KUD. This +will create two VMs and provide the required sandbox. + +## VLAN Tagging Provider network testing + +The following setup have 2 VMs with one VM having Kubernetes setup with OVN4NFVk8s plugin and another VM act as provider networking to do +testing. + +Run the following yaml file to test teh vlan tagging provider networking. User required to change the `providerInterfaceName` and +`nodeLabelList` in the `ovn4nfv_vlan_pn.yml` + +``` +kubectl apply -f ovn4nfv_vlan_pn.yml +``` +This create Vlan tagging interface eth0.100 in VM1 and two pods for the deployment `pnw-original-vlan-1` and `pnw-original-vlan-2` in VM. +Test the interface details and inter network communication between `net0` interfaces +``` +# kubectl exec -it pnw-original-vlan-1-6c67574cd7-mv57g -- ifconfig +eth0 Link encap:Ethernet HWaddr 0A:58:0A:F4:40:30 + inet addr:10.244.64.48 Bcast:0.0.0.0 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1 + RX packets:11 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:462 (462.0 B) TX bytes:0 (0.0 B) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) + +net0 Link encap:Ethernet HWaddr 0A:00:00:00:00:3C + inet addr:172.16.33.3 Bcast:172.16.33.255 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1 + RX packets:10 errors:0 dropped:0 overruns:0 frame:0 + TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:868 (868.0 B) TX bytes:826 (826.0 B) +# kubectl exec -it pnw-original-vlan-2-5bd9ffbf5c-4gcgq -- ifconfig +eth0 Link encap:Ethernet HWaddr 0A:58:0A:F4:40:31 + inet addr:10.244.64.49 Bcast:0.0.0.0 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1 + RX packets:11 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:462 (462.0 B) TX bytes:0 (0.0 B) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) + +net0 Link encap:Ethernet HWaddr 0A:00:00:00:00:3D + inet addr:172.16.33.4 Bcast:172.16.33.255 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1 + RX packets:25 errors:0 dropped:0 overruns:0 frame:0 + TX packets:25 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:2282 (2.2 KiB) TX bytes:2282 (2.2 KiB) +``` +Test the ping operation between the vlan interfaces +``` +# kubectl exec -it pnw-original-vlan-2-5bd9ffbf5c-4gcgq -- ping -I net0 172.16.33.3 -c 2 +PING 172.16.33.3 (172.16.33.3): 56 data bytes +64 bytes from 172.16.33.3: seq=0 ttl=64 time=0.092 ms +64 bytes from 172.16.33.3: seq=1 ttl=64 time=0.105 ms + +--- 172.16.33.3 ping statistics --- +2 packets transmitted, 2 packets received, 0% packet loss +round-trip min/avg/max = 0.092/0.098/0.105 ms +``` +In VM2 create a Vlan tagging for eth0 as eth0.100 and configure the IP address as +``` +# ifconfig eth0.100 +eth0.100: flags=4163 mtu 1500 + inet 172.16.33.2 netmask 255.255.255.0 broadcast 172.16.33.255 + ether 52:54:00:f4:ee:d9 txqueuelen 1000 (Ethernet) + RX packets 111 bytes 8092 (8.0 KB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 149 bytes 12698 (12.6 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 +``` +Pinging from VM2 through eth0.100 to pod 1 in VM1 should be successfull to test the VLAN tagging +``` +# ping -I eth0.100 172.16.33.3 -c 2 +PING 172.16.33.3 (172.16.33.3) from 172.16.33.2 eth0.100: 56(84) bytes of data. +64 bytes from 172.16.33.3: icmp_seq=1 ttl=64 time=0.382 ms +64 bytes from 172.16.33.3: icmp_seq=2 ttl=64 time=0.347 ms + +--- 172.16.33.3 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1009ms +rtt min/avg/max/mdev = 0.347/0.364/0.382/0.025 ms +``` +## VLAN Tagging between VMs +![vlan tagging testing](images/vlan-tagging.png) + +# Direct Provider network testing + +The main difference between Vlan tagging and Direct provider networking is that VLAN logical interface is created and then ports are +attached to it. In order to validate the direct provider networking connectivity, we create VLAN tagging between VM1 & VM2 and test the +connectivity as follow. + +Create VLAN tagging interface eth0.101 in VM1 and VM2. Just add `providerInterfaceName: eth0.101' in Direct provider network CR. +``` +# kubectl apply -f ovn4nfv_direct_pn.yml +``` +Check the inter connection between direct provider network pods as follow +``` +# kubectl exec -it pnw-original-direct-1-85f5b45fdd-qq6xc -- ifconfig +eth0 Link encap:Ethernet HWaddr 0A:58:0A:F4:40:33 + inet addr:10.244.64.51 Bcast:0.0.0.0 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1 + RX packets:6 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:252 (252.0 B) TX bytes:0 (0.0 B) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) + +net0 Link encap:Ethernet HWaddr 0A:00:00:00:00:3E + inet addr:172.16.34.3 Bcast:172.16.34.255 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1 + RX packets:29 errors:0 dropped:0 overruns:0 frame:0 + TX packets:26 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:2394 (2.3 KiB) TX bytes:2268 (2.2 KiB) + +# kubectl exec -it pnw-original-direct-2-6bc54d98c4-vhxmk -- ifconfig +eth0 Link encap:Ethernet HWaddr 0A:58:0A:F4:40:32 + inet addr:10.244.64.50 Bcast:0.0.0.0 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1 + RX packets:6 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:252 (252.0 B) TX bytes:0 (0.0 B) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) + +net0 Link encap:Ethernet HWaddr 0A:00:00:00:00:3F + inet addr:172.16.34.4 Bcast:172.16.34.255 Mask:255.255.255.0 + UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1 + RX packets:14 errors:0 dropped:0 overruns:0 frame:0 + TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:1092 (1.0 KiB) TX bytes:924 (924.0 B) +# kubectl exec -it pnw-original-direct-2-6bc54d98c4-vhxmk -- ping -I net0 172.16.34.3 -c 2 +PING 172.16.34.3 (172.16.34.3): 56 data bytes +64 bytes from 172.16.34.3: seq=0 ttl=64 time=0.097 ms +64 bytes from 172.16.34.3: seq=1 ttl=64 time=0.096 ms + +--- 172.16.34.3 ping statistics --- +2 packets transmitted, 2 packets received, 0% packet loss +round-trip min/avg/max = 0.096/0.096/0.097 ms +``` +In VM2, ping the pod1 in the VM1 +$ ping -I eth0.101 172.16.34.2 -c 2 +``` +PING 172.16.34.2 (172.16.34.2) from 172.16.34.2 eth0.101: 56(84) bytes of data. +64 bytes from 172.16.34.2: icmp_seq=1 ttl=64 time=0.057 ms +64 bytes from 172.16.34.2: icmp_seq=2 ttl=64 time=0.065 ms + +--- 172.16.34.2 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1010ms +rtt min/avg/max/mdev = 0.057/0.061/0.065/0.004 ms +``` +## Direct provider networking between VMs +![Direct provider network testing](images/direct-provider-networking.png) + +# Summary + +This is only the test scenario for development and also for verification purpose. Work in progress to make the end2end testing +automatic. diff --git a/example/images/direct-provider-networking.png b/example/images/direct-provider-networking.png new file mode 100644 index 0000000000000000000000000000000000000000..ffed71df90a1d3b45549b603f033eaaa33296331 GIT binary patch literal 31119 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%0A+Xju$(G^5 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 eR@s~I`*{@n52q2u0Uss