#### Table 1

Lightpath-Based Minimum-Cost Groupcast RWA Algorithm (MC_GCRWA)

| |
---|

Step 1
| Given a network
$G=(V,E)$
and a group of nodes
$\{{v}_{1},{v}_{2},\dots ,{v}_{k}\}$
, choose
${v}_{1}$
and compute the MCP from
${v}_{1}$
to all other nodes
$\{{v}_{2},\dots {v}_{k}\}$
. |

Step 2
| Store the routes found in Step 1 in
$\{{R}_{2}^{1},{R}_{3}^{1},\dots {R}_{k}^{1}\}$
. |

Step 3
| Repeat Steps 1 and 2 for all members of the group
$\{{v}_{1},{v}_{2},\dots ,{v}_{k}\}$
and construct the light-forest matrix:
$F=\left\{\begin{array}{cccc}{R}_{2}^{1}& {R}_{3}^{1}& \dots & {R}_{k}^{1}\\ {R}_{1}^{2}& {R}_{3}^{2}& \dots & {R}_{k}^{2}\\ \vdots & \vdots & \vdots & \vdots \\ {R}_{1}^{k}& {R}_{2}^{k}& \dots & {R}_{k-1}^{k}\end{array}\right\}\mathrm{.}$
The light-forest F consists of k light-trees, where light-tree
${T}^{j}$
is represented by the row-vector
${T}^{j}={[{R}_{1}^{j}{R}_{2}^{j}\dots {R}_{k}^{j}]}_{(k-1)\times 1}$
. Note that row-vector
${T}^{j}$
has
$(k-1)$
routes, as no loopback route is allowed. |

Step 4
| Return light-forest F to wavelength assignment function. |

Step 5
| Choose the route
$F(1,1)$
represented by the link set array
${L}_{1}=\{{l}_{1},{l}_{2},\dots {l}_{m}\}$
$(m=\mid {L}_{1}\mid )$
, and find a free wavelength
${\mathrm{\lambda}}_{j}$
,
$(1\u2a7dj\u2a7dW)$
, where W represents the total number of wavelengths per fiber in the network. |

Step 6
| Mark the wavelength
${\mathrm{\lambda}}_{j}$
chosen in Step 5 as unavailable in all links from the link set
${L}_{i}$
. |

Step 7
| Repeat Steps 5 and 6 for all elements of F or lightpaths represented by
${L}_{i}$
where
$1\u2a7di\u2a7d{(k-1)}^{2}$
. |

#### Table 2

Lightpath-Based Minimum-Cost Multicast RWA Algorithm (MC_MCRWA)

| |
---|

Step 1
| Given a network
$G=(V,E)$
and a group of nodes
$\{{v}_{1},{v}_{2},\dots ,{v}_{k}\}$
, choose
${v}_{1}$
and compute the MCP from
${v}_{1}$
to all other nodes
$\{{v}_{2},\dots {v}_{k}\}$
. |

Step 2
| Store the routes found in Step 1 in
$\{{R}_{2},{R}_{3},\dots {R}_{k}\}$
. |

Step 3
| Choose the route
$R(1)$
represented by the link set array
${L}_{1}=\{{l}_{1},{l}_{2},\dots {l}_{m}\}$
$(m=\mid {L}_{1}\mid )$
, and find a free wavelength
${\mathrm{\lambda}}_{j}$
$(1\u2a7dj\u2a7dW)$
, where W represents the total number of wavelengths per fiber in the network. |

Step 4
| Mark the
${\mathrm{\lambda}}_{j}$
chosen in Step 3 as unavailable in all links from the link set
${L}_{i}$
. |

Step 5
| Repeat Steps 3 and 4 for all elements of R or lightpaths represented by
${L}_{i}$
where
$1\u2a7di\u2a7dk-1$
. |

#### Table 3

Lightpath-Based MHP GC-RWA Algorithm (MHP_GCRWA)

| |
---|

Step 1
| Given a network
$G=(V,E)$
and a group of nodes
$\{{v}_{1},{v}_{2},\dots ,{v}_{k}\}$
, choose
${v}_{1}$
and compute shortest path from
${v}_{1}$
to all other nodes
$\{{v}_{2},\dots {v}_{k}\}$
based on hop counts. |

Step 2
| Store the routes found in Step 1 in
$\{{R}_{2}^{1},{R}_{3}^{1},\dots {R}_{k}^{1}\}$
. |

Step 3
| Repeat Steps 1 and 2 for all members of the group
$\{{v}_{1},{v}_{2},\dots ,{v}_{k}\}$
and construct the light-forest matrix:
$F=\left\{\begin{array}{cccc}{R}_{2}^{1}& {R}_{3}^{1}& \dots & {R}_{k}^{1}\\ {R}_{1}^{2}& {R}_{3}^{2}& \dots & {R}_{k}^{2}\\ \vdots & \vdots & \vdots & \vdots \\ {R}_{1}^{k}& {R}_{2}^{k}& \dots & {R}_{k-1}^{k}\end{array}\right\}\mathrm{.}$
The light-forest F consists of k light-trees, where light-tree
${T}^{j}$
is represented by the row-vector
${T}^{j}={[{R}_{1}^{j}{R}_{2}^{j}\dots {R}_{k}^{j}]}_{(k-1)\times 1}$
. Note that row-vector
${T}^{j}$
has
$(k-1)$
routes, as no loopback route is allowed. |

Step 4
| Return light-forest F to wavelength assignment function. |

Step 5
| Choose the route
$F(1,1)$
represented by the link set array
${L}_{1}=\{{l}_{1},{l}_{2},\dots {l}_{m}\}$
$(m=\mid {L}_{1}\mid )$
, and find a free wavelength
${\mathrm{\lambda}}_{j}$
$(1\u2a7dj\u2a7dW)$
, where W represents the total number of wavelengths per fiber in the network. |

Step 6
| Mark the wavelength
${\mathrm{\lambda}}_{j}$
chosen in Step 5 as unavailable in all links from the link set
${L}_{i}$
. |

Step 7
| Repeat Steps 5 and 6 for all elements of F or lightpaths represented by
${L}_{i}$
where
$1\u2a7di\u2a7d{(k-1)}^{2}$
. |

#### Table 4

Lightpath-Based Groupcast With No Wavelength Conversion: Optical Groupcast Heuristic for Monocolor Light-Trees

| |
---|

Step 1
| Given a network
$G=(V,E)$
and a list of groupcast sessions S, choose the first session
${S}_{1}=\{{v}_{1},{v}_{2},\dots ,{v}_{k}\}$
. |

Step 2
| Begin with
${v}_{1}$
and compute shortest lightpaths from
${v}_{1}$
to all nodes
$({v}_{2}\dots {v}_{k})$
based on hop counts. Construct light-tree
${T}_{1}$
with source node
${v}_{1}$
. |

Step 3
| Find a wavelength
$({\mathrm{\lambda}}_{j},1\u2a7dj\u2a7dW)$
from W wavelengths such that all lightpaths from Step 2 can be served. Mark wavelength
${\mathrm{\lambda}}_{j}$
as used along the lightpaths for light-tree
${T}_{1}$
. |

Step 4
| Repeat Steps 2 and 3 for all nodes in Session
${S}_{1}$
until all nodes are served (a total of k light-trees.) |

Step 5
| Repeat Steps 1–4 until all sessions in S are served (a total of
$\mid S\mid $
light-forests.) |

#### Table 5

Lightpath-Based Groupcast With No Wavelength Conversion: Optical Groupcast Heuristic for Multicolor Light-Trees

| |
---|

Step 1
| Given a set of groupcast sessions
${S}_{g}$
, where g is the number of sessions, construct a list
$(\Lambda )$
by decomposing each session into multiple point-to-point source–destination pairs. |

Step 2
| Choose sequentially a wavelength
$({\mathrm{\lambda}}_{j},1\u2a7dj\u2a7dW)$
and construct graph
$G=(V,E)$
to find the lightpath to serve the first session from list Λ. |

Step 3
| Mark the wavelength
${\mathrm{\lambda}}_{j}$
as used along the lightpath. If the lightpath is not found, choose the next wavelength in Step
2 and repeat Step 2 until the session is served. |

Step 4
| Repeat Step 3 for all sessions until list Λ is completed. |

#### Table 6

Lightpath-Based Groupcast With Wavelength Conversion for Rainbow Light-Trees: Optical Groupcast Heuristic for Rainbow Light-Forests

| |
---|

Step 1
| Given a network
$G=(V,E)$
and a list of groupcast sessions
${S}_{g}$
, where g is the number of sessions, construct a list Λ by decomposing each session into multiple point-to-point source–destination sessions. |

Step 2
| Compute shortest lightpath for each session in Λ. |

Step 3
| Make a link set
${L}_{m}=\{{l}_{1},{l}_{2},\dots ,{l}_{x}\}$
required in order to construct the lightpath to serve session
${\Lambda}_{i}$
. Find a wavelength
$({\mathrm{\lambda}}_{j},1\u2a7dj\u2a7dW)$
from W wavelengths for each link in
${L}_{m}$
. |

Step 4
| Mark each wavelength assigned
${L}_{m}=\{{l}_{1}^{{\mathrm{\lambda}}_{1}},\dots ,{l}_{x}^{{\mathrm{\lambda}}_{j}}\}$
for the link set
${L}_{m}$
. |

Step 5
| Repeat Steps 2–4 until all sessions in Λ are served. |

#### Table 7

Layered-Graph-Based Groupcasting for Wavelength-Continuous OXC-Based Networks: Wavelength-Optimized Optical Groupcast Heuristic

| |
---|

Step 1
| Given a network
$G=(V,E)$
and a list of groupcast sessions
${S}_{g}$
, where g is the number of sessions, construct a list Λ by decomposing each session into multiple point-to-point source–destination sessions. |

Step 2
| Compute shortest lightpath for each session in Λ and sort it based on cost or hop counts. It must be sorted in ascending or descending order. For random heuristic the sorting is done in a random fashion. |

Step 3
| Choose sequentially a wavelength
$({\mathrm{\lambda}}_{j},1\u2a7dj\u2a7dW)$
from W wavelengths and construct a new graph
${G}_{j}=(V,E)$
. Choose a session from Step 2 and compute the lightpath to serve it. Mark the wavelength
${\mathrm{\lambda}}_{j}$
as used along the lightpath. |

Step 4
| Repeat Step 3 for all sessions until Λ is completed. |

#### Table 8

Routing Algorithms to Build Groupcast Light-Forest

Step | Lightpath-Based | Light-Tree-Based |
---|

1 | Calculate all pairs of minimum cost paths (MCH) and store the paths in a table. | Calculate all pairs of minimum cost paths (MCH) and store the paths in a table. |

2 | For a groupcast call, find the shortest paths from one group participant to all other group members (set of lightpaths). Repeat the process until all group members are served (make light-forest). | For a groupcast call, find and combine the shortest paths from one group participant to all other group members (make light-tree). Repeat the process until all the group members are served (make light-forest). |

3 | Find wavelengths for each lightpath until the complete light-forest is illuminated. | Find wavelengths for each light-tree until the complete light-forest is illuminated. |

#### Table 9

Light-Tree-Based Groupcasts With No Wavelength Conversion: Cost Optimization Heuristic for Groupcast in MC-OXC Networks

| |
---|

Step 1
| Given a groupcast session list with g sessions, select the first groupcast session. |

Step 2
| For groupcast size k, generate k multicast trees using the Steiner tree MCH. |

Step 3
| Index each tree found in Step 2 in terms of source (s), destinations (d), cost (c), and wavelength (w) in the session list
${S}_{i}=\{{s}_{i},{d}_{i}^{1},{d}_{i}^{2},\dots {d}_{i}^{k},{c}_{i},{w}_{i}\}$
. |

Step 4
| Repeat Steps 2 and 3 until all of the g groupcast sessions are served. Sort the sessions in S based on destination group size or session cost (or randomly). |

Step 5
| Select the first session from list S. |

Step 6
| Choose the first wavelength
$({W}_{i})$
from the W-wavelength list and construct a graph
${G}^{\prime}$
based on the wavelength availability per link. If the wavelength is unavailable, the link is removed from the original physical graph G. |

Step 7
| Route the
${S}_{i}$
session on graph
${G}^{\prime}$
from Step 6 by using the Steiner tree MCH. If the routing is successful, assign wavelengths to the links selected during multicast tree construction and update the cost
${c}_{i}$
in the
${S}_{i}$
list. If the multicast routing fails, increment the wavelength
$({W}_{i+1})$
and go to Step 6. |

Step 8
| Repeat Steps 6 and 7 until all sessions from list
${S}_{i}$
are served. |

Step 9
| Compute the total cost of the sessions using
${S}_{\text{cost}}={\sum}_{i=1}^{i=\mid S\mid}{c}_{i}$
. |