On 8/20/24 00:10, Jim C via discuss wrote:
> Oh also I noticed that the port used for VXLAN is always udp 4789.
> Then I suppose I can just always hard code that in our strongSwan policy?

Yes, 4789 is a registered port for VXLAN:
  https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
If you use Geneve tunnels, it will be 6081.

It is possible to override with 'dst_port' option, but it is rarely used.
If 'dst_port' is not specified, then it will be 4789 for VXLAN.

> 
> On Mon, Aug 19, 2024 at 12:12 PM Jim C <jimc84...@gmail.com> wrote:
> 
>     Thank you, Ilya, as always for the complete answer! I have some follow
>     up questions:
> 
>     1. For the strongSwan policy that OVS creates, I see something like this
>        (on one of my 2 nodes) (I have also replaced the ports and the IPs with
>         dummy values):
> 
>     config setup
>         uniqueids=yes
> 
>     conn %default
>         keyingtries=%forever
>         type=transport
>         keyexchange=ikev2
>         auto=route
>         ike=aes256gcm16-sha256-modp2048
>         esp=aes256gcm16-modp2048
> 
>     conn vx_node1-in-1
>         left=%any
>         right=10.0.0.2
>         authby=psk
>         leftprotoport=udp/1234
>         rightprotoport=udp
> 
>     conn vx_node1-out-1
>         left=%any
>         right=10.0.0.2
>         authby=psk
>         leftprotoport=udp
>         rightprotoport=udp/1234
> 
>     The two policies/conns are mostly identical except the protoport parts.
>     But does this combination mean every traffic from my source machine to
>     the remote machine will be encrypted? I want to understand what these
>     policies actually mean, mapping to the OVS configs, and how they guarantee
>     that only the traffic between the OVS tunnels is encrypted.

With such a configuration all the UDP traffic that goes to port 1234
on 10.0.0.2 will be encrypted.  Tunnels are listening on a specific
UDP port, so only traffic to this port on a particular remote machine
is affected.

> 
>     2. I tried to enable BFD to my tunnels. But the status always shows:
> 
>     bfd_status: {diagnostic="No Diagnostic", flap_count="0", 
> forwarding="false",>     remote_diagnostic="No Diagnostic", 
> remote_state=down, state=down}
> 
>     for both of my nodes. I do think the tunnel is working since our upper 
> layer
>     who uses the OVS tunnel works. But why are the states all down and it's
>     showing "No Diagnostic"?

Hard to tell, but it seems like BFD didn't start on that interface.
What 'ovs-appctl bfd/show' tells?  Any clues in the logs?

> 
>     Thanks,
>     Jim
> 
>     On Mon, Aug 19, 2024 at 4:52 AM Ilya Maximets <i.maxim...@ovn.org 
> <mailto:i.maxim...@ovn.org>> wrote:
> 
>         On 8/18/24 11:16, Jim C via discuss wrote:
>         > Hi,
>         >
>         > I'm looking into the implementation of StrongSwanHelper in OVS 
> IPSec. I noticed that
>         > we are using */usr/sbin/ipsec* for strongSwan, which means we are 
> still using the
>         > legacy *strongswan-starter* systemd service (which uses *charon*).
> 
>         That's true.  The reason is that strongSwan support in 
> ovs-monitor-ipsec script is
>         mostly tailored for Ubuntu/Debian and, AFAICT, strongswan-starter is 
> still a default
>         method for running strongSwan in Ubuntu.  At least, that's what is 
> getting installed
>         with 'apt install strongswan' on the latest Ubuntu 24.04.
> 
>         We should migrate to swanctl at some point, but I'm not aware of 
> anyone actively
>         working on this transition.
> 
>         > However, the environment that I'm working on is using the new 
> strongSwan service
>         > *strongswan* which uses *swanctl* and *charon-systemd*.
>         >
>         > Hence, I'm trying to see if I can modify that part of the 
> implementation and integrate
>         > the new strongSwan service. Now I have a couple of questions:
>         >
>         > 1) In function StrongSwanHelper, do we only update the new policy 
> to strongSwan?
>         > Do we make any updates on the OVS side (e.g. update OVS dbs, 
> configs, etc.)? I.e.,
>         > if we can somehow update the strongSwan policy somewhere else (e.g. 
> hardcode the policy
>         > in the new strongSwan config files), we don't actually need to rely 
> on that OVS helper
>         > function?
> 
>         ovs-monitor-ipsec daemon is not necessary to use IPSec with OVS.  
> It's a small
>         convenience daemon that monitors changes in OVS database and 
> re-configures the
>         IKE daemon according to these changes.  It doesn't write anything 
> back nor does
>         it change any other configuration in OVS.
> 
>         So, it's mostly a convenience script that would change the tunnels if 
> you
>         change a "remote_ip" of one of the tunnels in the database, for 
> example.
> 
>         If your setup is not highly dynamic, you should be able to just 
> create a static
>         configuration for strongSwan and update it manually when needed.
> 
>         >
>         > 2) Currently, the way I'm using to verify if the OVS tunnel works 
> is 
>         > *ovs-appctl -t ovs-monitor-ipsec tunnels/show *
>         > After I manually update the strongSwan policy in its config files, 
> I can see output for 
>         >
>         >   * Kernel policies installed
>         >   * Kernel security associations installed
>         >
>         > but NOT
>         >
>         >   * IPsec connections that are active
>         >
>         > I checked the code and it seems expected because the result of the 
> last item comes from
>         > *ipsec status*, but our env doesn't have strongswan-starter so we 
> can't support that command.
> 
>         That's correct.
> 
>         > But I'm more interested in the field *CFM state*. For my case, it's 
> *disabled*. Does it mean
>         > that the OVS tunnel is FOR SURE not working correctly? Or OVS 
> doesn't know in this case?
>         >
>         > And in my case, is there a better way to check what's going on with 
> the CFM state, and overall
>         > is there another way to verify the tunnel works correctly?
> 
>         CFM is disabled by default and it will not be enabled until you 
> manually set
>         'cfm_mpid' for your tunnels in the OVS database.  So, "Disabled" 
> means that the
>         CFM mechanism is disabled, it does not indicate any issue with the 
> tunnel.
>         If you enable CFM and CFM detects tunnel failure, then the state will 
> be "Down".
>         I'd suggest to use BFD instead of CFM though, it seems to be more 
> widely used.
> 
>         To enable BFD (check_tnl_key is not necessary, but recommended):
>           ovs-vsctl set interface <tunnel> bfd:enable=true 
> bfd:check_tnl_key=true
>         Then you may monitor bfd_status column in the interface table for the 
> current
>         state of the tunnel.  It will also show up in the ovs-vsctl show.  
> More detailed
>         status is also available in 'ovs-appctl bfd/show'.
> 
>         More info in ovs-vswitchd.conf.db(5).
> 
>         Best regards, Ilya Maximets.
> 
> 
> _______________________________________________
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to