| Algorithm 1. Automatic protocol adaptation. |
|
Input: unknown packet: packet Output: matched protocol stack: ps Initialize: PS={ps1,ps2,…,psi,…,pss} //existing protocols stacks PC={layer1,layer2,…,layeri,…,layerl} //protocol container Layer = {pi1,pi2,…,pij,…,pip} //deployed protocol in layer i |
| SendToBus(packet); //send packet to protocol bus for all protocol stack ps ∈ PS do if (psi.PsAnalyze(packet)==1){Return psi;} end for Ps ps=new PS(); for all protocol p ∈ layer1 do boolean b=TryAnalyze(packet,ps,p,layer1); if (b==false){Return Null;} Return ps; end for Procedure TryAnalyze(packet,ps,p,layer) //p is located in layer payload =p.Analyze(packet); If (payload==0){ ps.push(p); Return true;} layeri = layer.next(); If (layeri == null){Return false;} For all protocol pi ∈ layeri do boolean b = TryAnalyze(payload,ps,pi,layeri); if (b == true){ ps.push(p);} Return b; end for Procedure End |