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