'loopback' 1.1.2

  1. 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.
  2. 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.

loopback

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

loopback

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.

loopback

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

loopback

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 VersionIntel Acceleration Stack VersionChanges
2018.10.151.2. (Supported with Intel QuartusPrime Pro Edition 17.1.1.)No changesfrompreviousrelease.
2018.05.211.1 Beta. (Supported with IntelQuartus Prime Pro Edition 17.1.)Correctedtypos.