Commit 6364a471 authored by Pedro Oliveira's avatar Pedro Oliveira

Update Readme to list all Test branches

parent fad005f6
...@@ -8,7 +8,7 @@ This repository stores the implementation of this protocol. The implementation i ...@@ -8,7 +8,7 @@ This repository stores the implementation of this protocol. The implementation i
- Linux machine - Linux machine
- Python3 (we have written all code to be compatible with at least Python v3.2) - Python3 (we have written all code to be compatible with at least Python v3.2)
- pip (to install all dependencies) - pip (to install all dependencies)
# Installation # Installation
...@@ -29,62 +29,116 @@ To interact with the protocol you need to execute the `pim-dm` command. You may ...@@ -29,62 +29,116 @@ To interact with the protocol you need to execute the `pim-dm` command. You may
`pim-dm -COMMAND ARGUMENTS` `pim-dm -COMMAND ARGUMENTS`
In order to determine which commands are available you can call the help command:
#### Start protocol process
`pim-dm -h`
or
`pim-dm --help`
In order to start the protocol you first need to explicitly start it. This will start a daemon process, which will be running in the background. The command is the following: In order to start the protocol you first need to explicitly start it. This will start a daemon process, which will be running in the background. The command is the following:
```
`sudo pim-dm -start` sudo pim-dm -start
```
#### Add interface
After starting the protocol process you can enable the protocol in specific interfaces. You need to specify which interfaces will have IGMP enabled and which interfaces will have PIM-DM enabled.
- To enable PIM-DM without State-Refresh, in a given interface, you need to run the following command:
```
sudo pim-dm -ai INTERFACE_NAME
```
Then you can enable the protocol in specific interfaces. You need to specify which interfaces will have IGMP enabled and which interfaces will have the PIM-DM enabled. - To enable PIM-DM with State-Refresh, in a given interface, you need to run the following command:
To enable PIM-DM, without State-Refresh, in a given interface, you need to run the following command:
`sudo pim-dm -ai INTERFACE_NAME` ```
sudo pim-dm -aisf INTERFACE_NAME
```
To enable PIM-DM, with State-Refresh, in a given interface, you need to run the following command: - To enable IGMP in a given interface, you need to run the following command:
`sudo pim-dm -aisf INTERFACE_NAME` ```
sudo pim-dm -aiigmp INTERFACE_NAME
```
To enable IGMP in a given interface, you need to run the following command: If you have previously enabled PIM-DM on an interface without State-Refresh and want to enable it, you first need to disable this interface, and then run the command -aisr. The same happens when you want to disable State Refresh in a previously enabled StateRefresh interface.
`sudo pim-dm -aiigmp INTERFACE_NAME`
If you have previously enabled an interface without State-Refresh and want to enable it, in the same interface, you first need to disable this interface, and the run the command -aisr. The same happens when you want to disable State Refresh in a previously enabled StateRefresh interface. #### Remove interface
To remove a previously added interface, you need run the following commands: To remove a previously added interface, you need run the following commands:
To remove a previously added PIM-DM interface:
`sudo pim-dm -ri INTERFACE_NAME`
To remove a previously added IGMP interface: - To remove a previously added PIM-DM interface:
`sudo pim-dm -riigmp INTERFACE_NAME` ```
sudo pim-dm -ri INTERFACE_NAME
```
- To remove a previously added IGMP interface:
```
sudo pim-dm -riigmp INTERFACE_NAME
```
#### Stop protocol process
If you want to stop the protocol process, and stop the daemon process, you need to explicitly run this command: If you want to stop the protocol process, and stop the daemon process, you need to explicitly run this command:
`sudo pim-dm -stop` ```
sudo pim-dm -stop
```
## Commands for monitoring the protocol process ## Commands for monitoring the protocol process
We have built some list commands that can be used to check the "internals" of the implementation. We have built some list commands that can be used to check the "internals" of the implementation.
- List neighbors: - #### List neighbors
Verify neighbors that have established a neighborhood relationship Verify neighbors that have established a neighborhood relationship.
`sudo pim-dm -ln`
- List state: ```
sudo pim-dm -ln
```
- #### List state
List all state machines and corresponding state of all trees that are being monitored. Also list IGMP state for each group being monitored. List all state machines and corresponding state of all trees that are being monitored. Also list IGMP state for each group being monitored.
`sudo pim-dm -ls`
- Multicast Routing Table: ```
List Linux Multicast Routing Table (equivalent to ip mroute -show) sudo pim-dm -ls
`sudo pim-dm -mr` ```
- #### Multicast Routing Table
List Linux Multicast Routing Table (equivalent to `ip mroute -show`)
```
sudo pim-dm -mr
```
## Help command
In order to determine which commands and corresponding arguments are available you can call the help command:
```
pim-dm -h
```
or
```
pim-dm --help
```
## Change settings ## Change settings
Files tree/globals.py and igmp/igmp_globals.py store all timer values and some configurations regarding IGMP and the PIM-DM. If you want to tune the implementation, you can change the values of these files. These configurations are used by all interfaces, meaning that there is no tuning per interface. Files tree/globals.py and igmp/igmp_globals.py store all timer values and some configurations regarding IGMP and the PIM-DM. If you want to tune the implementation, you can change the values of these files. These configurations are used by all interfaces, meaning that there is no tuning per interface.
## Tests
We have performed tests to our PIM-DM implementation. You can check on the corresponding branches:
- [Test_PIM_Hello](https://github.com/pedrofran12/pim_dm/tree/Test_PIM_Hello) - Topology used to test the establishment of adjacency between routers.
- [Test_PIM_BroadcastTree](https://github.com/pedrofran12/pim_dm/tree/Test_PIM_BroadcastTree) - Topology used to test our implementation regarding the creation and maintenance of the broadcast tree.
- [Test_PIM_Assert](https://github.com/pedrofran12/pim_dm/tree/Test_PIM_Assert) - Topology used to test the election of the AssertWinner.
- [Test_PIM_Join_Prune_Graft](https://github.com/pedrofran12/pim_dm/tree/Test_PIM_Join_Prune_Graft) - Topology used to test the Pruning and Grafting of the multicast distribution tree.
- [Test_PIM_StateRefresh](https://github.com/pedrofran12/pim_dm/tree/Test_PIM_StateRefresh) - Topology used to test PIM-DM State Refresh.
- [Test_IGMP](https://github.com/pedrofran12/hpim_dm/tree/Test_IGMP) - Topology used to test our IGMPv2 implementation.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment