-
Notifications
You must be signed in to change notification settings - Fork 0
OSPF for NDN
License
GPL-2.0, Unknown licenses found
Licenses found
GPL-2.0
COPYING
Unknown
COPYING.LIB
Emat12/OSPFN
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
OSPFN Manual v0.1.0 Copyright (c) 2011, University of Memphis and University of Arizona. Release Date: 09/30/2011 OSPFN is a routing software package for Named Data Networking (NDN) based on Quagga. This manual covers OSPFN v0.1.0. 1. About OSPFN 2. Distribution 3. OS Support 4. Requirements 5. Installation 6. Configuration 7. Running 8. Checking OSPFN 9. OSPFN Log 10. Stopping ospfn 11. Stopping ccnd, zebra, ospfd 12. Contributors ================================== 1. About OSPFN ================================== OSPFN has been developed by the University of Memphis and the University of Arizona for supporting the paradigm shift in networking from IP to Named Data Networking (NDN). It is an adaptation of the OSPF protocol implemented using the open source routing suite Quagga. OSPFN uses OSPF's Opaque LSA capability to announce name prefixes and update the FIB of CCNx. OSPFN is in its early stage of development. Feedback and bug reports are welcome. ================================== 2. Distribution ================================== Currently OSPFN v0.1.0 is distributed by the University of Memphis and the University of Arizona. Technical questions should be directed to Cheng Yi <yic@EMAIL.ARIZONA.EDU> and A K M Mahmudul Hoque <ahoque1@memphis.edu>. Source code can be downloaded from github by running the following: $ git clone git://github.com/NDN-Routing/OSPFN.git ================================== 3. OS Support ================================== The current release was developed and tested on Ubuntu 10.04, 10.10, 11.04 and Fedora 9. Other Unix variants may also work, but have not been tested yet. ================================== 4. Requirements ================================== CCNx needs to be installed first. CCNx can be obtained from http://www.ccnx.org/software-download-information-request/download-releases/. Requirements for CCNx as well as installation instructions can be found in the README file in the CCNx package. Typical installation steps for CCNx are as follows: $ ./configure $ make $ sudo make install CCNx v0.4.0 was used for testing and development. ================================== 5. Installation ================================== Check out the OSPFN source code. You should now have a directory "OSPFN". First run configure with the following options: $ ./configure --enable-opaque-lsa --disable-ipv6 --disable-ripd --disable-ripngd --disable-ospf6d --disable-bgpd --disable-bgp-announce --sysconfdir=/usr/local/etc/quagga --localstatedir=/var/run/quagga-state Notes: (a) here we specify the quagga configuration and state file directories in configure using the --sysconfdir and --localstatedir options, respectively. We assume /usr/local/etc/quagga and /var/run/quagga-state are used. You can specify other directories. (b) the --disable options are to avoid compiling Quagga components that we do not need. Next we need to create two directories: /usr/local/etc/quagga and /var/run/quagga-state (or any directories you specified in configure). Both directories must be readable and writable by the user quagga and group quagga. $ cd /usr/local/etc/ $ sudo mkdir quagga $ sudo chown quagga:quagga quagga $ sudo chmod g+w quagga $ cd /var/run $ sudo mkdir quagga-state $ sudo chown quagga:quagga quagga-state $ sudo chmod g+w quagga-state Now we can compile and install the programs. $ cd OSPFN $ make $ sudo make install ================================== 6. Configuration ================================== 6.1 Get IP Addresses for GRE Tunnels On the NDN testbed, each site is allocated a /24 block out of 10.0.0.0/8 for setting up GRE tunnels for OSPFN traffic. Please contact Colorado State University about which /24 block your site can use. Within each site, you can allocate addresses from your site /24 block to multiple tunnels or multiple OSPFN nodes as you wish. 6.2 Set Up GRE Tunnels If two OSPFN routers are not physically connected, a GRE tunnel between the routers is needed. Note that you need to make sure your firewall allows GRE traffic to pass through. We use the following topology to show how to set up a GRE tunnel between netlogic.cs.memphis.edu and hobo.cs.arizona.edu. Netlogic's public IP is 141.225.11.150 and private tunnel IP is 10.0.1.10. Hobo's public IP is 150.135.82.77 and private tunnel IP is 10.0.1.9. Public IP: 141.225.11.150 Public IP:150.135.82.77 ________________________ 10.0.1.10 10.0.1.9 ___________________ |netlogic.cs.memphis.edu |___________________|hobo.cs.arizona.edu| ------------------------ ------------------- 6.2.1 GRE Tunnel Configuration in Ubuntu Install the GRE module: $ sudo modprobe ip_gre Add the following to /etc/network/interfaces on netlogic.cs.memphis.edu: auto netlogictohobo netlogictohobo inet static address 10.0.1.10 netmask 255.255.255.252 pre-up iptunnel add netlogictohobo mode gre local 141.225.11.150 remote 150.135.82.77 ttl 255 pointopoint 10.0.1.9 up ifconfig netlogictohobo multicast Note that "netlogictohobo" is the name that you give to the tunnel interface. Similary, add the following to the /etc/network/interfaces file on hobo.cs.arizona.edu: auto hobotonetlogic iface hobotonetlogic inet static address 10.0.1.9 netmask 255.255.255.252 pre-up iptunnel add hobotonetlogic mode gre local 150.135.82.77 remote 141.225.11.150 ttl 255 pointopoint 10.0.1.10 up ifconfig hobotonetlogic multicast Restart networking: $ sudo /etc/init.d/networking restart The command "ifconfig -a" should list the new tunnel interface. If the GRE tunnel is set up correctly, pinging the other end's private IP should work. 6.2.2 GRE tunnel configuration in Fedora On netlogic.cs.memphis.edu: Create a file /etc/sysconfig/networking/devices/ifcfg-netlogictohobo, with content: DEVICE=netlogictohobo TYPE=GRE ONBOOT=yes MY_INNER_IPADDR=10.0.1.10 MY_OUTER_IPADDR=141.225.11.150 PEER_INNER_IPADDR=10.0.1.9/30 PEER_OUTER_IPADDR=150.135.82.77 BOOTPROTO=none TTL=64 Create hard links /etc/sysconfig/network-scripts/ifcfg-netlogictohobo and /etc/sysconfig/networking/profiles/default/ifcfg-netlogictohobo to /etc/sysconfig/networking/devices/ifcfg-netlogictohobo Bring up the interface: $ sudo ifup netlogictohobo Similar configurations should be created on hobo.cs.arizona.edu. The command "ifconfig -a" should list the new tunnel interface. If the GRE tunnel is set up correctly, pinging the other end's private IP should work. 6.3 Quagga Configuration The OSPFN source code includes the Quagga 0.99.17 code, so no separate installation of Quagga is needed, but you do need configure it. Instructions are available at http://www.quagga.net/docs.php. By default, the Quagga configuration file ospfd.conf is located at /usr/local/etc/, but we have specified our own directory /usr/local/etc/quagga. The user should copy ospfd.conf.sample to ospfd.conf in the same directory and modify the ospfd.conf file as necessary. Same for zebra.conf. A sample configuration file (ospfd.conf) for Quagga OSPF would look like below for netlogic.cs.memphis.edu: ! ! OSPF configuration saved from vty ! 2011/09/07 14:12:35 ! hostname netlogic.cs.memphis.edu password pwd enable password pwd log file /var/log/quagga/ospfd.log ! ! ! interface netlogictohobo description link to hobo.cs.arizona.edu ! access-list ospfn permit 10.0.0.0/8 access-list ospfn deny any ! router ospf ospf router-id 141.225.11.150 redistribute connected distribute-list ospfn out connected network 10.0.1.8/30 area 0.0.0.0 capability opaque ! line vty ! !end of configuration file here -------------------------------- Notes: 1. We are using the "redistribute connected" command to make the OSPF router an ASBR, so that we can retrieve the next hops to other routers from OSPFd. This is a temporary work-around until we find a better solution. To prevent potential looping caused by the "redistribute connected" command, we are filtering out any prefixes that do not belong to the NDN testbed using the "access-list" commands, which only permit routes to 10.0.0.0/8 networks to be advertised. 2. Router id: we are using the public IP of each router as its router ID to ensure uniqueness across the whole network. 3. The log directory (/var/log/quagga in the example) must be readable and writable by user quagga and group quagga. 6.4 OSPFN Configuration By default, OSPFN looks for the configuration file ospfn.conf in the local directory. Users can also supply a configuration file name when starting OSPFN. Configuration commands are entered one command per line into the configuration file. Currently OSPFN supports two commands, ccnname and logdir. The ccnname command specifies name prefixes (in URI format) advertised by the router. The logdir command specifies a directory to write log files to. 1. ccnname name_prefix op_id name_prefix : a name prefix, in URI format, to be advertised by this router. op_id : the desired ID for this name LSA. The op_id must be unique among the name prefixes advertised by the same router. 2. logdir dir dir : directory to write log files to A sample configuration file may contain the following commands: ccnname /ndn/memphis.edu/netlab/ 1 ccnname /ndn/memphis.edu/cs/ 2 logdir /var/log/ospfnlog/ Note that the log directory must be readable and writable by the user that runs ospfn. ================================== 7. Running OSPFN ================================== First start zebra so that ospfd can acquire needed interface information. Next start ospfd and ccnd, and then start ospfn. The commands needed are shown below: $ sudo zebra -d $ sudo ospfd -d -a $ ccndstart $ ospfn ospfn can also take several command-line options: -f/F file_name: specify the configuration file. (if this option is not included, OSPFN will look for the default file named ospfn.conf in the current directory) -d: OSPFN will run in daemon mode. -h: OSPFN will print out the usage information for ospfn running options -n: OSPFN will not write log information ================================== 8. Checking OSPFN ================================== One can check whether OSPFN is working correctly by checking the FIB entries of the nodes in the network. For example, assume netlogic.cs.memphis.edu and hobo.cs.arizona.edu are running OSPFN: Netlogic declares the following name prefixes in its configuration file: ccnname /ndn/memphis.edu/netlab/netlogic 1 ccnname /ndn/memphis.edu/netlab/ospfn 2 Hobo declares the following name prefixes in its configuration file: ccnname /ndn/arizona.edu/hobo/name1 1 ccnname /ndn/arizona.edu/hobo/name2 2 If OSPFN is running successfully, Netlogic's advertised name prefixes located in its configuration file should be found in Hobo's FIB. Likewise, Hobo's advertised name prefixes should be found in Netlogic's FIB. Each FIB can be checked in a browser at http://<DNS name or address>:9695 (eg: http://netlogic.cs.memphis.edu:9695) or http://localhost:9695. A node's OSPFd routing table can also be checked to see if it has correct routes to all other router's address prefixes: (1) connect to ospfd by typing the following command in terminal: $ telnet localhost ospfd (2) provide password configured in ospfd.conf (3) type the following command: $show ip ospf route ================================== 9. OSPFN Log ================================== OSPFN creates a detailed log for every run of OSPFN in the directory configured by the ospfn configuration file. Log file names are of the format yyyymmddhhmmss.log. If the "logdir" command is not specified in the configuration file, OSPFN will by default create a directory named ospfnLog in the user's home directory and write the log files there. ================================== 10. Stopping ospfn ================================== For stopping ospfn type ospfnstop in terminal. $ospfnstop ospfnstop will take a while to get response from ospfn and delete all the fib entries by ospfn. After deleting the fib entries ospfn will stop and ospfnstop will exit itself. A precautious measure is to always restart all 4 daemons: zebra, ospfd, ccnd, ospfn. ================================== 11. Stopping ccnd, zebra, ospfd ================================== Stopping ccnd: stop ccnd by typping into terminal $ccndstop Stopping zebra: Kill zebra process by finding its process id, One can find process id by typing into terminal $ ps -eaf | grep zebra Then you will find result like below quagga 2786 1 0 Oct09 ? 00:00:00 zebra -d After that type into terminal $kill 2786 Stopping ospfd: Kill zebra process by finding its process id, One can find process id by typing into terminal $ ps -eaf | grep ospfd Then you will find result like below quagga 2788 1 0 Oct09 ? 00:00:00 ospfd -d -a After that type into terminal $kill 2788 Stopping ccnd: Run ccndstop from terminal to stop ccnd $ccndstop ================================== 12. Contributors ================================== Implementation and Testing: Cheng Yi (U. Arizona), A K M Mahmudul Hoque (U. Memphis), Yaoqing Liu (U. Memphis), Gus Sanders III (U. Memphis) Advising: Lan Wang (U. Memphis), Beichuan Zhang (U. Arizona).
About
OSPF for NDN
Resources
License
GPL-2.0, Unknown licenses found
Licenses found
GPL-2.0
COPYING
Unknown
COPYING.LIB
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published