There are two useful, but unsupported, commands in Cisco IOS.
The first is a configuration to allow SFPs that do not pass IOS's check for Cisco SFPs.
Router(config)# service unsupported-transceiver
Router(config)# no errdisable detect cause gbic-invalid
Router(config)# errdisable recovery cause gbic-invalid
Router(config)# no errdisable detect cause sfp-config-mismatch
Router(config)# errdisable recovery cause sfp-config-mismatch
In a large environment it is worthwhile setting this even if using the manufacturer's SFPs.
The second is a command to run ttcp ("test TCP"). ttcp is also available for Unix and Windows. So you can test for TCP performance hop-by-hop through the network. ttcp is a more useful acceptance test for provisioned bandwidth and reliability for new links than ping.
Router# ttcp
transmit or receive [receive]:
perform tcp half close [n]:
receive buflen [8192]:
bufalign [16384]:
bufoffset [0]:
port [5001]:
sinkmode [y]:
rcvwndsize [0]:
ack frequency [2]:
delayed ACK [y]:
show tcp information at end [n]: y
Remember that Cisco IOS doesn't have swap. So although receive
buflen should be set to the path's bandwidth-delay product, beware
that if the TCP buffer is larger than available memory then the router
will reboot. The router's available memory can be queried with
show process memory.
By the way, ping has some use for link acceptance testing. You can use it to query the MTU of the link by setting the Don't Fragment bit. You can also fill a large packet with all zero bits and all one bits, which can uncover clocking issues.