add protocol to replace interface