<!-- 
RSS generated by JIRA (9.4.5#940005-sha1:e3094934eac4fd8653cf39da58f39364fb9cc7c1) at Sat Feb 10 06:01:44 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Akraino JIRA</title>
    <link>https://jira.akraino.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.5</version>
        <build-number>940005</build-number>
        <build-date>11-04-2023</build-date>
    </build-info>


<item>
            <title>[ICN-655] Multi tenant capable SDEWAN Hub in K8s clusters with single public IP address</title>
                <link>https://jira.akraino.org/browse/ICN-655</link>
                <project id="10400" key="ICN">Integrated Cloud Native NFV</project>
                    <description>&lt;p&gt;Current solution for multiple customers:&lt;/p&gt;

&lt;p&gt;Say there are X number of customers&lt;/p&gt;

&lt;p&gt;Say there are Y number of Hub locations&lt;/p&gt;

&lt;p&gt;To address Multi tenancy,&#160; SDEWAN Hub expects X * Y number of public IP addresses.&lt;/p&gt;

&lt;p&gt;Each site of a customer (uCPE) would use nearest Hub for making the tunnel.&lt;/p&gt;

&lt;p&gt;Problem statement:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&#160;Public IP addresses are expensive and not available.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Enhancement request:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Ensure that only Y number of public IPs are used.&#160; That is number of IP addresses needed are based on number of PoP locations.&lt;/li&gt;
	&lt;li&gt;All customers&apos; sites that are near one hub will use the same public IP address as Hub Gateway.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In my view, following is needed:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;SDEWAN VPN Concentrator POD shall use host network in the K8s (root network namespace) or its own network namespace like any other POD. But there is no tenant specific SDEWAN POD. It is global across all tenants.&#160; Of course, scale-out of VPN Concentrator for load sharing though.&#160;&lt;/li&gt;
	&lt;li&gt;Whenever VTI interface is created, based on the ID of the client, it shall assign that VTI interface to packet processing POD of the tenant.&#160;&#160;&lt;/li&gt;
	&lt;li&gt;Packet processing POD is the one that does rest of the packet processing such as firewall/NAT/IPSEC to other Hubs.&#160;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It means that there shall be a controller which listens on new tunnel establishments&#160; &#160;(IPSEC tunnel is established by BO router or or by the VPN client in PCs).&#160; It needs to assign the new VTI interface created to tenant specific packet processing POD&apos;s namespace.&lt;/p&gt;

&lt;p&gt;Do let me know if that can be made possible?&lt;/p&gt;</description>
                <environment></environment>
        <key id="12200">ICN-655</key>
            <summary>Multi tenant capable SDEWAN Hub in K8s clusters with single public IP address</summary>
                <type id="10000" iconUrl="https://jira.akraino.org/images/icons/issuetypes/epic.svg">Epic</type>
                                            <priority id="3" iconUrl="https://jira.akraino.org/images/icons/priorities/medium.svg">Medium</priority>
                        <status id="10000" iconUrl="https://jira.akraino.org/" description="">To Do</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="hle2">Huifeng Le</assignee>
                                    <reporter username="saddepalli">Srinivasa Addepalli</reporter>
                        <labels>
                    </labels>
                <created>Tue, 19 Jul 2022 00:31:36 +0000</created>
                <updated>Mon, 25 Jul 2022 16:45:30 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="12006" author="saddepalli" created="Mon, 25 Jul 2022 15:21:09 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://jira.akraino.org/secure/ViewProfile.jspa?name=hle2&quot; class=&quot;user-hover&quot; rel=&quot;hle2&quot;&gt;hle2&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;As I come to think about this more, I am wondering we could have a challenge if the SDEWAN VPN Concentrator is running in one physical node in the K8s cluster and the packet processing POD running on some other physical node. In that case, it is not possible to shift the VTI tunnel from one network namespace to another.&lt;/p&gt;

&lt;p&gt;Now, I am wondering whether the following solution would be good.&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;VPN Concentrator PODs and packet processing PODs are connected with, say some tunnel such as GRE tunnel.&lt;/li&gt;
	&lt;li&gt;VPN Concentrator for all the traffic for a given tenant sends the traffic GRE tunnels associated with the tenants. That is, if there are say 2 packet processing PODs for a given tenant (due to scale-out), then there would be 2 GRE tunnels.  VPN Concentrator will choose a GRE tunnel for a 5 tuple session (kind of load balancing).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This requires setting up IPTables rules and IP route rules with corresponding routing database to pass the packets among the VPN tunnels and GRE tunnels.&lt;/p&gt;

&lt;p&gt;What do you think?&lt;/p&gt;

&lt;p&gt;If that seems okay, I would imagine a controller  within K8s clusters to do following&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Knows about all packet processing PODs and SDEWAN PODs.&lt;/li&gt;
	&lt;li&gt;For every packet processing POD that comes up or goes down:
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;Knows about tenant (from the namespace).&lt;/li&gt;
		&lt;li&gt;Knows about all SDEWAN PODs that are running (Due to scale-out, there could be multiple instances)&lt;/li&gt;
		&lt;li&gt;Create GRE tunnels on both sides.&lt;/li&gt;
		&lt;li&gt;Setup route policies and route tables such as way that anything that is coming out of GRE tunnel go to VPN tunnel and vice versa.&lt;/li&gt;
		&lt;li&gt;Setup IPTables rules such a way that all the traffic for a given 5-tuple session go to the same tunnel.&lt;/li&gt;
		&lt;li&gt;Every time new SDEWAN POD comes up (due to scale-out)&lt;/li&gt;
		&lt;li&gt;Repeat the above process.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;



</comment>
                            <comment id="12003" author="saddepalli" created="Mon, 25 Jul 2022 13:59:39 +0000"  >&lt;p&gt;Different tenants will certainly will need to have different tunnels.&lt;/p&gt;

&lt;p&gt;In case of one tenant, there could be multiple Branch offices and multiple WFH users connecting to the same Hub. In that case, there could be multiple tunnels - At least one from each branch office and at least one from each WFH user.&#160; &#160;In summary,&#160; there are multiple tunnels.&#160; You can assume that a given tunnel is not shared by multiple tenants.&#160;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Identification of tenant :&#160; It shall be based on Initiator ID (&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4306#section-3.5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://datatracker.ietf.org/doc/html/rfc4306#section-3.5&lt;/a&gt;).&#160; Since, Client IP can&apos;t be used as Client IP gateway can be dynamic IP address.&#160; Tenant determination from tunnel establishment, in my mind can be&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Based on email address (getting domain name from the email address)&lt;/li&gt;
	&lt;li&gt;Domain name itself&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="12001" author="hle2" created="Mon, 25 Jul 2022 05:46:54 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.akraino.org/secure/ViewProfile.jspa?name=saddepalli&quot; class=&quot;user-hover&quot; rel=&quot;saddepalli&quot;&gt;saddepalli&lt;/a&gt; Some opens:&lt;br/&gt;
1. Different tenants will share same tunnel or different tunnels (with different client ip/oip + same hub ip), as VTI interface (also the related iptable rules) is created in strongswan&apos;s updown script, maybe not able to create multiple VTI interface in same tunnel.&lt;br/&gt;
2. How to identify client id? based on different client ip?  &lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10103" key="com.pyxis.greenhopper.jira:gh-epic-color">
                        <customfieldname>Epic Color</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ghx-label-1</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10102" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Multi-tenant capable SDEWAN Hub in K8s cluster</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10101" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10000"><![CDATA[To Do]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10105" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i005vg:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>