Showing posts with label network. Show all posts
Showing posts with label network. Show all posts

Tuesday, 23 December 2014

Configuring Network Teaming using nmcli in RHEL 7.0

Network teaming is a method for linking NICs together logically to allow fail-over or higher throughput. Teaming is a new implementation that does not affect the older bonding driver in linux kernel; it offers an alternate implementation.

RHEL7 support the standard channel bonding for backward compatibility ( for more information on channel bonding click here ). Network teaming provides better performance and is more extensive because of the modular design.

RHEL 7.0 implement network teaming with a small kernel driver and a small user space daemon called "teamd". The kernel handles network packets efficiently and teamd handles logic and interface processing. Software, called runners, implement load balancing  and active backup logic, such as round robin. the following runners are available to teamd.

broadcast    : A simple runner which transmits each packet from all ports.
roundrobin : A simple runner which transmits each packets in a round-robin fashion from each of its ports.
activebackup: This is a failover runner which watches for link changes and select an active port for data transfer.
loadbalance: This runner monitor traffic and uses a hash function to try to reach a perfect balance when selecting ports for packet transmission.
lacp  : Implement the 802.3ad Link Aggregation Control Protocol. can use the same transmit port selection possibilities as the loadbalance runner.

Now let me show you how to configure teaming in RHEL 7.0.
Decide which interfaces that you would like to configure a Team interface.
run ip link  command to check the available interface in the system.

Here i am using eno33554992 and eno50332216 NICs to create a team interface in activebackup mode.
Use nmcli command to create a connection for the network team interface,with the following syntax.

#nmcli con add type team con-name CNAME ifname INAME [config JSON]

Where CNAME will be the name used to refer the connection ,INAME will be the interface name and  JSON (JavaScript Object Notation) specifies the runner to be used. JSON has the following syntax:

'{"runner":{"name":"METHOD"}}'

where METHOD is one of the following: broadcast, activebackup, roundrobin, loadbalance or lacp.

Now let me create the team interface. here is the command i used to create the team interface.
 

run #nmcli con show command to verify the team configuration.

Now lets add the slave devices to the master team0. here is the syntax for adding the slave devices.

#nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

Here i am adding eno33554992 and eno50332216 as slave devices for team0 interface.


Verify the connection configuration using  #nmcli con show again. now you could see the slave configuration.



All the above command will create the required configuration files under /etc/sysconfig/network-scripts/.
[root@foundation ~]# ll /etc/sysconfig/network-scripts/ifcfg-team0*
-rw-r--r--. 1 root root 333 Dec 24 03:30 /etc/sysconfig/network-scripts/ifcfg-team0
-rw-r--r--. 1 root root 312 Dec 24 03:37 /etc/sysconfig/network-scripts/ifcfg-team0-port1
-rw-r--r--. 1 root root 312 Dec 24 03:37 /etc/sysconfig/network-scripts/ifcfg-team0-port2
[root@foundation ~]#


Lets assign an IP address to this team0 interface and enable the connection now. Here is the command to perform the IP assignment.

#nmcli con mod team0 ipv4.addresses "192.168.1.24/24 192.168.1.1"
#nmcli con mod team0 ipv4.method manual
#nmcli con up team0




Verify the IP address information in #ip add show team0 command.



Now lets check the activebackup configuration functionality. using the teamdctl command.
# teamdctl team0 state 



Now lets disconnect the active port and check the state again. to confirm whether the active backup configuration is working as expected.
#nmcli dev dis eno50332216


disconnected the active port and now check the state again using #teamdctl team0 state





Yes its working as expected. !!  you could connect the disconnected connection back to team0 using the following command.
#nmcli dev con eno50332216


we have one more command called teamnl let me show you some options with teamnl command.
to check the ports in team0 run the following command.
# teamnl team0 ports


Display currently active port of team0.
# teamnl team0 getoption activeport

There are many options , i would recommend to use manpages to get more information on teamnl and teamdctl command.
Hope this article is useful to you .share your feedback if any .

Monday, 22 December 2014

Configuring Network using nmcli command line tool in RHEL 7

Hello Friends,
lets discuss about few options in nmcli command, nmcli is a command-line tool for controlling NetworkManager and getting its status.in RHEL 7 configuration of network interfaces is managed by a system daemon called Network manager.  Network configuration file will be available in /etc/sysconfig/network-scripts/ifcfg-name .The nmcli utility can be used to create, edit connection files from the shell prompt.

here i am demonstrating how to configure a network interface using nmcli command.

Configuring NIC using nmcli command :
 Let us configure a eno16777736 NIC card in my server. run the #ip link  to show the interfaces available in your system.


Now check the configuration available in the server  run the following command to check the configuration.
#nmcli con show
There is no configuration present in this system now. lets add one now.
 
nmcli con add command used to add new connection .let us add the IP information to this interface. the syntax would be.

nmcli con add type <team, bridge,ethernet> con-name <connection name> ip4 <ipv4 address> gw4 <gateway ip>
Here is the command i used to configure the IP address and gateway to eno16777736 interface
Now check  the configuration again . you could see that a new configuration is availble in nmcli con show command.

 To get more details on the connection and settings that you can change you could run the following command.
nmcli con show <connection name>

[root@foundation ~]# nmcli con show eno1
connection.id:                          eno1
connection.uuid:                        83888dcf-b4cd-4875-b566-3c07601803e5
connection.interface-name:              eno16777736
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1419290263
connection.read-only:                   no
connection.permissions:
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:
connection.gateway-ping-timeout:        0
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:
ipv4.method:                            manual
ipv4.dns:
ipv4.dns-search:
ipv4.addresses:                         { ip = 192.168.1.4/24, gw = 192.168.1.1 }
ipv4.routes:
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv6.method:                            auto
ipv6.dns:
ipv6.dns-search:
ipv6.addresses:
ipv6.routes:
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
GENERAL.NAME:                           eno1
GENERAL.UUID:                           83888dcf-b4cd-4875-b566-3c07601803e5
GENERAL.DEVICES:                        eno16777736
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.VPN:                            no
GENERAL.ZONE:                           --
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/3
GENERAL.SPEC-OBJECT:                    --
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         ip = 192.168.1.4/24, gw = 192.168.1.1
IP6.ADDRESS[1]:                         ip = fe80::20c:29ff:fe32:bf71/64, gw = ::
[root@foundation ~]#

Suppose if you want to change any setting in this you could run nmcli con mod command.  
nmcli con mod <interface name> settings <value>

The below command is used to add the DNS address in the system.


 These commands will update the information in /etc/sysconfig/network-scripts/ifcfg-eno1 file.


check the ip information using the ip add show <interface name> command.

hope this will be useful to you . I will be posting the teaming and bridging configuration using nmcli soon in next post !