def METHOD_NAME(self, 
                  oports=[], 
                  uports=[], 
                  ttl_mode=None, 
                  peer_mode=None,
                  packet_loopback_action=None,
                  decap_ecn_mode=None,
                  encap_ecn_mode=None):
    """
    Create tunnel.
    Args:
        oports:  oport indexs
        uports:  oport indexs
    Returns:
        Tunnel: tunnel object
    """
    tunnel: Tunnel = Tunnel(uport_indexs=uports, 
                            oport_indexs=oports, 
                            tunnel_type = SAI_TUNNEL_TYPE_IPINIP,
                            term_type = SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P,
                            ttl_mode=ttl_mode,
                            peer_mode=peer_mode,
                            decap_ecn_mode=decap_ecn_mode,
                            encap_ecn_mode=encap_ecn_mode)
    # underlay configuration
    tunnel.uvrf.append(self.test_obj.dut.default_vrf)
    # overlay configuration
    tunnel.ovrf.append(self.test_obj.dut.default_vrf)
    tunnel.urif_lpb.append(sai_thrift_create_router_interface(
        self.client,
        type=SAI_ROUTER_INTERFACE_TYPE_LOOPBACK,
        virtual_router_id=tunnel.uvrf[0]))
    tunnel.orif_lpb.append(sai_thrift_create_router_interface(
        self.client,
        type=SAI_ROUTER_INTERFACE_TYPE_LOOPBACK,
        virtual_router_id=tunnel.ovrf[0]))
    # tunnel
    tunnel.oid = sai_thrift_create_tunnel(
        self.client,
        type=tunnel.tunnel_type,
        encap_src_ip=sai_ipaddress(tunnel.lpb_ips[0]),
        encap_ttl_val = TTL_VAL,
        encap_ttl_mode = ttl_mode,
        decap_ttl_mode = ttl_mode,
        peer_mode=peer_mode,
        loopback_packet_action=packet_loopback_action,
        underlay_interface=tunnel.urif_lpb[0],
        overlay_interface=tunnel.orif_lpb[0],
        decap_ecn_mode=decap_ecn_mode,
        encap_ecn_mode=encap_ecn_mode)
    self.test_obj.assertEqual(self.test_obj.status(),SAI_STATUS_SUCCESS)
    return tunnel