File Underlay/TunOut/TunOutUnderlay.ned
Contains:
import
"TunOutRouter",
"Router",
"AccessRouter",
"IPv4UnderlayConfigurator",
"BootstrapOracle";
module TunOutUnderlay
parameters:
overlayType: string,
overlayAppType: string,
backboneRouterNum: numeric,
accessRouterNum: numeric,
overlayBackboneRouterNum: numeric,
overlayAccessRouterNum: numeric,
connectivity: numeric;
submodules:
underlayConfigurator: IPv4UnderlayConfigurator;
display: "i=block/cogwheel";
backboneRouter: Router[backboneRouterNum];
display: "i=device/server2";
tunOutRouter: TunOutRouter;
display: "i=misc/globe";
accessRouter: AccessRouter[accessRouterNum];
display: "i=device/server2,gray,30";
overlayAccessRouter: OverlayAccessRouter[overlayAccessRouterNum]
parameters:
overlayType = overlayType,
overlayAppType = overlayAppType;
display: "i=device/server2,gray,30;i2=block/circle_s";
overlayBackboneRouter: OverlayRouter[overlayBackboneRouterNum]
parameters:
overlayType = overlayType,
overlayAppType = overlayAppType;
display: "i=device/server2;i2=block/circle_s";
bootstrapOracle: BootstrapOracle;
display: "i=block/control";
connections nocheck:
for i=0..backboneRouterNum - 1, j=0..backboneRouterNum - 1 do
backboneRouter[i].out++ --> fiberline --> backboneRouter[j].in++ if i < j && uniform2(0, 1, i, 1) <= connectivity;
backboneRouter[i].in++ <-- fiberline <-- backboneRouter[j].out++ if i < j && uniform2(0, 1, i, 0) <= connectivity;
endfor;
for i=0..backboneRouterNum - 1, j=0..overlayBackboneRouterNum - 1 do
backboneRouter[i].out++ --> fiberline --> overlayBackboneRouter[j].in++ if i <= j && uniform2(0, 1, i, 0) <= connectivity;
backboneRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[j].out++ if i <= j && uniform2(0, 1, i, 0) <= connectivity;
endfor;
for i=0..overlayBackboneRouterNum - 1, j=0..backboneRouterNum - 1 do
overlayBackboneRouter[i].out++ --> fiberline --> backboneRouter[j].in++ if i < j && uniform2(0, 1, i, 1) <= connectivity;
overlayBackboneRouter[i].in++ <-- fiberline <-- backboneRouter[j].out++ if i < j && uniform2(0, 1, i, 0) <= connectivity;
endfor;
for i=0..overlayBackboneRouterNum - 1, j=0..overlayBackboneRouterNum - 1 do
overlayBackboneRouter[i].out++ --> fiberline --> overlayBackboneRouter[j].in++ if i < j && uniform2(0, 1, i, 0) <= connectivity;
overlayBackboneRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[j].out++ if i < j && uniform2(0, 1, i, 0) <= connectivity;
endfor;
tunOutRouter.out++ --> fiberline --> backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, 0, 1) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
tunOutRouter.in++ <-- fiberline <-- backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, 0, 0) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
tunOutRouter.out++ --> fiberline --> overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, 0, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
tunOutRouter.in++ <-- fiberline <-- overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, 0, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
for i=0..accessRouterNum - 1 do
accessRouter[i].out++ --> fiberline --> backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 1) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
accessRouter[i].in++ <-- fiberline <-- backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
endfor;
for i=0..accessRouterNum - 1 do
accessRouter[i].out++ --> fiberline --> overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
accessRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
endfor;
for i=0..overlayAccessRouterNum - 1 do
overlayAccessRouter[i].out++ --> fiberline --> backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 1) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
overlayAccessRouter[i].in++ <-- fiberline <-- backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
endfor;
for i=0..overlayAccessRouterNum - 1 do
overlayAccessRouter[i].out++ --> fiberline --> overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
overlayAccessRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
endfor;
endmodule
network TunOutNetwork : TunOutUnderlay
endnetwork