Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Industrial supervisor: Niv Itzhaky, Amdocs Students: Ira Magitman & Shahar Meir Industrial project final meeting Network devices are very expansive and topology mapping is important to telecommunications companies. Enabling telecom carriers and communications service providers to maximize their networks’ resources will be cost beneficial. The goal of the project is to create a device that can automatically discover network devices using ICMP (performing Ping), SNMP (Simple Network Management Protocol) & Telnet (terminal-emulation protocol) protocols and store device information in XML files. There are 2 options for scanning: Range scanning: 1. 2. 3. IP address range IP subnet and mask IP subnet and number of mask bits (CIDR) Seed scanning. Provided a seed router or set of seed routers, the program retrieves routing related tables that contain information about other potential discoverable devices and recursively discovers neighbors. The algorithm makes an initial list of devices and Ping/SNMP/Telnet each of the devices using the list of credentials. Communication with a device is performed in a multithread application with thread pool management. Seed Scanning is done according to given restrictions, so to avoid scanning the entire subnet. We created a device that can automatically sweep a subnet and discover it’s network devices. The application is multi-threaded, platform independent and able to discover a subnet in a reasonable time. ◦ We were able to decrease the runtime from 20 seconds in average per IP to less than a second per IP in the multi-threaded implementation (when we ran it with 100 threads). ◦ We used timeout limitations for each protocol in order to avoid waiting too long when entering a wrong password or when there is no communication to the IP. The network sweep device gathers information about devices in the subnet using ICMP (Ping), SNMP and Telnet protocols. The application is provided (through input files or the GUI) with a list of SNMP passwords and a pair of username & password for Telnet communication. While executing the net sweep, these passwords are used when attempting to communicate with a network device in the subnet. The device is able to identify (partially) routers, using unique router ids, in the subnet and avoids scanning them more then once (scans only for one of the router’s IP address). The application produces an XML file for every network device it discovers, containing it’s IP address and SNMP & Telnet credentials. The application produces a log file that contains information about the program’s run and a CSV file containing communication attempts results for each protocol and for each network device. At the beginning of each run the GUI contains all the data from the input files. If “properties” file doesn’t contain a needed parameter, the GUI displays a default value. The user can alter the parameters and a validation check is performed for each parameter that appears in the GUI. When pressing the “RUN” button the program’s run is configured according to the input and all the initial data structures are prepared for the net sweep. During the program’s execution, the GUI shows real time information about the program’s progress: active tasks, waiting tasks and finished tasks. In order to support fault tolerance, the program saves the run configuration before starting the net sweep. Also, during program execution, the current state of the sweep is back-upped to a recovery file every 30 seconds. At the beginning of each run the program checks if the previous run has ended properly or crashed. If the previous run crashed, the user can choose to start a new scan or to continue the last one. In case the user chooses the recovery option, the data from the last run is restored. A program that can automatically detect network devices and store their information in an XML file. The output of the program: 1. 2. 3. 4. XML files of discovered devices containing SNMP and Telnet credentials. A report of attempted devices, discovery status (success/fail) and fail reason (in a CSV file). A log file containing the run flow details and timing. In case the run crashed, a recovery file containing the last run details. Properties Run time details Range definitions Passwords JAVA API on the internet was very helpful and convenient to use. Snmp4j library mostly works well and we were able to use SNMP protocol successfully. Achieving good performance and multi-threading isn’t easy. Thinking ahead of the multi-threading phase (we tried to minimize shared data between threads) made our lives a little better when we got there.