Is anybody there? IP SLA Question

Unanswered Question

I'm trying to track the status of a LAN. Where it's working, servers attached, HSRP operating correctly.

I would like to build a probe that would just ask "is anyone on the LAN?". I know I can do PING to x.x.x.255/24 and get multiple answers. One answer would prove someone is connected and the LAN segment is working. However, IP SLA ICMP-ECHO does not allow a destination address of a broadcast address ( When a directed broadcast IP address is used ( is used, the debug ip packet detail indicates "encapsulation failure" - no MAC was returned when the address was ARP'd. Tried a static ARP entry, it said it sent it, but no responses. Ping works, but SLA ICMP-ECHO does not.

Any suggestions on how to probe a LAN and then object track it?

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 0 (0 ratings)
Joe Clarke Sat, 11/07/2009 - 23:00
User Badges:
  • Cisco Employee,
  • Hall of Fame,

    Founding Member

What version of code are you running? It would be possible to use the Embedded Event Manager with a stub object to do what you want. If this was running on a switch, you wouldn't even need to use ping. You could, for example, check the MAC table to see if there are any active MACs on a given VLAN.

Joe Clarke Mon, 11/09/2009 - 17:35
User Badges:
  • Cisco Employee,
  • Hall of Fame,

    Founding Member

No need to upgrade. EEM has been around since 12.3(4)T, and you have EEM 2.4 in your version of code, so you have a lot of power. You will still need to create a Tcl policy, though. If you upgrade to 12.4(22)T, you can do what you need with CLI alone.

Given that you're going to be doing this on a router, and if the broadcast ping works for you, run the ping command via EEM, then parse the output. If you get a response, assume there is at least one host on the LAN.

A more reliable choice is to cycle through all available LAN addresses, and send one quick ping to each:

foreach ip $ips {

set result [run_cli [list "ping ip $ip repeat 1 timeout 0"]]

if { [regexp -line {^!} $result] } {

set found_host 1





This Discussion