/ByzantineRobustNetworkSimulator

Implementing Byzantine Robustness over a network layer

Primary LanguageJava

Implementation of Byzantine Robustness over a Network Layer

Implemented as a academic project, under Prof. Haibin Zhang in CMSC-626 (Principles of Computer Security)

About:

Aim to simulate a network with byzantine faults and overcome them using protocol defined in Network Layer protocols with Byzantine Robustness, Radia Perlman.

Prerequisites:

  • Java 8
  • Maven

How to simulate:

  • Compile the project using Maven and pom.xml
  • Create a folder named 'bftNetwork_lib' and copy the dependencies in this folder
  • Copy the Java archive (jar) to the parent folder of 'bftNetwork_lib'
  • Use the below command to run the simulator java -jar bftTolerantNetwork.jar

Experiments performed:

  • Manipulating network packets
  • Sending invalid Identification/Faking Neighbors (a switch 'C', faking 'A' as 'B' and 'B' as 'A')
  • Flooding invalid Public Key List
  • Flooding invalid Link States by decreasing link costs

Future Work (Phase 2):

  • Adding more faulty behaviors and testing
  • Implementing route calculation and sending Datagrams
  • Adding end-hosts as network nodes to control data packets