diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index 979dea4..25c58e8 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -2442,6 +2442,9 @@ ovn_port_update_sbrec(struct northd_context *ctx,
         if (op->derived) {
             const char *redirect_chassis = smap_get(&op->nbrp->options,
                                                     "redirect-chassis");
+            const char *redirect_type = smap_get(&op->nbrp->options,
+                                                 "redirect-type");
+
             int n_gw_options_set = 0;
             if (op->nbrp->ha_chassis_group) {
                 n_gw_options_set++;
@@ -2534,6 +2537,9 @@ ovn_port_update_sbrec(struct northd_context *ctx,
                 sbrec_port_binding_set_gateway_chassis(op->sb, NULL, 0);
             }
             smap_add(&new, "distributed-port", op->nbrp->name);
+            if (redirect_type) {
+                smap_add(&new, "redirect-type", redirect_type);
+            }
         } else {
             if (op->peer) {
                 smap_add(&new, "peer", op->peer->key);
diff --git a/ovn-nb.xml b/ovn-nb.xml
index 57b6edb..a31b4b6 100644
--- a/ovn-nb.xml
+++ b/ovn-nb.xml
@@ -1902,6 +1902,49 @@
           issues.
         </p>
       </column>
+
+      <column name="options" key="redirect-type">
+        <p>
+          This options dictates if a packet redirected to
+          <code>gateway chassis</code> will be overlay encapsulated
+          or go as a regular vlan packet.
+        </p>
+
+        <p>
+          Option takes following values
+        </p>
+
+        <ul>
+          <li>
+            OVERLAY
+          </li>
+
+          <li>
+            VLAN
+          </li>
+        </ul>
+
+        <p>
+          OVERLAY option will ensure that redirected packet goes out as
+          encapsulation via the tunnel port.
+        </p>
+
+        <p>
+          VLAN option will ensure that redirected packet goes out as vlan
+          tagged via the localnet port.
+        </p>
+
+        <p>
+          OVERLAY is the default redirection type.
+        </p>
+
+        <p>
+          Option is applicable only to gateway chassis attached logical
+          router ports.
+        </p>
+
+      </column>
+
     </group>
 
     <group title="Attachment">
diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at
index a19e33f..11a3273 100644
--- a/tests/ovn-nbctl.at
+++ b/tests/ovn-nbctl.at
@@ -1220,6 +1220,31 @@ lrp0-chassis1     1
 
 dnl ---------------------------------------------------------------------
 
+OVN_NBCTL_TEST([ovn_nbctl_redirect_type], [logical router port redirect type], [
+AT_CHECK([ovn-nbctl lr-add lr0])
+AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
+AT_CHECK([ovn-nbctl lrp-get-redirect-type lrp0], [0], [dnl
+overlay
+])
+AT_CHECK([ovn-nbctl lrp-set-redirect-type lp0 vlan], [1], [],
+[ovn-nbctl: lp0: port name not found
+])
+AT_CHECK([ovn-nbctl lrp-set-redirect-type lrp0 vlan], [0], [])
+AT_CHECK([ovn-nbctl lrp-get-redirect-type lrp0], [0], [dnl
+vlan
+])
+AT_CHECK([ovn-nbctl lrp-set-redirect-type lrp0 overlay], [0], [])
+AT_CHECK([ovn-nbctl lrp-get-redirect-type lrp0], [0], [dnl
+overlay
+])
+AT_CHECK([ovn-nbctl lrp-set-redirect-type lrp0 abcd], [1], [],
+[ovn-nbctl: Invalid redirect type: abcd
+])
+
+])
+
+dnl ---------------------------------------------------------------------
+
 OVN_NBCTL_TEST([ovn_nbctl_lrp_enable], [logical router port enable and disable], [
 AT_CHECK([ovn-nbctl lr-add lr0])
 AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index 62e58fd..2055ce3 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -898,3 +898,34 @@ as northd
 OVS_APP_EXIT_AND_WAIT([ovn-northd])
 
 AT_CLEANUP
+
+AT_SETUP([ovn -- check Redirect Chassis propagation from NB to SB])
+AT_SKIP_IF([test $HAVE_PYTHON = no])
+ovn_start
+
+ovn-sbctl chassis-add gw1 geneve 127.0.0.1
+
+ovn-nbctl lr-add R1
+ovn-nbctl lrp-add R1 R1-S1 02:ac:10:01:00:01 172.16.1.1/24
+
+ovn-nbctl ls-add S1
+ovn-nbctl lsp-add S1 S1-R1
+ovn-nbctl lsp-set-type S1-R1 router
+ovn-nbctl lsp-set-addresses S1-R1 router
+ovn-nbctl --wait=sb lsp-set-options S1-R1 router-port=R1-S1
+
+ovn-nbctl lrp-set-gateway-chassis R1-S1 gw1
+
+uuid=`ovn-sbctl --columns=_uuid --bare find Port_Binding logical_port=cr-R1-S1`
+echo "CR-LRP UUID is: " $uuid
+
+ovn-nbctl lrp-set-redirect-type R1-S1 vlan
+AT_CHECK([ovn-sbctl get Port_Binding ${uuid} options:redirect-type], [0], [vlan
+])
+
+ovn-nbctl lrp-set-redirect-type R1-S1 overlay
+AT_CHECK([ovn-sbctl get Port_Binding ${uuid} options:redirect-type], [0], [overlay
+])
+
+
+AT_CLEANUP
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index ad999dd..991bee5 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -661,6 +661,14 @@ Logical router port commands:\n\
                             ('enabled' or 'disabled')\n\
   lrp-get-enabled PORT      get administrative state PORT\n\
                             ('enabled' or 'disabled')\n\
+  lrp-set-redirect-type PORT TYPE\n\
+                            set whether redirected packet to gateway chassis\n\
+                            of PORT will be encapsulated or not\n\
+                            ('overlay' or 'vlan')\n\
+  lrp-get-redirect-type PORT\n\
+                            get whether redirected packet to gateway chassis\n\
+                            of PORT will be encapsulated or not\n\
+                            ('overlay' or 'vlan')\n\
 \n\
 Route commands:\n\
   [--policy=POLICY] lr-route-add ROUTER PREFIX NEXTHOP [PORT]\n\
@@ -4591,6 +4599,52 @@ nbctl_lrp_get_enabled(struct ctl_context *ctx)
                   !lrp->enabled ||
                   *lrp->enabled ? "enabled" : "disabled");
 }
+
+/* Set the logical router port redirect type. */
+static void
+nbctl_lrp_set_redirect_type(struct ctl_context *ctx)
+{
+    const char *id = ctx->argv[1];
+    const char *type = ctx->argv[2];
+    const struct nbrec_logical_router_port *lrp = NULL;
+    struct smap lrp_options;
+
+    char *error = lrp_by_name_or_uuid(ctx, id, true, &lrp);
+    if (error) {
+        ctx->error = error;
+        return;
+    }
+
+    if (strcasecmp(type, "vlan") && strcasecmp(type, "overlay")) {
+        error = xasprintf("Invalid redirect type: %s", type);
+        ctx->error = error;
+        return;
+    }
+
+    smap_init(&lrp_options);
+    smap_add(&lrp_options, "redirect-type", type);
+
+    nbrec_logical_router_port_set_options(lrp, &lrp_options);
+    smap_destroy(&lrp_options);
+}
+
+static void
+nbctl_lrp_get_redirect_type(struct ctl_context *ctx)
+{
+    const char *id = ctx->argv[1];
+    const struct nbrec_logical_router_port *lrp = NULL;
+
+    char *error = lrp_by_name_or_uuid(ctx, id, true, &lrp);
+    if (error) {
+        ctx->error = error;
+        return;
+    }
+
+    const char *redirect_type = smap_get(&lrp->options, "redirect-type");
+    ds_put_format(&ctx->output, "%s\n",
+                  !redirect_type ? "overlay": redirect_type);
+}
+
 
 struct ipv4_route {
     int priority;
@@ -5598,6 +5652,10 @@ static const struct ctl_command_syntax nbctl_commands[] = {
       NULL, "", RW },
     { "lrp-get-enabled", 1, 1, "PORT", NULL, nbctl_lrp_get_enabled,
       NULL, "", RO },
+    { "lrp-set-redirect-type", 2, 2, "PORT TYPE", NULL,
+      nbctl_lrp_set_redirect_type, NULL, "", RW },
+    { "lrp-get-redirect-type", 1, 1, "PORT", NULL, nbctl_lrp_get_redirect_type,
+      NULL, "", RO },
 
     /* logical router route commands. */
     { "lr-route-add", 3, 4, "ROUTER PREFIX NEXTHOP [PORT]", NULL,
