Loop occurs in case if after sending a call to supplier, we get the same call coming from our customer.
If after this we continue forwarding a call to some supplier - we will close the loop.
If nobody from the loop chain has loop detection activated - the same call could be looped many times.
Usually, due to billing settings, when someone from the loop chain performs routing not by least cost.
This could be either misconfiguration, or intentional setting - for example, routing some destination codes with negative profit by someone from the loop chain.
Example 1.
We get a call from customer А and forward it to supplier B.
Then we get this call again from customer B and forward it to supplier C (for example, due to random routing).
Supplier C delivers a call to end user.
In this case we and customer B will see the same call twice inside active calls.
Example 2.
We get a call from customer А and forward it to supplier B.
Then we get the same call from customer С and forward it to supplier Б.
Supplier B delivers call to end user.
In this case we and supplier B will see the same call twice inside active calls.
Example 3.
We get a call from customer А and forward it to supplier B.
Then we get the same call from customer С and forward to to supplier B.
Supplier B delivers call to end user.
In this case we will see the same call twice inside active calls.
Yes.
Due to dynamic routing, which someone from loop chain might perform, the call could be finally routed to end user.
This option could be set either individually per each peer/company, or for call peers/companies globally.