Just for record purposes, here are the configs I figured out on l2 gretap +
ipsec transport mode. The other party config is similar with proper changes
in ip, mac address and spi. Make sure spi matches. Otherwise, pkt will be
punted on the receiving side.

set int state eth0 up
set int ip address eth0 10.10.10.11/24
set int promiscuous on eth0

set ip arp eth0 10.10.10.10 24:6e:96:b4:b2:07

set int state eth1 up
set int promiscuous on eth1

create gre tunnel src 10.10.10.11 dst 10.10.10.10 teb
set int state gre0 up

create bridge-domain 1
set interface l2 bridge gre0 1
set interface l2 bridge eth1 1

ipsec spd add 1
set interface ipsec spd eth0 1

ipsec sa add 1 spi 255128 esp crypto-key
0123456789012345678901234567890101234567890123456789012345678901 crypto-alg
aes-gcm-256
ipsec sa add 2 spi 255129 esp crypto-key
0123456789012345678901234567890101234567890123456789012345678901 crypto-alg
aes-gcm-256

ipsec policy add spd 1 priority 90 inbound action protect sa 2
local-ip-range 10.10.10.11-10.10.10.11 remote-ip-range
10.10.10.10-10.10.10.10
ipsec policy add spd 1 priority 90 outbound action protect sa 1
local-ip-range 10.10.10.11-10.10.10.11 remote-ip-range
10.10.10.10-10.10.10.10

trace add dpdk-input 10

On Tue, Oct 8, 2019 at 3:23 PM Chuan Han via Lists.Fd.Io <chuanhan=
google....@lists.fd.io> wrote:

> Hi, Neale/vpp experts,
>
> Can you help check why the receiving side drops all the incoming pkts
> because of unknown ip protocol?
>
> I looked at TestIpsecGreTebIfEsp, but had no clue how it is mapped to cli
> commands.
>
> I am new to vpp.
>
> Thanks.
> Chuan
>
> On Fri, Oct 4, 2019 at 11:41 AM Chuan Han via Lists.Fd.Io <chuanhan=
> google....@lists.fd.io> wrote:
>
>> Thanks for helping.
>>
>> I removed spd configs on both sides, but still no luck. I am pinging from
>> r230 side.
>>
>> It seems r230 is able to sending ping pkts over dpdk interface. However,
>> on r740 side, gre0 interface drops all of them. See the attached updated
>> cfg files and log files for more details.
>>
>>   IPSec: remote:10.10.10.11 spi:255129 (0x0003e499) seq 418
>> 00:06:52:367944: esp4-decrypt-tun
>>   esp: crypto aes-cbc-128 integrity sha1-96 pkt-seq 418 sa-seq 0
>> sa-seq-hi 0
>> 00:06:52:367948: ip4-input-no-checksum
>>   GRE: 10.10.10.11 -> 10.10.10.10
>>     tos 0x00, ttl 254, length 66, checksum 0x9464
>>     fragment id 0x0000
>>   GRE teb
>> 00:06:52:367948: ip4-not-enabled
>>     GRE: 10.10.10.11 -> 10.10.10.10
>>       tos 0x00, ttl 254, length 66, checksum 0x9464
>>       fragment id 0x0000
>>     GRE teb
>> 00:06:52:367948: error-drop
>>   rx:gre0
>> 00:06:52:367949: drop
>>   ip4-input: unknown ip protocol
>>
>>
>> On Fri, Oct 4, 2019 at 8:39 AM Neale Ranns (nranns) <nra...@cisco.com>
>> wrote:
>>
>>>
>>>
>>> Hi Chuan,
>>>
>>>
>>>
>>> Please remove the SPD config. For tunnels all packets that
>>> ingress/egress the tunnel are decrypted/encrypted, so no policy is
>>> required. The presence of the SPD on the ingress eth0 link could be why
>>> it’s not working.
>>>
>>> Please provide packet traces when you are reporting packet loss
>>> problems, it helps us debug.
>>>
>>>
>>>
>>> For reference the setup for GRE TEB IPSec can be found in the python UT
>>> TestIpsecGreTebIfEsp.
>>>
>>>
>>>
>>> Regards,
>>>
>>> neale
>>>
>>>
>>>
>>>
>>>
>>> *From: *<vpp-dev@lists.fd.io> on behalf of "Chuan Han via Lists.Fd.Io"
>>> <chuanhan=google....@lists.fd.io>
>>> *Reply to: *"chuan...@google.com" <chuan...@google.com>
>>> *Date: *Friday 4 October 2019 at 02:15
>>> *To: *"John Lo (loj)" <l...@cisco.com>
>>> *Cc: *"vpp-dev@lists.fd.io" <vpp-dev@lists.fd.io>
>>> *Subject: *Re: [vpp-dev] How to configure l2 gre over ipsec in vpp 19.08
>>>
>>>
>>>
>>> Hi,
>>>
>>>
>>>
>>> Thanks for information.
>>>
>>>
>>>
>>> I am trying to configure l2 gre over ipsec transport mode.
>>>
>>>
>>>
>>> Here are my startup.cfg files. Can you help check if my configuration is
>>> correct or not?
>>>
>>>
>>>
>>> r230 and r740 are two servers which are directly connected.
>>>
>>>
>>>
>>> eth0 is the phy nic. host-veth1 is one endpoint of veth pair. the other
>>> end is connected to a network namespace with ip address 172.16.1.2.
>>>
>>>
>>>
>>> From the network namespace, I cannot ping the other end 172.16.1.1.
>>>
>>>
>>>
>>> On r230, I can see  unknown ip protocol errors.
>>>
>>> vpp# sh errors
>>>    Count                    Node                  Reason
>>>          5                null-node               blackholed packets
>>>          5          ipsec4-output-feature         IPSec policy (no match)
>>>          1            esp4-decrypt-tun            ESP pkts received
>>>          1            ipsec4-tun-input            good packets received
>>>          1          ipsec4-input-feature          IPSEC pkts received
>>>          1                ip4-input               unknown ip protocol
>>>        592                gre-encap               GRE output packets
>>> encapsulated
>>>        592          ipsec4-output-feature         IPSec policy bypass
>>>        592            esp4-encrypt-tun            ESP pkts received
>>>        592                l2-output               L2 output packets
>>>        592                l2-learn                L2 learn packets
>>>          1                l2-learn                L2 learn misses
>>>        592                l2-input                L2 input packets
>>>        592                l2-flood                L2 flood packets
>>> vpp# sh int
>>>               Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
>>> Counter          Count
>>> eth0                              1      up          9000/0/0/0     rx
>>> packets                     1
>>>                                                                     rx
>>> bytes                     166
>>>                                                                     tx
>>> packets                   592
>>>                                                                     tx
>>> bytes                   88816
>>>
>>> drops                          5
>>>                                                                     ip4
>>>                            1
>>>
>>> rx-error                       1
>>> gre0                              3      up          9000/0/0/0
>>> drops                          1
>>>                                                                     ip4
>>>                            1
>>> host-veth1                        2      up          9000/0/0/0     rx
>>> packets                   592
>>>                                                                     rx
>>> bytes                   24892
>>> local0                            0     down          0/0/0/0
>>> vpp# sh errors
>>>    Count                    Node                  Reason
>>>          5                null-node               blackholed packets
>>>          5          ipsec4-output-feature         IPSec policy (no match)
>>>          1            esp4-decrypt-tun            ESP pkts received
>>>          1            ipsec4-tun-input            good packets received
>>>          1          ipsec4-input-feature          IPSEC pkts received
>>>          1                ip4-input               unknown ip protocol
>>>        592                gre-encap               GRE output packets
>>> encapsulated
>>>        592          ipsec4-output-feature         IPSec policy bypass
>>>        592            esp4-encrypt-tun            ESP pkts received
>>>        592                l2-output               L2 output packets
>>>        592                l2-learn                L2 learn packets
>>>          1                l2-learn                L2 learn misses
>>>        592                l2-input                L2 input packets
>>>        592                l2-flood                L2 flood packets
>>> vpp#
>>>
>>>
>>>
>>> On r740, I see the same errors:
>>>
>>>
>>>
>>> vpp# sh int
>>>               Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
>>> Counter          Count
>>> eth0                              1      up          9000/0/0/0     rx
>>> packets                   592
>>>                                                                     rx
>>> bytes                   88816
>>>                                                                     tx
>>> packets                     1
>>>                                                                     tx
>>> bytes                     166
>>>                                                                     ip4
>>>                          592
>>> gre0                              3      up          9000/0/0/0
>>> drops                        592
>>>                                                                     ip4
>>>                          592
>>> host-veth1                        2      up          9000/0/0/0     rx
>>> packets                     1
>>>                                                                     rx
>>> bytes                      70
>>> local0                            0     down          0/0/0/0
>>> vpp# sh errors
>>>    Count                    Node                  Reason
>>>        592            esp4-decrypt-tun            ESP pkts received
>>>        592            ipsec4-tun-input            good packets received
>>>        592          ipsec4-input-feature          IPSEC pkts received
>>>        592                ip4-input               unknown ip protocol
>>>          1                gre-encap               GRE output packets
>>> encapsulated
>>>          1          ipsec4-output-feature         IPSec policy bypass
>>>          1            esp4-encrypt-tun            ESP pkts received
>>>          1                l2-output               L2 output packets
>>>          1                l2-learn                L2 learn packets
>>>          1                l2-learn                L2 learn misses
>>>          1                l2-input                L2 input packets
>>>          1                l2-flood                L2 flood packets
>>> vpp#
>>>
>>>
>>>
>>> On Wed, Oct 2, 2019 at 9:13 AM John Lo (loj) <l...@cisco.com> wrote:
>>>
>>> To create GRE tunnel in L2 mode, you can add “teb” keyword in the create
>>> CLI which makes the GRE tunnel work in transparent ethernet bridging mode:
>>>
>>>
>>>
>>> vpp# create gre ?
>>>
>>>   create gre tunnel                        create gre tunnel src <addr>
>>> dst <addr> [instance <n>] [outer-fib-id <fib>] [*teb* | erspan
>>> <session-id>] [del]
>>>
>>>
>>>
>>> In theory, a GRE tunnel can be configured with IPSec, as described by
>>> Neale, irrespective of it being in teb mode or not.  Neale, please correct
>>> me if it is not the case.
>>>
>>>
>>>
>>> Regards,
>>>
>>> John
>>>
>>>
>>>
>>> *From:* vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> *On Behalf Of *Chuan
>>> Han via Lists.Fd.Io
>>> *Sent:* Wednesday, October 02, 2019 11:32 AM
>>> *To:* Neale Ranns (nranns) <nra...@cisco.com>
>>> *Cc:* vpp-dev@lists.fd.io
>>> *Subject:* Re: [vpp-dev] How to configure l2 gre over ipsec in vpp 19.08
>>>
>>>
>>>
>>> Gre is l3 in this case. Right? This limits the possible use cases.
>>>
>>>
>>>
>>> Is there any plan to support l2 gre over ipsec transport mode? It seems
>>> vpp 17 support s this feature. Not sure why it is dropped in 19.
>>>
>>>
>>>
>>> On Wed, Oct 2, 2019, 12:18 AM Neale Ranns (nranns) <nra...@cisco.com>
>>> wrote:
>>>
>>>
>>> Hi Chuan,
>>>
>>> IPSec and GRE is supported using the tunnel protection mechanism :
>>>   https://wiki.fd.io/view/VPP/IPSec
>>>
>>> GRE over IPSec is only support when the SA is in tunnel mode. This means
>>> there is a double encap of the IP header ; once by the SA (in tunnel mode)
>>> and once by the tunnel itself. (Which has always been the case in VPP).
>>>
>>> Example config follows :
>>>
>>>   DBGvpp# ipsec sa add 20 spi 200 crypto-key
>>> 6541686776336961656264656f6f6579 crypto-alg aes-cbc-128 tunnel-src
>>> 10.10.10.10 tunnel-dst 10.10.10.11
>>>   DBGvpp# ipsec sa add 30 spi 300 crypto-key
>>> 6541686776336961656264656f6f6579 crypto-alg aes-cbc-128 tunnel-src
>>> 10.10.10.11 tunnel-dst 10.10.10.10
>>>   DBGvpp# create gre tunnel src 10.10.10.10 dst 10.10.10.11
>>>     gre0
>>>   DBGvpp# ipsec tunnel protect gre0 sa-in 20 sa-out 30
>>>   DBGvpp# sh ipsec protect
>>>   gre0
>>>    output-sa:
>>>     [1] sa 30 (0x1e) spi 300 (0x0000012c) protocol:esp flags:[tunnel ]
>>>    input-sa:
>>>     [0] sa 20 (0x14) spi 200 (0x000000c8) protocol:esp flags:[tunnel
>>> Protect ]
>>>
>>> Regards,
>>> neale
>>>
>>>
>>> From: <vpp-dev@lists.fd.io> on behalf of "Chuan Han via Lists.Fd.Io"
>>> <chuanhan=google....@lists.fd.io>
>>> Reply to: "chuan...@google.com" <chuan...@google.com>
>>> Date: Wednesday 2 October 2019 at 02:08
>>> To: "vpp-dev@lists.fd.io" <vpp-dev@lists.fd.io>
>>> Cc: "vpp-dev@lists.fd.io" <vpp-dev@lists.fd.io>
>>> Subject: [vpp-dev] How to configure l2 gre over ipsec in vpp 19.08
>>>
>>> Hi, vpp experts,
>>>
>>> I am trying to configure l2 gre over ipsec. I followed the steps here:
>>> https://docs.fd.io/vpp/16.12/ipsec_gre_doc.html
>>>
>>> I hit the following error:
>>> create ipsec: unknown input `gre tunnel src 10.10.10.10 dst...'
>>>
>>> My vpp version is v19.08.1-release
>>>
>>> It seems on this version the "create ipsec gre tunnel" command does not
>>> work. If so, is there any other way of configuring l2 gre over ipsec in
>>> 19.08?
>>>
>>> Please advise.
>>>
>>> Thanks.
>>> Chuan
>>>
>>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>>
>> View/Reply Online (#14123): https://lists.fd.io/g/vpp-dev/message/14123
>> Mute This Topic: https://lists.fd.io/mt/34364734/1991531
>> Group Owner: vpp-dev+ow...@lists.fd.io
>> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [chuan...@google.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
>
> View/Reply Online (#14150): https://lists.fd.io/g/vpp-dev/message/14150
> Mute This Topic: https://lists.fd.io/mt/34364734/1991531
> Group Owner: vpp-dev+ow...@lists.fd.io
> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [chuan...@google.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#14467): https://lists.fd.io/g/vpp-dev/message/14467
Mute This Topic: https://lists.fd.io/mt/34364734/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to