【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

发布一下 0 0

ping命令

ping是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。


ping能够以毫秒为单位显示发送请求到返回应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络,连接速度比较快。ping还能显示TTL(Time To Live,生存时间)值,通过TTL值可以推算数据包通过了多少个路由器。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!



1、命令格式

ping 主机名

ping 域名

ping IP地址


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


如图所示,使用ping命令检查到IP地址210.43.16.17的计算机的连通性,该例为连接正常。共发送了四个测试数据包,正确接收到四个数据包。



2、ping命令的基本应用

一般情况下,用户可以通过使用一系列ping命令来查找问题出在什么地方,或检验网络运行的情况。下面就给出一个典型的检测次序及对应的可能故障:


① ping 127.0.0.1

如果测试成功,表明网卡、TCP/IP协议的安装、IP地址、子网掩码的设置正常。如果测试不成功,就表示TCP/IP的安装或设置存在有问题。


② ping 本机IP地址

如果测试不成功,则表示本地配置或安装存在问题,应当对网络设备和通讯介质进行测试、检查并排除。


③ ping局域网内其他IP

如果测试成功,表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。


④ ping 网关IP

这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够做出应答。


⑤ ping 远程IP

如果收到正确应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。


⑥ ping localhost

local host是系统的网络保留名,它是127.0.0.1的别名,每台计算机都应该能够将该名字转换成该地址。否则,则表示主机文件(/Windows/host)中存在问题。


⑦ ping www.yahoo.com(一个著名网站域名)

对此域名执行Ping命令,计算机必须先将域名转换成IP地址,通常是通过DNS服务器。如果这里出现故障,则表示本机DNS服务器的IP地址配置不正确,或它所访问的DNS服务器有故障。


如果上面所列出的所有ping命令都能正常运行,那么计算机进行本地和远程通信基本上就没有问题了。但是,这些命令的成功并不表示你所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。



3、ping命令的常用参数选项

ping IP -t:连续对IP地址执行ping命令,直到被用户以Ctrl C中断。

ping IP -l 2000:指定ping命令中的特定数据长度(此处为2000字节),而不是缺省的32字节。

ping IP -n 20:执行特定次数(此处是20)的ping命令。

ipconfig命令

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


ipconfig实用程序可用于显示当前的TCP/IP配置的设置值。这些信息一般用来检验人工配置的TCP/IP设置是否正确。


而且,如果计算机和所在的局域网使用了动态主机配置协议DHCP,使用ipconfig命令可以了解到你的计算机是否成功地租用到了一个IP地址,如果已经租用到,则可以了解它目前得到的是什么地址,包括IP地址、子网掩码和缺省网关等网络配置信息。


下面给出最常用的选项:



1、ipconfig

当使用不带任何参数选项ipconfig命令时,显示每个已经配置了的接口的IP地址、子网掩码和缺省网关值。



2、ipconfig /all

当使用all选项时,ipconfig能为DNS和WINS服务器显示它已配置且所有使用的附加信息,并且能够显示内置于本地网卡中的物理地址(MAC)。如果IP地址是从DHCP服务器租用的,ipconfig将显示DHCP服务器分配的IP地址和租用地址预计失效的日期。图为运行ipconfig /all命令的结果窗口。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!



3、ipconfig /release和ipconfig /renew

这两个附加选项,只能在向DHCP服务器租用IP地址的计算机使用。如果输入ipconfig /release,那么所有接口的租用IP地址便重新交付给DHCP服务器(归还IP地址)。如果用户输入ipconfig /renew,那么本地计算机便设法与DHCP服务器取得联系,并租用一个IP地址。大多数情况下网卡将被重新赋予和以前所赋予的相同的IP地址。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

arp命令(地址转换协议)

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


ARP是TCP/IP协议族中的一个重要协议,用于确定对应IP地址的网卡物理地址。


使用arp命令,能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外,使用arp命令可以人工方式设置静态的网卡物理地址/IP地址对,使用这种方式可以为缺省网关和本地服务器等常用主机进行本地静态配置,这有助于减少网络上的信息量。


按照缺省设置,ARP高速缓存中的项目是动态的,每当向指定地点发送数据并且此时高速缓存中不存在当前项目时,ARP便会自动添加该项目。



常用命令选项:

① arp –a:用于查看高速缓存中的所有项目。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


② arp -a IP:如果有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。


③ arp -s IP 物理地址:向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。


④ arp -d IP:使用本命令能够人工删除一个静态项目。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

traceroute命令

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


掌握使用traceroute命令测量路由情况的技能,即用来显示数据包到达目的主机所经过的路径。


traceroute命令的基本用法是,在命令提示符后键入“tracert host_name”或“tracert ip_address”,其中,tracert是traceroute在Windows操作系统上的称呼。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


输出有5列:

  • 第一列是描述路径的第n跳的数值,即沿着该路径的路由器序号;
  • 第二列是第一次往返时延;
  • 第三列是第二次往返时延;
  • 第四列是第三次往返时延;
  • 第五列是路由器的名字及其输入端口的IP地址。


如果源从任何给定的路由器接收到的报文少于3条(由于网络中的分组丢失),traceroute在该路由器号码后面放一个星号,并报告到达那台路由器的少于3次的往返时间。


此外,tracert命令还可以用来查看网络在连接站点时经过的步骤或采取哪种路线,如果是网络出现故障,就可以通过这条命令查看出现问题的位置。


思考:

【测试大型网络的路由】


(1)多尝试几次“ping www.sina.com.cn”操作,比较得到的新浪网的IP地址。如果两次ping得到的IP地址不同,试考虑其中的原因(如考虑到负载均衡)。然后,针对这些不同的IP地址,执行“tracert ip_address”命令,观察分析输出的结果是否有差异。


(2)对于大型网络中的某站点进行traceroute测试,记录测试结果。观察其中是否出现第n跳的时延小于第n-1跳的时延情况。试分析其中原因(提示:可分别考虑时延的各个构成成分在总时延中所起的作用)。


(3)在一天的不同时段内,用traceroute程序多次测试从固定主机到远程固定IP地址的主机的路由。试分析比较测量数据,观察该路由是否有变化?如果有变化,该变化频繁吗?

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

route命令

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


大多数主机一般都是驻留在只连接一台路由器的网段上。由于只有一台路由器,因此不存在选择使用哪一台路由器将数据包发送到远程计算机上去的问题,该路由器的IP地址可作为该网段上所有计算机的缺省网关。


但是,当网络上拥有两个或多个路由器时,用户就不一定想只依赖缺省网关了。实际上可能想让某些远程IP地址通过某个特定的路由器来传递,而其他的远程IP则通过另一个路由器来传递。在这种情况下,用户需要相应的路由信息,这些信息储存在路由表中,每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来交换和动态更新路由器之间的路由表。


但在有些情况下,必须人工将项目添加到路由器和主机上的路由表中。route命令就是用来显示、人工添加和修改路由表项目的。该命令可使用如下选项:



1、route print

本命令用于显示路由表中的当前项目,在单个路由器网段上的输出结果如图所示。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!



2、route add

使用本命令,可以将路由项目添加给路由表。


例如,如果要设定一个到目的网络209.99.32.33的路由,其间要经过5个路由器网段,首先要经过本地网络上的一个路由器IP为202.96.123.5,子网掩码为255.255.255.224,那么用户应该输入以下命令:


route add 209.99.32.33 mask 255.255.255.224 202.96.123.5 metric 5


3、route change

可以使用本命令来修改数据的传输路由,不过,用户不能使用本命令来改变数据的目的地。下面这个例子将上例路由改变采用一条包含3个网段的路径:


route add 209.99.32.33 mask 255.255.255.224 202.96.123.250 metric 3



4、route delete

使用本命令可以从路由表中删除路由。


例如:route delete 209.99.32.33


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

nslookup命令

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


命令nslookup的功能是查询任何一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。


(1)在本地机上使用nslookup命令查看本机的IP及域名服务器地址。


直接键入命令,系统返回本机的服务器名称(带域名的全称)和IP地址,并进入以“>”为提示符的操作命令行状态;键入“?”可查询详细命令参数;若要退出,需键入exit。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


(2)查看www.haut.edu.cn的IP。在提示符后输入要查询的IP地址或域名并回车即可。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

nbtstat命令

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


使用nbtstat命令可以查看计算机上网络配置的一些信息。使用这条命令还可以查找出别人计算机上一些私人信息。如果想查看自己计算机上的网络信息,可以运行nbtstat -n,可以得到你所在的工作组,计算机名以及网卡地址等等;想查看网络上其他的电脑情况,就运行nbtstat -a *.*.*.*,此处的*.*.*.*用IP地址代替就会返回得到那台主机上的一些信息。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

netstat命令

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


学习使用netstat命令,以了解网络当前的状态。


netstat命令能够显示活动的TCP连接、计算机侦听的端口、以太网统计信息、IP路由表、IPv4统计信息(对于IP、ICMP、TCP和UDP协议)以及IPv6统计信息(对于IPv6、ICMPv6、通过IPv6的TCP以及UDP协议)。使用时如果不带参数,netstat显示活动的TCP连接。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


下面给出netstat的一些常用选项:


① netstat –a:-a选项显示所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。


② netstat –n:以点分十进制的形式列出IP地址,而不是象征性的主机名和网络名。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


③ netstat -e:-e选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据包的总字节数、错误数、删除数、数据包的数量和广播的数量。这些统计数据既有发送的数据包数量,也有接收的数据包数量。使用这个选项可以统计一些基本的网络流量。


④ netstat -r:-r选项可以显示关于路由表的信息,类似于route print命令时看到的信息。除了显示有效路由外,还显示当前有效的连接。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!


上图显示的是一个路由表,其中:Network Destination表示目的网络,0.0.0.0表示不明网络,这是设置默认网关后系统自动产生的;127.0.0.0表示本机网络地址,用于测试;224.0.0.0表示组播地址;255.255.255.255表示限制广播地址;Netmask表示网络掩码,Gateway表示网关,Interface表示接口地址,Metric表示路由跳数。


⑤ netstat -s:-s选项能够按照各个协议分别显示其统计数据。这样就可以看到当前计算机在网络上存在哪些连接,以及数据包发送和接收的详细情况等等。如果应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么可以用本选项来查看一下所显示的信息。仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。


【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

万文解析openvswitch中流表转发原理

2023-04-11 17:33·运维法拉令

在过去10几年里面,虚拟化已经改变了应用,数据,服务的实现部署方式。据Gartner 2016的报道[1],80%的x86 workload已经是虚拟化,其中大部分是虚拟机,但是容器所占比例正以极快的增长速度。

服务器的虚拟化给数据中心网络带来了根本性的变化。在传统的数据中心网络架构基础上,出现了一个新的,位于物理服务器内的接入层。这个新的接入层包含的设备是运行在x86服务器中的vSwitch,而这些vSwitch连接着一个服务器内的多个workload(包括容器和虚机)。

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

vSwitch的早期代表是Linuxbridge,它在设计之初就是为了提供基本的网络连接,因此它只是模拟了ToR交换机的行为,并将自己接入到现有的物理网络中。这样实现的优点是,现有物理网络的理论和协议可以直接套用,不需要重复设计。缺点就是,作为物理网络的延伸,使得虚拟workload的网络与物理网络紧耦合,影响了虚拟化本身带来的诸如灵活,快速上线的优势。

随着网络虚拟化(network virtualization)的出现,为连接虚拟workload的网络提供了另一种可能。物理网络仍然由物理网络设备管理,虚拟workload的网络,单独由vSwitch管理,并且在现有物理网络(underlay)基础之上,再定义一个独立的overlay网络(例如VxLAN)。这个overlay网络不受物理网络设备控制,完全由vSwitch控制。

OpenVSwitch就是基于这个设计思想实现的。OpenVSwitch是一个多层的,开源虚拟交换机。不过到目前为止,LinuxBridge也支持了VxLAN,OpenVSwitch也能够支持对应于物理网络的VLAN,FLAT网络。

OpenFlow

除了基于overlay网络的思想设计以外,OpenVSwitch的另一大特点就是基于OpenFlow。

传统的交换机,不论是硬件的,还是软件的,所具备的功能都是预先内置的,需要使用某个功能的时候,进行相应的配置即可。而OpenVSwitch通过OpenFlow实现了交换机的可编程。OpenFlow可以定义网络包在交换机中的处理流程(pipeline),因此支持OpenFlow的交换机,其功能不再是固定的,通过OpenFlow可以软件定义OpenVSwitch所具备的功能。

OpenFlow以多个Table串行工作的方式来处理网络数据包,如下图所示。

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

OpenFlow的灵活性是实现SDN必不可少的一部分,但是在一些实际场景中,因为涉及的功能多且复杂,相应的OpenFlow pipeline会变得很长。直观上来看,pipeline越长,处理一个网络包需要的时间也越长。这是OpenFlow从理论到实际的一个问题,OpenVSwitch为此尝试过很多优化。

对于一个Linux系统来说,可以分为用户空间(user space)和内核空间(kernel space),网络设备接入到内核空间。如果需要将数据传输到用户程序则需要通过内核空间将数据上送到用户空间,如果需要在网络设备之间转发数据,直接在内核空间就可以完成。

作为运行在x86服务器中的软件交换机,直观上来看,应该在内核空间来实现转发。因此,OpenVSwitch在最早期的时候,在Linux内核模块实现了所有的OpenFlow的处理。当时的OpenVSwitch内核模块,接收网络数据包,根据OpenFlow规则,一步步的Match,并根据Action修改网络数据包,最后从某个网络设备送出。

但是这种方式很快就被认为是不能实际应用的。首先,虽然在内核实现可以缩短网络数据包在操作系统的路径,但是在内核进行程序开发和更新也更加困难,以OpenVSwitch的更新速度,完全在内核实现将变得不切实际。其次,完全按照OpenFlow pipeline去处理网络包,势必要消耗大量CPU,进而降低网络性能。

因此,最新版本(2.x版本)的OpenVSwitch采用了一种很不一样的方式来避免这些问题。

OpenVSwitch架构

现在OpenVSwitch主要由三个部分组成:

  • ovsdb-server:OpenFlow本身被设计成网络数据包的一种处理流程,它没有考虑软件交换机的配置,例如配置QoS,关联SDN控制器等。ovsdb-server是OpenVSwitch对于OpenFlow实现的补充,它作为OpenVSwitch的configuration database,保存OpenVSwitch的持久化数据。
  • ovs-vswitchd:运行在用户空间的转发程序,接收SDN控制器下发的OpenFlow规则。并且通知OVS内核模块该如何处理网络数据包。
  • OVS内核模块:运行在内核空间的转发程序,根据ovs-vswitchd的指示,处理网络数据包

OpenVSwitch中有快速路径(fast path)和慢速路径(slow path)。其中ovs-vswitchd代表了slow path,OVS内核模块代表了fast path。现在OpenFlow存储在slow path中,但是为了快速转发,网络包应该尽可能的在fast path中转发。因此,OpenVSwitch按照下面的逻辑完成转发。

当一个网络连接的第一个网络数据包(首包)被发出时,OVS内核模块会先收到这个packet。但是内核模块现在还不知道如何处理这个包,因为所有的OpenFlow都存在ovs-vswitchd,因此它的默认行为是将这个包上送到ovs-vswitchd。ovs-vswitchd通过OpenFlow pipeline,处理完网络数据包送回给OVS内核模块,同时,ovs-vswitchd还会生成一串类似于OpenFlow Action,但是更简单的datapath action。这串datapath action会一起送到OVS内核模块。因为同一个网络连接的所有网络数据包特征(IP,MAC,端口号)都一样,当OVS内核模块收到其他网络包的时候,可以直接应用datapath action。因此,这里将OVS内核模块与OpenFlow协议解耦了,OpenFlow的小改动影响不到内核模块。

【干货】网络工程师人手必备的常用网络命令合集,吐血整理!

这样,成功的解决了之前的问题。首先,内核模块不用关心OpenFlow的变化,不用考虑OpenVSwitch的代码更新,这些都在ovs-vswitchd完成。其次,整个网络连接,只有首包需要经过OpenFlow pipeline的处理,其余的包在内核模块匹配网络包特征,直接应用datapath action,就可以完成转发。

OVS内核模块通过缓存来保持datapath action的记录。稍微早期的内核模块实现了名为microflow的缓存,这个缓存就是一个hash map,key是所有OpenFlow可能匹配的值对应的hash值,包括了网络2-4层header数据和一些其他的metadata例如in_port,value就是datapath action。hash map可以实现O(1)的查找时间,这样可以在OVS内核模块中实现高效的查找转发。

看起来似乎是个完美的方案,但是在实际应用的时候存在一些问题。

那这个问题该如何解决?下面细细道来!

OpenVSwitch,不论是用户空间的ovs-vswitchd,还是内核空间的kernel datapath,最核心都是要实现一个查找算法。对于ovs-vswitchd,需要根据网络数据包的特征(2-4层包头,metadata)从一个个的OpenFlow Table中查找OpenFlow规则。对于kernel datapath,也需要根据网络数据包的特征,从cache中查找datapath actions。OpenVSwitch实现了一个统一的查找算法:TSS(Tuple Space Search),这本质上是一个hash 查找算法。

私信小编,发送“资料包”,领取网络工程师入门大礼包
更多网工提升干货,请关注公众号:运维法拉令

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/206517.html