From patchwork Thu Jan 5 02:13:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Pettit X-Patchwork-Id: 711198 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tvBCB4n4nz9svs for ; Thu, 5 Jan 2017 13:17:10 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 9C9AEC3E; Thu, 5 Jan 2017 02:13:29 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id E3C19C1D for ; Thu, 5 Jan 2017 02:13:25 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id E18AF171 for ; Thu, 5 Jan 2017 02:13:24 +0000 (UTC) Received: from mfilter41-d.gandi.net (mfilter41-d.gandi.net [217.70.178.173]) by relay3-d.mail.gandi.net (Postfix) with ESMTP id B32F5A80C4 for ; Thu, 5 Jan 2017 03:13:23 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mfilter41-d.gandi.net Received: from relay3-d.mail.gandi.net ([IPv6:::ffff:217.70.183.195]) by mfilter41-d.gandi.net (mfilter41-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id Yr4_h-lwdYmp for ; Thu, 5 Jan 2017 03:13:22 +0100 (CET) X-Originating-IP: 208.91.2.3 Received: from localhost.localdomain (unknown [208.91.2.3]) (Authenticated sender: jpettit@ovn.org) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id AC00AA80D3 for ; Thu, 5 Jan 2017 03:13:21 +0100 (CET) From: Justin Pettit To: dev@openvswitch.org Date: Wed, 4 Jan 2017 18:13:11 -0800 Message-Id: <1483582391-114359-9-git-send-email-jpettit@ovn.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1483582391-114359-1-git-send-email-jpettit@ovn.org> References: <1483582391-114359-1-git-send-email-jpettit@ovn.org> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH 9/9] ovn.at: Rewrite a test using ovn-controller 'inject-pkt' command. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Provide an example of using ovn-controller 'inject-pkt' and ovn-test 'expr-to-packets' commands to generate and verify proper handling of packets. Tests written in this way should be easier to understand than raw packets written in hexadecimal. Signed-off-by: Justin Pettit Acked-by: Ben Pfaff --- tests/ovn.at | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/tests/ovn.at b/tests/ovn.at index b7cb4cb..65f9776 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -2853,6 +2853,14 @@ ovn_start # network. R1 has a switchs ls1 (191.168.1.0/24) connected to it. # R2 has ls2 (172.16.1.0/24) connected to it. +ls1_lp1_mac="f0:00:00:01:02:03" +rp_ls1_mac="00:00:00:01:02:03" +rp_ls2_mac="00:00:00:01:02:04" +ls2_lp1_mac="f0:00:00:01:02:04" + +ls1_lp1_ip="192.168.1.2" +ls2_lp1_ip="172.16.1.2" + ovn-nbctl lr-add R1 ovn-nbctl lr-add R2 @@ -2860,16 +2868,16 @@ ovn-nbctl ls-add ls1 ovn-nbctl ls-add ls2 # Connect ls1 to R1 -ovn-nbctl lrp-add R1 ls1 00:00:00:01:02:03 192.168.1.1/24 +ovn-nbctl lrp-add R1 ls1 $rp_ls1_mac 192.168.1.1/24 ovn-nbctl lsp-add ls1 rp-ls1 -- set Logical_Switch_Port rp-ls1 type=router \ - options:router-port=ls1 addresses=\"00:00:00:01:02:03\" + options:router-port=ls1 addresses=\"$rp_ls1_mac\" # Connect ls2 to R2 -ovn-nbctl lrp-add R2 ls2 00:00:00:01:02:04 172.16.1.1/24 +ovn-nbctl lrp-add R2 ls2 $rp_ls2_mac 172.16.1.1/24 ovn-nbctl lsp-add ls2 rp-ls2 -- set Logical_Switch_Port rp-ls2 type=router \ - options:router-port=ls2 addresses=\"00:00:00:01:02:04\" + options:router-port=ls2 addresses=\"$rp_ls2_mac\" # Connect R1 to R2 ovn-nbctl lrp-add R1 R1_R2 00:00:00:02:03:04 20.0.0.1/24 peer=R2_R1 @@ -2880,11 +2888,11 @@ ovn-nbctl lr-route-add R2 "0.0.0.0/0" 20.0.0.1 # Create logical port ls1-lp1 in ls1 ovn-nbctl lsp-add ls1 ls1-lp1 \ --- lsp-set-addresses ls1-lp1 "f0:00:00:01:02:03 192.168.1.2" +-- lsp-set-addresses ls1-lp1 "$ls1_lp1_mac $ls1_lp1_ip" # Create logical port ls2-lp1 in ls2 ovn-nbctl lsp-add ls2 ls2-lp1 \ --- lsp-set-addresses ls2-lp1 "f0:00:00:01:02:04 172.16.1.2" +-- lsp-set-addresses ls2-lp1 "$ls2_lp1_mac $ls2_lp1_ip" # Create two hypervisor and create OVS ports corresponding to logical ports. net_add n1 @@ -2919,18 +2927,11 @@ ovn_populate_arp # XXX This should be more systematic. sleep 1 -# Send ip packets between the two ports. -ip_to_hex() { - printf "%02x%02x%02x%02x" "$@" -} - # Packet to send. -src_mac="f00000010203" -dst_mac="000000010203" -src_ip=`ip_to_hex 192 168 1 2` -dst_ip=`ip_to_hex 172 16 1 2` -packet=${dst_mac}${src_mac}08004500001c0000000040110000${src_ip}${dst_ip}0035111100080000 -as hv1 ovs-appctl netdev-dummy/receive hv1-vif1 $packet +packet="inport==\"ls1-lp1\" && eth.src==$ls1_lp1_mac && eth.dst==$rp_ls1_mac && + ip4 && ip.ttl==64 && ip4.src==$ls1_lp1_ip && ip4.dst==$ls2_lp1_ip && + udp && udp.src==53 && udp.dst==4369" +as hv1 ovs-appctl -t ovn-controller inject-pkt "$packet" echo "---------NB dump-----" @@ -2955,9 +2956,11 @@ as hv2 ovs-ofctl show br-int as hv2 ovs-ofctl dump-flows br-int # Packet to Expect -src_mac="000000010204" -dst_mac="f00000010204" -echo "${dst_mac}${src_mac}08004500001c000000003e110200${src_ip}${dst_ip}0035111100080000" > expected +# The TTL should be decremented by 2. +packet="eth.src==$rp_ls2_mac && eth.dst==$ls2_lp1_mac && + ip4 && ip.ttl==62 && ip4.src==$ls1_lp1_ip && ip4.dst==$ls2_lp1_ip && + udp && udp.src==53 && udp.dst==4369" +echo $packet | ovstest test-ovn expr-to-packets > expected OVN_CHECK_PACKETS([hv2/vif1-tx.pcap], [expected])