Welcome to weblogs.com.pk Sign in | Join | Help

Masood Ahmad Shah

This blog contains a summary of my research readings and thoughts in system and network engineering. View Masood Shah's profile on LinkedIn

Syndication

News


SDN Controllers Comparison with hands on labs

Author: Masood Ahmad Shah (Charles Sturt University)

Objective

SDN1 Controllers are the brain and decision maker in the SDN-based network infrastructure. A controller consist of a set of application components to act as an essential control point in the network infrastructure and make decisions to programs the forwarding behavior for the packets passing through routers/switches.There are a number of SDN controllers exist, and are still being developed and used at an ever-increasing pace and have the potential of being used for next generation networks.

The objective of this document is to provide a basis and rationale to indicate differences in between different controllers, by comparing how user-friendly they are and what sort of features they offer. In addition to that implement a SDN based network infrastructure by using at least two different SDN controllers and do a flow walk from switch to controller and vice versa.

Part (a) SDN controllers

As stated earlier a SDN controller is a control center of the SDN based network, talking with switches through south-bound link to program packet forwarding instructions and communicate with applications on it’s north-bound side. There are multiple SDN controllers available and they differ from each other in various aspects. In this section, we will compare the following four controllers from the perspective of feature set, integration, applicability and easiness of use.

  1. OpenDaylight
  2. Open Network Operating System (ONOS)
  3. Ryu
  4. Trema

1Software Defined Network

I’m summarising the comparison of above four controllers by looking at features, capability, applicability and supported networks. The following diagram shows the different characteristics that I would use for comparative analysis: 

The value of a SDN controller characteristics arises from the fact of its applicability, features set and easiness of use a controller support. For example, a controller must have features such as Neutron plugins, and port and flow configurability if a controller has to support openStack-based virtualization of a network.

On top of that, applications also require the services they want from the network. For example, an application that is very delay sensitive would expect from controller to provide an end-to-end path with minimum delay and jitter.

Let’s look at different aspects of multiple controllers, the result of the comparison is shown below in a tabular format. As a results, none of the controllers seem to be optimal but OpenDaylight looks more suitable for the majority of the use case and requirements. 

In summary the controller is selected by matching the requirements of a network. OpenDaylight is a clear winner based on the above comparison and could be one of the reasons for its his popularity among vendors. Ryu and ONOS have a similar number of use case supports, where Ryu having support for two important use cases: packets service insertion and chaining. Similarly, Trema has similar uses case supports but poor in supporting a whole bunch of features set.

Part (b) Hands on experience with SDN Controllers

The purpose of this section is to set up a SDN LAB and walkthrough how OpenFlow would work in a production SDN deployment.

OpenDaylight + Mininet

Software platform to build lab

  • Linux (Core operating system to run Virtual machines for OpenDaylight and Mininet)
  • OpenDaylight (SDN Controller)
  • Mininet (to create a realistic large scale virtual network running actual kernel, switch and software application code)

Step 1: Installation OpenDaylight and Mininet

OpenDaylight was installed by following a pretty straightforward process[2] that is well documented on OpenDaylight at wikihttps://wiki.opendaylight.org/view/Install_On_Ubuntu_14.04 

In a similar manner, Mininet pre-built VM image was downloaded/installed by following the Mininet documentation https://github.com/mininet/mininet/wiki/Mininet-VM-Images. Once installed then ssh to the VM instance listening on port 8022:

Step 2: Building network

A network was build using tree topology with Open vSwitch switches with the control of OpenDaylight as SDN controller making use of OpenFlow13 to talk to south bound switches. The following command is used:

sudo mn --topo tree,4 --mac --controller=remote,ip=100.102.132.52,port=6633 --switch ovs,protocols=OpenFlow13

And as a results, the following screenshot confirms I entered into Mininet’s CLI that allows to control, and manage the entire virtual network from a single console. For example, the CLI command:

Step 3: Controller communication with the switches

At the same time while tailing logs on the OpenDaylight controller I observed that all of the seven Open vSwitches can talk to controller that we set up during the creation of network via --controller=remote,ip=100.102.132.52,port=6633. Logs from the controller confirming that switches managed to establish a TCP connection:

2016-10-17 18:29:37,135 | INFO | ntLoopGroup-5-14 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:3], role:BECOMEMASTER

2016-10-17 18:29:37,172 | INFO | ntLoopGroup-5-14 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:3], role:BECOMEMASTER

2016-10-17 18:29:32,863 | INFO | entLoopGroup-5-9 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:1], role:BECOMEMASTER

2016-10-17 18:29:33,000 | INFO | entLoopGroup-5-9 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:1], role:BECOMEMASTER

2016-10-17 18:29:33,157 | INFO | ntLoopGroup-5-10 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:7], role:BECOMEMASTER

2016-10-17 18:29:33,159 | INFO | ntLoopGroup-5-10 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:7], role:BECOMEMASTER

2016-10-17 18:29:35,066 | INFO | ntLoopGroup-5-12 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:2], role:BECOMEMASTER

2016-10-17 18:29:35,190 | INFO | ntLoopGroup-5-12 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:2], role:BECOMEMASTER

2016-10-17 18:29:35,404 | INFO | ntLoopGroup-5-15 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:6], role:BECOMEMASTER

2016-10-17 18:29:35,513 | INFO | ntLoopGroup-5-15 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:6], role:BECOMEMASTER

2016-10-17 18:29:35,677 | INFO | ntLoopGroup-5-11 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:5], role:BECOMEMASTER

2016-10-17 18:29:36,397 | INFO | ntLoopGroup-5-11 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:5], role:BECOMEMASTER

2016-10-17 18:29:36,512 | INFO | ntLoopGroup-5-13 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange called for device:Uri [_value=openflow:4], role:BECOMEMASTER

2016-10-17 18:29:36,527 | INFO | ntLoopGroup-5-13 | RoleService                     | 303 - org.opendaylight.openflowplugin.impl - 0.3.0.Boron | submitRoleChange onSuccess for device:Uri [_value=openflow:4], role:BECOMEMASTER

OpenDaylight GUI (web interface) populated the topology as well, however not hosts yet. The reason of not discovering hosts is because we have not exchanged any frames yet. 

Step 4: Testing out connectivity and hosts discovery

Running pingall test to check connectivity between every pair of nodes to discover the hosts connected to switches: 

Since now we have run the pingall that passed the frames among all of the nodes. Given that, the hosts are (now) discovered and so we should be able to see all of the hosts on the controller:

The above snapshots and logs confirm that SDN network setup has now been completed successfully. Let’s dig into flow tables.

Step 5: Flow table

From Mininet CLI “ovs-ofctl” could be used to dump flow table for the switches. Say for example, we could use the following command in order to dump flow table for the switch named openflow:1

“sh ovs-ofctl dump-flows -O OpenFlow13 s1“ 

The other alternative command to dump the the flow table is “dpctl”. Say for example, if we want to dump all the flows on all switches “dpctl dump-flows -O OpenFlow13”

ONOS + Mininet

Software platform

  • Linux (Core operating system to run Virtual machines for ONOS and Mininet)
  • ONOS
  • SDN Controller
  • Mininet
  • To create a realistic large scale virtual network running actual kernel, switch and software application code.

Step 1: Installation ONOS and Mininet

ONOS was installed by following a straightforward process[3] that is well documented onhttps://wiki.onosproject.org/display/ONOS/Installing+and+Running+ONOS

Step 2: Building network

Since we have not connected any switch to the ONOS controller (yet) and so there is no topology, devices, hosts or flows.

Now since the mininet was/is already installed on the computer (during OpenDaylight + Mininet exercise) and all I needed to is that build a topology with Open vSwitch switches with the control of ORON as SDN controller to talk to south bound switches. The following command is used:

sudo mn --topo linear,5 --mac --controller=remote,ip=100.102.132.52,port=6633


Topology: Linear

ONOS Controller: 100.102.132.52 listening on port 6653

And as a results, the following screenshot confirms I entered into Mininet’s CLI that allows to control, and manage the entire virtual network from a single console. For example, the CLI command:

Step 3: Controller communication with the switches

While tailing logs on the ONOS controller we observed that all of the five Open vSwitches can talk to controller that we set up during the creation of network via --controller=remote,ip=100.102.132.52,port=6633. Logs from the controller confirming that switches managed to establish a TCP connection:

2016-10-18 13:45:42,277 | INFO | ew I/O worker #2 | DeviceManager                   | 76 - org.onosproject.onos-core-net - 1.8.0.SNAPSHOT | Local role is MASTER for of:0000000000000001

2016-10-18 13:45:42,277 | INFO | ew I/O worker #3 | DeviceManager                   | 76 - org.onosproject.onos-core-net - 1.8.0.SNAPSHOT | Local role is MASTER for of:0000000000000002

2016-10-18 13:45:42,316 | INFO | ew I/O worker #3 | ntrollerImpl$OpenFlowSwitchAgent | 168 - org.onosproject.onos-of-ctl - 1.8.0.SNAPSHOT | Transitioned switch 00:00:00:00:00:00:00:02 to MASTER

2016-10-18 13:45:42,318 | INFO | ew I/O worker #2 | ntrollerImpl$OpenFlowSwitchAgent | 168 - org.onosproject.onos-of-ctl - 1.8.0.SNAPSHOT | Transitioned switch 00:00:00:00:00:00:00:01 to MASTER

2016-10-18 13:45:42,322 | INFO | ew I/O worker #4 | DeviceManager                   | 76 - org.onosproject.onos-core-net - 1.8.0.SNAPSHOT | Local role is MASTER for of:0000000000000003

2016-10-18 13:45:42,325 | INFO | ew I/O worker #4 | ntrollerImpl$OpenFlowSwitchAgent | 168 - org.onosproject.onos-of-ctl - 1.8.0.SNAPSHOT | Transitioned switch 00:00:00:00:00:00:00:03 to MASTER

2016-10-18 13:45:42,407 | INFO | ew I/O worker #5 | DeviceManager                   | 76 - org.onosproject.onos-core-net - 1.8.0.SNAPSHOT | Local role is MASTER for of:0000000000000004

2016-10-18 13:45:42,417 | INFO | ew I/O worker #5 | ntrollerImpl$OpenFlowSwitchAgent | 168 - org.onosproject.onos-of-ctl - 1.8.0.SNAPSHOT | Transitioned switch 00:00:00:00:00:00:00:04 to MASTER

2016-10-18 13:45:42,450 | INFO | ew I/O worker #6 | DeviceManager                   | 76 - org.onosproject.onos-core-net - 1.8.0.SNAPSHOT | Local role is MASTER for of:0000000000000005

2016-10-18 13:45:42,452 | INFO | ew I/O worker #6 | ntrollerImpl$OpenFlowSwitchAgent | 168 - org.onosproject.onos-of-ctl - 1.8.0.SNAPSHOT | Transitioned switch 00:00:00:00:00:00:00:05 to MASTER

ONOS console has (now) populated the topology:

However it has not discovered hosts yet. The reason of not discovering hosts is because we have not exchanged any frames yet. 

Step 4: Testing out connectivity and hosts discovery

Running pingall test to check connectivity between every pair of nodes to discover the hosts connected to switches: 

Since now we have run the pingall that passed the frames among all of the nodes. Given that, the hosts are (now) discovered on the ONOS controller and so we should be able to see all of the hosts on it:

Step 5: Flow table

From Mininet CLI “ovs-ofctl” could be used to dump flow table for the switches. Say for example, we could use the following command in order to dump flow table for the switch named openflow:1

“sh ovs-ofctl dump-flows s1“ 

Flow table similarity can be seen on the ONOS controller as well: 


References

"Software Defined Networking (SDN): Anatomy of OpenFlow Volume I (Volume 1) by Doug Marschke (Author), Jeff Doyle (Contributor), Pete Moyer (Contributor)

Foundations of Modern Networking: SDN, NFV, QoE, IoT, and Cloud 1st Edition by William Stallings

OpenDaylight installation https://wiki.opendaylight.org/view/Install_On_Ubuntu_14.04 [2]

ONOS installation ://wiki.onosproject.org/display/ONOS/Installing+and+Running+ONOS [3]

Posted Friday, May 19, 2017 4:03 PM by jahil | 0 Comments

wildcard a quick way to alter the configurations in Junos
Suppose, you have multiple following circuits that need to be removed from the configurations, and then have them disabled and marked as an [AVAILABLE]:

et-1/0/0 to et-1/0/10
et-1/0/13
et-1/0/21

With traditional approach the configlet would be pretty lengthy, however with wildcard command it's pretty damn short:

jahil# wildcard range delete interfaces et-1/0/[0-10,13,21]
jahil# wildcard range set interfaces et-1/0/[0-10,13,21] description "[AVAILABLE]"
jahil# wildcard range set interfaces et-1/0/[0-10,13,21] disable

wildcard can can also be used at other hierarchical levels. However please be careful and treat it with care, as this can be dangerous when using with regex :-)

Posted Sunday, November 09, 2014 6:53 AM by jahil | 0 Comments

Filed under: ,

very cool Internet visualization application

Very, very cool Internet visualization application for Android and Iphones, they are using data from the folks at CAIDA.

http://money.cnn.com/2013/03/06/technology/innovation/map-of-the-internet/  

Posted Wednesday, March 06, 2013 11:56 PM by jahil | 0 Comments

Filed under:

Juniper pathfinder
When buying or upgrading a Juniper device, there are always questions that come to mind (Is “this” feature supported on “that” platform, and if so “which” version did it come out?)

As of July 1st, Juniper have released the Pathfinder tool: http://pathfinder.juniper.net

This tool is comprised of two features - Feature Explorer and Content Explorer

Feature Explorer gives you a list of every feature available on a product and what version of code is became available. 
Content Explorer allows you to explore Juniper Networks technical documentation for Junos OS-based products by product, task and software release and also download technical documentation PDFs by product and release.

Posted Friday, July 13, 2012 2:47 AM by jahil | 0 Comments

Filed under: , ,

JNCIP-SP Certification Cleared

Earned my JNCIP-SP certification on May 20, 2011 (A completely new certification by Juniper Networks ). 

JNCIP-SP 

I hope to finish JNCIE-SP within next 3-4 week. Wish me all the luck :)

Posted Sunday, May 22, 2011 3:34 PM by jahil | 4 Comments

Filed under: , ,

How to calculate CAR rate-limit

Here's just a quick and handy tip for anyone who is after how to calculate CAR rate-limit.

normal burst = configured rate * (1 byte)/(8 bits) * 1.5 seconds

extended burst = 2 * normal burst 

Posted Monday, February 07, 2011 12:04 PM by jahil | 0 Comments

Filed under: ,

Its Official...No more IPv4 left
At ICANN IPv6 News Conference, they officially announced, no more IPv4 left. 
 
http://youtu.be/gveJs6YRYXU 

Posted Friday, February 04, 2011 4:04 PM by jahil | 1 Comments

Filed under: ,

disable interface TX laser (JUNOS)

Just in case if you want to simulate a fiber cut, you can enter a command from the FPC shell that cuts the power to the laser of an interface

start shell pfe network fpcX

test xfp <index> laser off

You can find the XFP index by doing "show xfp list" from the shell prompt.  I haven't seen a method that works for SFP interfaces.

For sonet interfaces, this hidden configuration is also an option:

set interfaces so-x/y/z sonet-options insert-los

Posted Friday, December 31, 2010 11:09 AM by jahil | 0 Comments

Filed under: ,

VLANs Cisco/Juniper

If you are familiar with Cisco switches, and using Cisco switches fairly well, this post will help you to boost your confidence as a Juniper network engineer.

 If you can configure a Cisco switch, then you also can configure a JUNOS based switch :)  here you go.. 

 IOS

#vlan-database

(vlan)#vlan 5 name Internet

(vlan)#vlan 6 name Intranet

(vlan)#apply

JUNOS

set vlan Internet vlan-id 5

set vlan Intranet vlan-id 6

 

Assign an IP addressto a VLAN:

IOS

(config)#interface vlan 5

(config-if)#ip address 10.10.10.254 255.255.255.0

 

JUNOS

set interfaces vlan unit 5 family inet address 10.10.10.254/24

set vlan Internet l3-interface vlan.5

 

Assigning a port to aVLAN (Access):

IOS

(config)#interface fastEthernet 2/2

(config-if)#switchport mode access

(config-if)#switchport access vlan 5

 

JUNOS

set interfaces fe-2/0/2 unit 0 family ethernet-switching port-mode access

set interfaces fe-2/0/2 unit 0 family ethernet-switching vlan members Intranet

 

Assigning a port to aVLAN (6 Trunked with 5 Native)

IOS

(config)#interface fastEthernet 2/2

(config-if)#switchport mode trunk

(config-if)#switchport trunk encapsulation dot1q

(config-if)#switchport trunk native vlan 5

(config-if)#switchport trunk allowed vlan 5,6

 

JUNOS

set interfaces fe-2/0/2 unit 0 family ethernet-switching port mode trunk

set interfaces fe-2/0/2 unit 0 family ethernet-switching native-vlan-id 5

set interfaces fe-2/0/2 unit 0 family ethernet-switching vlan members 6

  

Posted Saturday, October 09, 2010 7:52 PM by jahil | 0 Comments

Filed under: , ,

Firewall Filter on Juniper's EX-series Switches

A firewall filters provide rules that define whether to permit or deny packets that are transiting an interface on a switch or router from a source address to a destination address. They can be applied to ports, VLANs, or layer 3 interfaces.

 

The following firewall filter types are supported for EX-series switches:
  • Port (Layer 2) firewall filter—Port firewall filters apply to Layer 2 switch ports. You can apply port firewall filters only in the ingress direction on a physical port.

    Example.
    ge-0/0/0 {
    description "voice priority and tcp and icmp traffic rate-limiting filter at ingress port";
    unit 0 {
        family ethernet-switching {
            filter {
                input ingress-port-voip-class-limit-tcp-icmp;
            }
        }
    }

  • VLAN firewall filter—VLAN firewall filters provide access control for packets that enter a VLAN, are bridged within a LAN, and leave a VLAN. You can apply VLAN firewall filters in both ingress and egress directions on a VLAN. VLAN firewall filters are applied to all packets that are forwarded to or forwarded from the VLAN.

    Example.
    vlans {
        guest-vlan {
            description "restrict guest-to-employee traffic and peer-to-peer applications on guest VLAN";
            filter {
                input ingress-vlan-limit-guest;
            }
        }
    }

  • Router (Layer 3) firewall filter—You can apply a router firewall filter in both ingress and egress directions on Layer 3 (routed) interfaces.

    Example.
    ge-0/1/0 {
        unit 0 {
            description "filter at egress router interface to expedite employee traffic destined for corporate network";
            family inet {
                filter {
                output egress-router-corp-class;
                }
            }
        }
    }

Posted Sunday, July 18, 2010 11:09 AM by jahil | 1 Comments

Filed under: ,

MTR on Juniper JUNOS

You may have used traceroute in a Micrsoft OS or in Unix.  It’s quite simple and can tell you a few things about the connection between you and any other device on the internet.
So what if the problem were intermittent, or traceroute did not show any problems because perhaps the choke point is experiencing intermittent bursts of data?  Enter MTR, the big brother to traceroute.  MTR (or My Trace Route) can show you a constant display of each link and how it’s holding up.

Since JUNOS 8.0 there is a new option which allows to run traceroute in a 'MTR-like' mode:

jahil@R1> traceroute monitor 4.2.2.2

where 4.2.2.2 is an IP or domain-name of the target host.

You can do a more intensive version of this through the JUNOS shell. Requires root access

jahil@R1> start shell
 % su
Password:
jahil@R1% mtr -i 0.02 4.2.2.2

Posted Saturday, November 07, 2009 11:54 PM by jahil | 0 Comments

Filed under: ,

Viewing default/hidden config on JUNOS

Would you like to see JUNOS defaults configuration. To view certain JUNOS default settings for dynamic profiles/system/services/applications, you must type the full command:

jahil@voyager# show configuration groups junos-defaults

Note: TAB/SPACE autocomplete does not work here :)

Posted Saturday, October 24, 2009 7:42 PM by jahil | 1 Comments

Filed under: ,

Cisco IOS 15.0 (new features).. Awesome

Cisco released IOS 15.0. This is the next major release after 12.4. It’s been over 4 years since Cisco has delivered a major release of IOS code.
The new features listed in the documentation include: 

•BGP Event Based VPN Import;
•BGP Per Neighbor Graceful Restart Configuration;
•BGP RT Changes Without PE-CE Neighbor Impact;
•BGP local convergence in MPLS VPN networks (the feature has already been available in 12.2 SRC, now it’s available on more platforms);
•Full BFD support, including static routes, BFD-in-VRF and BFD-over-Frame Relay (next step: test it on a 2800-series router);
•DHCP authentication;
•DMVPN tunnel health monitoring;
•EEM 3.1 (whatever that is, the EEM documentation hasn’t been updated yet);
•Interaction between IS-IS and LDP;
•OSPF graceful shutdown and OSPF TTL security check features are available on more platforms;
•Intra-zone traffic inspection in zone-based firewall;
•VRF Aware RSVP Agent and Gateway;
•WCCP: VRF Support;

nd many more http://www.cisco.com/en/US/docs/ios/15_0/15_0_1_m/15_0_1_m_newfeatlist.html#wp1055140 Good job; finally we have something new to play with :)

Posted Tuesday, October 06, 2009 9:54 AM by jahil | 0 Comments

Filed under: ,

JUNOS Command Completion

The JUNOS command completion feature saves you lots of time and energy, and it provides syntax checking as you type. Gone are the days when you type a command on a line and after you press Enter the command is either invalid or not supported on that version of software. Any error or ambiguity will be detected early, and the router/switch will present a list of valid completions for the current command.

You can disable command completion on a per-login basis by modifying the CLI environment with an operational mode set cli command:

jahil@R1> set cli ?
Possible completions:
complete-on-space Set whether typing space completes current word

But a good reason to do so has not yet been noted.

You can evoke command completion by using either the space bar or the Tab key. Note that the Tab key also completes user-assigned variables such as interface names, IP addresses, firewall filters, and filenames.

Note: The most confusing thing about command completion is when to use space and when to use tab. The space bar is used until a variable is reached, at which time the Tab key is used to auto-complete the user variable for the filter name of test_JUNOS-JAHIL-FILTER.

Posted Wednesday, August 26, 2009 11:57 AM by jahil | 0 Comments

Filed under: ,

Juniper's JUNOS Emacs style cursor movement/Page manipulation

Remember Juniper's JUNOS is heavily influenced by Unix, afterall it does sit on top of FreeBSD. You can use EMACS commands for cursor movement, which include:

Ctrl-a  Moves the cursor to the beginning of the command line, back to the prompt
Ctrl-e Moves the cursor to the end of the command line
Ctrl-b Moves the cursor back one character
Ctrl-k Delete everything from the current cursor position to the end of the line
Ctrl-x Delete the entrie line.
Ctrl-l Bring back the current line
Ctrl-p Scroll back through command history (analogous to up arrow)
Ctrl-n Scroll forward through command history (analogous to down arrow)
Ctrl-r Search command history for a string

Just like in GNU less you can

say you run a show, this has been pageanated, that is split into pages if the output of the command shows more than one screen. You can go all the way to end by hitting
G
similarly you can return to the first of the output by typing
g

You can also search for a string in the page by
/(your search string)

Posted Friday, July 31, 2009 2:55 PM by jahil | 0 Comments

Filed under: ,

More Posts Next page »