<div>Hi, List<br><br>I'm trying to run multiple instances of XORP(v1.5) inside one Linux OS.<br><br>I have set up several virtual network interfaces using VLAN. Multiple<br>instances of XORP run on top of these virtual interfaces. <br>
<br>The problem is OSPF processes can't communicate with each other because OSPF<br>Hello multicast messages are not able to reach other virtual interfaces. <br><br>I just started to read code related to FEA. Could anyone give me a hint about <br>
this problem? <br><br>What I have done is listed below.<br><br>(1) add virtual interfaces to the system (Debian with kernel 2.6.19)<br><br>#vconfig add eth0 2<br>#vconfig add eth0 3<br><br>Network configuration is like this:<br>
<br>#ifconfig<br>eth0 Link encap:Ethernet HWaddr 00:0C:29:A6:16:EC<br> inet addr:<a href="http://193.168.0.3/" target="_blank">193.168.0.3</a> Bcast:<a href="http://193.168.0.255/" target="_blank">193.168.0.255</a> Mask:<a href="http://255.255.255.0/" target="_blank">255.255.255.0</a><br>
inet6 addr: fe80::20c:29ff:fea6:16ec/64 Scope:Link<br> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br> RX packets:116443 errors:0 dropped:0 overruns:0 frame:0<br> TX packets:87493 errors:0 dropped:0 overruns:0 carrier:0<br>
collisions:0 txqueuelen:1000<br> RX bytes:61967657 (59.0 MiB) TX bytes:53828956 (51.3 MiB)<br> Interrupt:16 Base address:0x2000<br><br>eth0.2 Link encap:Ethernet HWaddr 00:0C:29:A6:16:EC<br>
inet addr:<a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> Bcast:<a href="http://10.0.0.255/" target="_blank">10.0.0.255</a> Mask:<a href="http://255.255.255.0/" target="_blank">255.255.255.0</a><br> inet6 addr: fe80::20c:29ff:fea6:16ec/64 Scope:Link<br>
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br> RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br> TX packets:3 errors:0 dropped:0 overruns:0 carrier:0<br> collisions:0 txqueuelen:0<br>
RX bytes:0 (0.0 b) TX bytes:250 (250.0 b)<br><br>eth0.3 Link encap:Ethernet HWaddr 00:0C:29:A6:16:EC<br> inet addr:<a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> Bcast:<a href="http://10.0.1.255/" target="_blank">10.0.1.255</a> Mask:<a href="http://255.255.255.0/" target="_blank">255.255.255.0</a><br>
inet6 addr: fe80::20c:29ff:fea6:16ec/64 Scope:Link<br> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br> RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br> TX packets:3 errors:0 dropped:0 overruns:0 carrier:0<br>
collisions:0 txqueuelen:0<br> RX bytes:0 (0.0 b) TX bytes:250 (250.0 b)<br><br>lo Link encap:Local Loopback<br> inet addr:<a href="http://127.0.0.1/" target="_blank">127.0.0.1</a> Mask:<a href="http://255.0.0.0/" target="_blank">255.0.0.0</a><br>
inet6 addr: ::1/128 Scope:Host<br> UP LOOPBACK RUNNING MTU:16436 Metric:1<br> RX packets:432974 errors:0 dropped:0 overruns:0 frame:0<br> TX packets:432974 errors:0 dropped:0 overruns:0 carrier:0<br>
collisions:0 txqueuelen:0<br> RX bytes:83683923 (79.8 MiB) TX bytes:83683923 (79.8 MiB)<br><br><br>(2) configuration files for two different XORP instances.<br><br>[configuration 1]<br>interfaces {<br>
interface eth0.2 {<br> vif eth0.2 {<br> address <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> {<br> prefix-length: 24<br> }<br> }<br> }<br> interface eth0.3 {<br> vif eth0.3 {<br>
address <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> {<br> prefix-length: 24<br> }<br> }<br> }<br> interface eth0 {<br> vif eth0 {<br> address <a href="http://193.168.0.3/" target="_blank">193.168.0.3</a> {<br>
prefix-length: 24<br> }<br> }<br> }<br>}<br><br>fea {<br> unicast-forwarding4 {<br> disable: false<br> }<br>}<br><br>protocols {<br> ospf4 {<br> router-id: <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a><br>
area <a href="http://0.0.0.0/" target="_blank">0.0.0.0</a> {<br> interface eth0.2 {<br> link-type: "p2p"<br> vif eth0.2 {<br> address <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> {<br>
hello-interval: 5<br> router-dead-interval: 10<br> interface-cost: 2<br> neighbor <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> {<br> router-id: <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a><br>
}<br> }<br> }<br> }<br> }<br> }<br>}<br><br>[configuration 2]<br>interfaces {<br> interface eth0.3 {<br> vif eth0.3 {<br> address <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> {<br>
prefix-length: 24<br> }<br> }<br> }<br> interface eth0.2 {<br> vif eth0.2 {<br> address <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> {<br> prefix-length: 24<br> }<br>
}<br> }<br> interface eth0 {<br> vif eth0 {<br> address <a href="http://193.168.0.3/" target="_blank">193.168.0.3</a> {<br> prefix-length: 24<br> }<br> }<br> }<br>}<br><br>fea {<br>
unicast-forwarding4 {<br> disable: false<br> }<br>}<br><br>protocols {<br> ospf4 {<br> router-id: <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a><br> area <a href="http://0.0.0.0/" target="_blank">0.0.0.0</a> {<br>
interface eth0.3 {<br> link-type: "p2p"<br> vif eth0.3 {<br> address <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> {<br> hello-interval: 5<br> router-dead-interval: 10<br>
interface-cost: 2<br> neighbor <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> {<br> router-id: <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a><br> }<br> }<br>
}<br> }<br><br> }<br> }<br>}<br><br>(3) output of XORP instances<br>At line 1765 of $xorp/fea/data_plane/io/io_ip_socket.cc, inside functioin<br>"IoIpSocket::proto_socket_read()", I add following code to print out packet<br>
recv information.<br><br>+----------+<br> XLOG_WARNING("packet received");<br> XLOG_WARNING("ifname = %s, vifname = %s", (ifp->ifname()).c_str(), (vifp->vifname()).c_str());<br> XLOG_WARNING("src_addr = %s, dst_addr = %s", (src_address.str()).c_str(), (dst_address.str()).c_str());<br>
XLOG_WARNING("---------------------------------------");<br>+---------+<br><br>After running two XORP instances simultaneously, I got the following output.<br><br>[instance 1 on eth0.2(<a href="http://10.0.0.3/" target="_blank">10.0.0.3</a>)]<br>
[ 2008/12/06 10:19:18 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:18 WARNING xorp_fea FEA ] ifname = eth0.2, vifname = eth0.2<br>[ 2008/12/06 10:19:18 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>
[ 2008/12/06 10:19:18 WARNING xorp_fea FEA ] ---------------------------------------<br>[ 2008/12/06 10:19:22 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:22 WARNING xorp_fea FEA ] ifname = eth0.2, vifname = eth0.2<br>
[ 2008/12/06 10:19:22 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>[ 2008/12/06 10:19:22 WARNING xorp_fea FEA ] ---------------------------------------<br>
[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] ifname = eth0.3, vifname = eth0.3<br>[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>
[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] ---------------------------------------<br>[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] ifname = eth0.2, vifname = eth0.2<br>
[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] ---------------------------------------<br>
[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] ifname = eth0.3, vifname = eth0.3<br>[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>
[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] ---------------------------------------<br><br>[instance 2 on eth0.3(<a href="http://10.0.1.3/" target="_blank">10.0.1.3</a>)]<br>[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] packet received<br>
[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] ifname = eth0.3, vifname = eth0.3<br>[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>
[ 2008/12/06 10:19:23 WARNING xorp_fea FEA ] ---------------------------------------<br>[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] ifname = eth0.2, vifname = eth0.2<br>
[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>[ 2008/12/06 10:19:27 WARNING xorp_fea FEA ] ---------------------------------------<br>
[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] ifname = eth0.3, vifname = eth0.3<br>[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>
[ 2008/12/06 10:19:28 WARNING xorp_fea FEA ] ---------------------------------------<br>[ 2008/12/06 10:19:32 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:32 WARNING xorp_fea FEA ] ifname = eth0.2, vifname = eth0.2<br>
[ 2008/12/06 10:19:32 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>[ 2008/12/06 10:19:32 WARNING xorp_fea FEA ] ---------------------------------------<br>
[ 2008/12/06 10:19:33 WARNING xorp_fea FEA ] packet received<br>[ 2008/12/06 10:19:33 WARNING xorp_fea FEA ] ifname = eth0.3, vifname = eth0.3<br>[ 2008/12/06 10:19:33 WARNING xorp_fea FEA ] src_addr = <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a>, dst_addr = <a href="http://224.0.0.5/" target="_blank">224.0.0.5</a><br>
[ 2008/12/06 10:19:33 WARNING xorp_fea FEA ] ---------------------------------------<br><br><br>The status of ospf neighbor is:<br><br>[instance 1 on eth0.2]<br>admin@debian> show ospf4 neighbor<br> Address Interface State ID Pri Dead<br>
<a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> eth0.2/eth0.2 Init <a href="http://10.0.1.3/" target="_blank">10.0.1.3</a> 0 0<br><br>[instance 2 on eth0.3]<br>admin@debian> show ospf4 neighbor<br>
Address Interface State ID Pri Dead<br><a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> eth0.3/eth0.3 Init <a href="http://10.0.0.3/" target="_blank">10.0.0.3</a> 0 0<br>
<br>Based on the above output, it seems that OSPF Hello multicast message never<br>reaches the corresponding receiver sides. They are just sent back to where they<br>come from.<br><br><br>Regards,<br><font color="#888888">Jiaqing</font></div>