'loopback' 1.1.2
- Enhancements to Loopback's Built-In Updating Loopback's updating code has been overhauled and improved. It is now based on Sparkle 1.26.0, with several customizations. To avoid possible issues, Loopback will no longer offer to “Install on Quit”. Automatic background updating has been removed as well, placing the user in charge of all updates.
- Understanding the Loopback Interface. The Internet Protocol (IP) specifies a loopback network with the (IPv4) address 127.0.0.0/8. Most IP implementations support a loopback interface ( lo0) to represent the loopback facility. Any traffic that a computer program sends on the loopback network is addressed to the same computer.
So you’ve been receiving errors on your Juniper router, and asked your local provider to drop a loop on the cable facing your box at some point in the cable run in order to divide and conquer. Now what. We probably want to generate some traffic to determine if any of the equipment involved in the loop is responsible for that pesky CRC you’re trying to find.
We would like to show you a description here but the site won’t allow us.
You can follow the steps outlined here to generate some traffic.
https://www.juniper.net/techpubs/en_US/junos12.3/topics/topic-map/ethernet-fast-and-gigabit-loopback-testing.html
I modified this somewhat in that I created a routing-instance type virtual router, placed my interface in that routing-instance and performed the tests noted above so that you’re not mucking about in the default routing-table should you mess something up with your IP allocation, etc.
user@Juniper> show configuration routing-instances LINKTEST
instance-type virtual-router;
interface xe-2/1/3.0;
user@Juniper> show configuration interfaces xe-2/1/3
description “Test Interface”;
unit 0 {
family inet {
address 1.1.1.1/30 {
/* this must be the MAC address of your local interface so you’ll accept the traffic */
arp 1.1.1.2 mac 2c:6b:f5:77:66:88;
}
}
}
user@Juniper> ping 1.1.1.2 source 1.1.1.1 routing-instance LINKTEST size 65000 count 200 rapid
In practice – this command netted about 67Mbps of traffic dropped onto the link, looping about until the TTL expired. By using rapid – you’re forcing the ping to continuously send traffic before the previous request has expired, effectively doubling the amount of data on the link. Increasing your ping size, obviously results in a larger amount of data being dropped on the link per ping.
Since this wasn’t quite enough traffic – a suggestion (not mine) was to drop into the shell and queue up a bunch of jobs to do the same thing. I thought it was a great idea – and now I’m sharing it with you.
user@Juniper> start shell
% ping
usage: ping [-ACNQRSXadfnqrvw] [-c count] [-i wait] [-g loose-gateway]
[-l preload] [-p pattern] [-s packetsize] [-t tos]
[-F source] [-G strict-gateway] [-I interface]
[-Ji|r|4|6|I interface|U routing-instance|L logical-router]
[-T ttl] host
'loopback' 1.1.2 Design
% % ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null &
etc…
% jobs
[1] + Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[2] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[3] Exit 2 ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[4] Exit 2 ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[5] Exit 2 ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[6] Exit 2 ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[7] Exit 2 ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[8] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[9] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[10] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[11] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[12] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[13] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[14] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[15] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[16] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[17] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[18] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[19] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[20] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[21] Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
[22] – Running ping -Jr -c 500 -s 65000 -F 1.1.1.1 -JU LINKTEST 1.1.1.2 > /dev/null
Now, if you execute the above command 25 times, I found this generates about 850Mbps of traffic. You probably want to be a bit careful creeping much past this if you want to push bits for a long amount of time as this traffic is generated from the internal em0.0 interface connection to the routers backplane and saturating the routing-engine/backplane connection on a production router is probably not a great idea for all your routing protocols and such.
user@Juniper> show interfaces em0 | match Speed
Type: Ethernet, Link-level type: Ethernet, MTU: 1514, Speed: 1000mbps
NAME¶
hssi_loopback - Software utility to run HSSI loopback tests on FPGA
SYNOPSIS¶
hssi_loopback[[--bus|-b<busnumber>][--device|-d<devicenumber>][--function|-f<functionnumber>]]|[--socket-id<socket-id>][--mode|-mauto|e40|e10][send[<sourceport>[<destinationport>][--packet-count|-c<count>][--packet-delay|-d<delay>][--packet-length|-l<length>]]|status[clear]|stop|readmacs
DESCRIPTION¶
The hssi_loopback
utility works in conjunction with a packetgenerator accelerator function unit (AFU) to test high-speed serialinterface (HSSI) cards. The hssi_loopback
utility tests bothexternal and internal loopbacks. hssi_loopback
runs an externalloopback test when the command line arguments include both source anddestination ports. hssi_loopback
runs an internal loopback test whencommand line arguments include a single port. hssi_loopback
onlyruns on the Intel Xeon with Arria 10 FPGA. You cannot run it on theIntel PAC (programmable accelerator card).
NOTE: The following limitations apply to the current version ofhssi_loopback:
- For the external loopback the two port arguments can be the same. Forthe e10 design, the ports should be the same.
- The
hssi_loopback
test supports only the e40 and e10 E2E AFUs.The e10 E2E AFU tests HSSI with a retimer card. - The
hssi_loopback
test uses the control and status registers(CSRs) defined in the AFU.
OPTIONS¶
-SSOCKET_ID,--socket-idSOCKET_ID
Socket ID FPGA resource.
-BBUS,--busBUS
Bus ID of FPGA resource.
-DDEVICE,--deviceDEVICE
Device ID of FPGA resource.
-FFUNCTION,--functionFUNCTION
'loopback' 1.1.2 Full
Function ID of FPGA resource.
-G,--guid
Specifies guid for the AFC enumeration.
-m,--mode
One of the following: [auto
, e40
, e10
] auto
is thedefault and indicates that the software runs the mode based on the firstaccelerator functional context (AFC) it enumerates.
-t,--timeout
Timeout (in seconds) before the application terminates in continuousmode. Continuous mode is the default when you do not specify the numberof packets.
-y,--delay
Delay (in seconds) between printing out a simple status line. Default is0.100 seconds (100 milliseconds).
-c,--packet-count
The number of packets to send.
-d,--packet-delay
The delay in between packets. This delay is the number of 100 MHz clockcycles, roughly 10 nanoseconds.
-s,--packet-size
The packet size to send. The minimum is 46 bytes and the maximum is 1500bytes. The default is 46 bytes.
COMMANDS¶
send<sourceport>[<destinationport>][--packet-count|-c<count>][--packet-delay|-d<delay>][--packet-length|-l<length>]
Send packets from one port to the other. If the command line does notspecify a destination port, the test runs an internal loopback.Otherwise, the test runs an external loopback from the source port tothe destination port.
status[clear]
Read and interpret the status registers and print to the screen.clear
clears the status registers.
stop
Issue a stop command to all Ethernet controllers in the AFU.
readmacs
Read and display the port MAC addresses. An EEPROM stores the MACaddresses.
EXIT CODES¶
0 Success - Number of packets received are equal to the number ofpackets sent and no errors are reported.
-1 Loopback failure - Either number of packets does not match or thetest detected errors.
-2 Errors parsing arguments.
EXAMPLES¶
Read the MAC addresses of the AFU loaded on bus 0x5e:
Run an external loopback, sending 100 packets from port 0 to port 1. TheAFU is on bus 0x5e:
Run an internal loopback until a timeout of 5 seconds is reached. TheAFU is on bus 0x5e:
Revision History¶
Document Version | Intel Acceleration Stack Version | Changes |
---|---|---|
2018.10.15 | 1.2. (Supported with Intel QuartusPrime Pro Edition 17.1.1.) | No changesfrompreviousrelease. |
2018.05.21 | 1.1 Beta. (Supported with IntelQuartus Prime Pro Edition 17.1.) | Correctedtypos. |