Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to support multiple "eNodeB and SGW-U" pairs with one MME #625

Closed
s5uishida opened this issue Oct 23, 2020 · 8 comments
Closed

How to support multiple "eNodeB and SGW-U" pairs with one MME #625

s5uishida opened this issue Oct 23, 2020 · 8 comments

Comments

@s5uishida
Copy link
Contributor

Please let me ask one question.

Is it possible to place one set of Open5GS EPC in DC or Cloud and manage multiple eNodeB and SGW-U pairs with one MME?

Since the IP address and port number of SGW-U are passed to eNodeB via S1-AP, I would like to know if it is possible to control different eNodeB and SGW-U pair for each tenant.

Thank you very much in advance.

@kbarlee
Copy link
Contributor

kbarlee commented Oct 23, 2020

Hey. Short answer, yes. There are a couple of options setup for SGW-C (SGW-U) and SMF (UPF) selection, so you can ensure that each UE is assigned to the correct userplane server.

# sgwu:
#
# <PFCP Client>>
#
# o PFCP Client(127.0.0.6:8805)
#
# pfcp:
# addr: 127.0.0.6
#
# <SGWU_SELECTION_MODE - EPC only>
#
# o Round-Robin
# (note that round robin can be disabled for a particular node
# by setting flag 'rr' to 0)
#
# sgwu:
# pfcp:
# - addr: 127.0.0.6
# - addr: 127.0.0.12
# rr: 0
# - addr: 127.0.0.18
#
# o SGWU selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
#
# sgwu:
# pfcp:
# - addr: 127.0.0.6
# tac: 1
# - addr: 127.0.0.12
# tac: [3,5,8]
#
# o SGWU selection by UE's APN (either single APN or multiple APNs)
#
# sgwu:
# pfcp:
# - addr: 127.0.0.6
# apn: ims
# - addr: 127.0.0.12
# apn: [internet, web]
#
# o SGWU selection by CellID(e_cell_id: 28bit)
# (either single e_cell_id or multiple e_cell_id, HEX representation)
#
# sgwu:
# pfcp:
# - addr: 127.0.0.6
# e_cell_id: 463
# - addr: 127.0.0.12
# e_cell_id: [123456789, 9413]
#

# o Round-Robin
# (note that round robin can be disabled for a particular node
# by setting flag 'rr' to 0)
#
# upf:
# pfcp:
# - addr: 127.0.0.7
# - addr: 127.0.0.12
# rr: 0
# - addr: 127.0.0.19
#
# o UPF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
#
# upf:
# pfcp:
# - addr: 127.0.0.7
# tac: 1
# - addr: 127.0.0.12
# tac: [3,5,8]
#
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
#
# upf:
# pfcp:
# - addr: 127.0.0.7
# dnn: ims
# - addr: 127.0.0.12
# apn: [internet, web]
#
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
# (either single enb_id or multiple enb_ids, HEX representation)
#
# upf:
# pfcp:
# - addr: 127.0.0.7
# e_cell_id: 463
# - addr: 127.0.0.12
# nr_cell_id: [123456789, 9413]
#

@s5uishida
Copy link
Contributor Author

Hi @kbarlee

Thank you very much!

Also, sorry for asking the question without checking sgwc.yaml and smf.yaml.

@kbarlee
Copy link
Contributor

kbarlee commented Oct 23, 2020

No worries!

@s5uishida s5uishida reopened this Oct 26, 2020
@s5uishida
Copy link
Contributor Author

Please let me ask for an additional question.

Is it possible to combine two or more types of conditions with AND?

For example: SGWU selection by eNodeB TAC AND UE's APN.

sgwu:
  pfcp:
    - addr: 127.0.0.6
      tac: 1
    - addr: 127.0.0.12
      tac: 3                 <==
      apn: ims               <==
    - addr: 127.0.0.20
      tac: 3                 <==
      apn: [internet, web]   <==

Thank you very much in advance.

@acetcom
Copy link
Member

acetcom commented Oct 26, 2020

The related code is as follows.

static bool compare_ue_info(ogs_pfcp_node_t *node, sgwc_sess_t *sess)
{
    sgwc_ue_t *sgwc_ue = NULL;
    int i;

    ogs_assert(node);
    ogs_assert(sess);
    sgwc_ue = sess->sgwc_ue;
    ogs_assert(sgwc_ue);

    for (i = 0; i < node->num_of_apn; i++)
        if (strcmp(node->apn[i], sess->pdn.apn) == 0) return true;

    for (i = 0; i < node->num_of_e_cell_id; i++)
        if (node->e_cell_id[i] == sgwc_ue->e_cgi.cell_id) return true;

    for (i = 0; i < node->num_of_tac; i++)
        if (node->tac[i] == sgwc_ue->e_tai.tac) return true;

    return false;
}

So, only ORing is supported. Basically, we can consider three ways for this.

  1. AND
  2. OR
  3. Both AND and OR

The third method requires a flag in the configuration file to distinguish AND and OR.

Anyway, I have no experience in live environment, so I implemented only OR first. Is an AND condition necessary in a real? Or do I need to support both AND and OR? Do you know how to support in other commercial EPC or 5GC?

If other settings are needed, I'll implement this part.

Thanks you for raising this issue.
Sukchan!

@kbarlee
Copy link
Contributor

kbarlee commented Oct 26, 2020

I feel the current setup would be sufficient in all cases; as when an attach with ims apn is requested it would use 127.0.0.12; internet or web would use 127.0.0.20?

#560 (comment)

Logic for the SMF(UPF) and SGWC(SGWU) selection is:

  1. Search through node list to see if any are dedicated to support the APN
    -- round robin between nodes that support the APN && are PFCP associated
    -- if there are none, move to 2

  2. Search through node list to see if any are dedicated to support the e_cell_ID
    -- round robin between nodes that support the e_cell_ID && are PFCP associated
    -- if there are none, move to 3

  3. Search through node list to see if any are dedicated to support the nr_cell_ID ((SMF ONLY))
    -- round robin between nodes that support the nr_cell_ID && are PFCP associated
    -- if there are none, move to 4

  4. Search through node list to see if any are dedicated to support the TAC
    -- round robin between nodes that support the TAC && are PFCP associated
    -- if there are none, move to 5

  5. Round robin full list. Use next PFCP associated node. If rr: 0 the node will be skipped. This is to avoid the dumb RR choice.

@s5uishida
Copy link
Contributor Author

Hi @acetcom and @kbarlee

Thank you very much for your replies.

I thought it would be good if UEs connecting to the same eNodeB (or rather TAC) for private LTE could use different U-Planes due to different APNs. But l will think a little about whether it's really necessary.

I will withdraw it once.

@s5uishida
Copy link
Contributor Author

I may think too much about private LTE.

So, I think the current logic is OK.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants