Repeating knots is the usual approach. If you repeat control vertices, you'll get a curve that has zero derivative vectors of several orders at the end-points, which will cause problems. It will make it difficult to calculate tangent vectors, normal vectors, curvature, torsion, and so on, for example. Even having a zero first derivative is bad news.
It looks like your set of endpoints and control points can be
any set of points in the plane.
This means that the $order$ of the points
is critical,
so that the generated curve goes through the points
in a specified order.
This is much different than the ordinary interpolation problem,
where the points
of the form $(x_i, y_i)$
are ordered so that
$x_i < x_{i+1}$.
As I read your desire,
if you gave a set of points on a circle
ordered by the angle of the line
from the center to each point,
you would want the result to be
a curve close to the circle.
There are a number of ways this could be done.
I will assume that
you have $n+1$ points
and your points are $(x_i, y_i)_{i=0}^n$.
The first way I would do this
is to separately parameterize the curve
by arc length,
with $d_i = \sqrt{(x_i-x_{i-1})^2+(y_i-y_{i-1})^2}$
for $i=1$ to $n$,
so $d_i$ is the distance from
the $i-1$-th point to the
$i$-th point.
For a linear fit,
for each $i$ from $1$ to $n$,
let $t$ go from
$0$ to $d_i$
and construct separate curves
$X_i(t)$ and $Y_i(t)$
such that
$X_i(0) = x_{i-1}$,
$X_i(d_i) = x_i$,
and
$Y_i(0) = y_{i-1}$,
$Y_i(d_i) = y_i$.
Then piece these together.
For a smoother fit,
do a spline curve
through each of
$(T_i, x_i)$
and
$(T_i, y_i)$
for $i=0$ to $n$,
where
$T_0 = 0$
and
$T_i = T_{i-1}+d_i$.
To get a point for any $t$ from
$0$ to $T_n$,
find the $i$ such that
$T_{i-1} \le t \le T_i$
and then,
using the spline fits
for $x$ and $y$
(instead of the linear fit),
get the $x$ and $y$ values from their fits.
Note that
$T_i$ is the cumulative length
from $(x_0, y_0)$
to $(x_i, y_i)$,
and $T_n$ is the total length of the line segments
joining the consecutive points.
To keep the curves from
not getting too wild,
you might look up "splines under tension".
Until you get more precise,
this is as far as I can go.
Best Answer
I'll describe the case of cubic curves. The general case is not really any more difficult, but it's a bit harder to describe.
One approach:
If you know the equations of all the polynomial segments, then you can check the continuity of derivatives at each junction, and this will tell you how to construct the knot sequence for the b-spline. If you're constructing a cubic curve, then, where two segments join with $C_2$ continuity, you put a knot of multiplicity 1, where the junction is only $C_1$, you place a knot of multiplicity 2, and so on. You also place a knot of multiplicity 4 at each end. Suppose that this process gives you a knot sequence with $r$ entries. Then you know that the b-spline curve will have $r-4$ control points. So, compute $r-4$ points on the curve, and compute the b-spline curve that interpolates these points. This requires that you set up a linear system of equations, and solve for the control points. You have to be careful where you put the interpolation points, or you'll get a linear system that's not solvable. You have to satisfy the so-called Schoenberg-Whitney condition.
Another approach:
There are things called deBoor-Fix functionals, or "dual functionals" that provide explicit formulae for control points, in terms of derivatives of the polynomial pieces. In this approach, the concepts and the mathematics are far more complex, but, if you can work through all the complexity, you'll eventually get some very simple formulae (in the cubic case, anyway). Computationally, this approach is much more efficient than the interpolation technique described in approach #1.
There is an illustration of both techniques in this answer, for the case of a cubic spline that's $C_1$ at every knot.
Both methods (and the relationship between them) are described in Carl deBoor's book entitled "A Practical Guide to Splines". The book includes code, too.