Juniper
模拟器使用指南
Maa 2007-5-19 BJ
前言
本文的立意是在没有友商设备的情况下,利用
VMware
模拟器实现对友商设备协议部分内容的分析,对于新业务的理解和开发以及与友商设备的互通有着一定程度的帮助。
在此特别感谢蛋蛋同学,在他的个人网站nio.name
上我知道了Juniper
的这个模拟器,并且从此入门,再次向他致敬。
PS:删除了自己新浪blog上的内容,将这一篇文档转移到51上来。
资源准备
VMware 5.5
模拟器软件
Named Pipe TCP Proxy
软件
JUNOS 8.1R1.5
(提供封装好的
VMware
文件,我也是从蛋蛋的网站上获得的)
软件安装
分别安装
VMware
和
NPTP
软件,在此不对软件的安装进行说明,按照对应软件的默认提示安装进行即可。
软件使用
NPTP
:
其作用有点类似于部门使用的串口服务器,它把设备的串口和一个(
IP+
端口)对映射在一起,我们只用
telnet
这个
ip
的对应端口,就可以获得相当于访问该设备串口的服务。
按下图建立一个串口和(
IP+
端口)对的映射就可以了。
在建立好上面的映射关系后,保持
NPTP
软件始终打开就行。
VMware
用
VMware
打开封装成
VMware
文件的
JUNOS
后如下图所示:
该图是一个还未启动的
JUNOS
,可以看到上面的一些
Devices
,比如内存,硬盘,网卡以及串口(
Serial
)和
CPU
,都是可以编辑的,这里我们对
Serial
进行编辑,使其能够和
NPTP
软件设置的映射关联起来。双击
Serial
图标,弹出
[Serial port]
的对话框,设置其中的
[Connection]
部分,采用
[Use named pipe]
方式,并将
named pipe
设置为和
NPTP
软件中一致的
named pipe
,如下图所示。
这时,如上图中的
junos2001
、
junos2002
和
junos2003
分别代表三台
Juniper
的路由器,其中每台路由器具备
4
个网口。可以通过对网口的编辑,让路由器之间能够互通。双击网卡,通过弹出的
[Network adapter]
对话框可以看出网卡有四种类型,其中用户自定义类型可以通过自定义方式在
window
操作系统下产生一个虚拟网卡,使得虚拟机设备可以通过该虚拟网卡和
windows
操作系统通信,以便可以比较方便的抓包。
上面的相应配置做好之后,启动虚拟机,这时虚拟机界面会一直停留在如下图的界面,这是正常的。此时,请打开你的终端控制台,使用
telnet
方式访问之前通过
NPTP
软件设置好的
ip
地址和端口号,就可以看到本来是串口上看到的启动信息,等待系统启动完毕,会提示输入用户名和帐号。此后就可以正式配置
Juniper
的路由器了。
JUNOS使用
JUNOS
的配置模式:按我的理解
JUNOS
有三种模式
@%
操作系统模式,处于
FreeBSD
操作系统,可以使用常用的
FreeBSD
相关命令,比如
ls
、
pwd
、
cd
等等,通过命令
cli
可以进入用户模式;
>
用户模式,经过
JUNOS
封装的系统,可以进行一些简单的命令配置和所有信息显示,类似于我司路由器的
config t
之前的模式,使用
configure
命令可以进入配置模式;
#
配置模式,在此模式下对路由器进行配置,类似于我司路由器的
config t
之后的模式。
JUNOS
的命令风格:
JUNOS
的命令风格在业界很特别,仅与
Alcatel
的命令风格略有相似之处。这里只作简单的介绍,具体的使用希望大家钻研。
JUNOS
采用
edit
、
set
、
delete
、
show
、
run show
和
commit
来完成主体功能的配置。值得注意的是,在完成了某项功能的配置之后,只有使用
commit
命令提交成功之后,该配置才会生效,在
commit
提交之后,系统会对提交的配置进行合法性检查,只有通过合法性检查才算提交成功,否则系统会给出错误信息。合法性检查仅检查配置的合法性,并不检查配置的准确性与正确性,请注意。
RSVP的相关配置
RSVP
功能主要从
interfaces
、
protocols
和
routing-options
三个方面进行配置。
Interfaces
初始时,
interface
视图下是没有什么配置的,但是我们可以通过
(run) show interfaces terse
命令看到有
em0
到
em3
四个网口,这就是我们虚拟机里看到的四个
intel
千兆网卡。
这样,我们需要给对应的网卡和
lo0
配上需要的
ip
地址。
完成如下的配置即可
当完成了上述配置之后再显示接口信息会如下图。
值得注意的是,进行
TE
的相关配置时,物理接口必须支持
mpls
协议族,即
family mpls
。同时给物理接口配置了地址之后,可能使用上面的命令看不到具体的地址信息,并且也
ping
不通对端接口,这是正常的,应该是模拟器的原因,这时候需要保存一下配置,重启模拟器,就正常了。
Protocols
Protocol
视图下,需要编辑三个对应的子视图,
rsvp
子视图、
mpls
子视图和
ospf
子视图(视具体选用的
igp
而定)。
Rsvp
子视图的配置如下:
在子视图下添加
rsvp
接口,即使能对应接口的
rsvp
功能即可,这类似于我司设备在物理接口下使能
te
功能和设置带宽参数。
Mpls
子视图的配置如下:
在该视图下,首先也要添加
mpls
接口,其次在
te
隧道和其路径的配置都在该视图下进行,上图中的
lsp
和
path
分别对应
te
隧道和显示路径,其他的一些属性配置整个业界大致都是一致的,仔细找下具体的命令即可,这里主要描述一个配置框架,不对细节太过于描述。
Ospf
子视图的配置如下:
在子视图下添加
ospf
接口,并配置
ospf
支持
te
,与我司设备配置一致。这里需要注意的是,由于模拟器的原因,
ospf
不能支持组播,所以需要将
ospf
接口类型设置为
nbma
,并且显示指定
ospf
邻居,才能触发
ospf
发送单播的协议报文,建立
ospf
邻居,还有哪些方式可以实现同样的功能,个人没有去探究,因为在这里重点关注的是
te
而非
ospf
,望谅。
相关附件
一个较完整的配置和相关
lsp
的显示信息
root@% cli
root>
root> configure
Entering configuration mode
Users currently editing the configuration:
root terminal d0 (pid 3417) on since 2007-04-22 21:26:51 UTC
[edit protocols]
[edit]
root# run show configuration
## Last commit: 2007-04-22 21:31:39 UTC by root
version 8.1R1.5;
system {
root-authentication {
encrypted-password "$1$67/rC6nA$NeboJ.WtV2i2UNzJHAyZT/"; ## SECRET-DATA
}
login {
user mafm {
uid 2000;
class super-user;
authentication {
encrypted-password "$1$sp2gEjZW$RSjEalukJwDsrMZplbM 7L 0"; ## SECRET-DATA
}
}
}
services {
telnet;
}
}
logical-routers {
J2001;
}
interfaces {
em0 {
unit 0 {
bandwidth 2m ;
family inet {
address 192.168.22.201/24;
}
family mpls;
}
}
lo0 {
unit 0 {
family inet {
address 202.1.1.1/32;
}
}
}
}
routing-options {
static {
route 0.0.0 .0/0 next-hop 192.168.22.1;
}
router-id 202.1.1.1;
}
protocols {
rsvp {
interface em0.0 {
bandwidth 2m ;
}
interface em1.0;
}
mpls {
traffic-engineering mpls-forwarding;
admin-groups {
gold 1;
silver 2;
copper 3;
best-effort 4;
}
class-of-service 0;
label-switched-path frr {
to 202.1.1.3;
record;
admin-group include-all [ silver copper ];
fast-reroute;
primary lsp1;
}
label-switched-path bypass {
disable;
to 202.1.1.2;
primary lsp2;
}
path lsp1 {
192.168.23.203 loose;
}
path lsp2 {
192.168.23.202 strict;
}
interface em0.0 {
admin-group [ gold silver copper best-effort ];
}
interface em1.0;
}
ospf {
traffic-engineering {
shortcuts lsp-metric-into-summary;
}
are a 0.0.0 .0 {
interface em0.0 {
interface-type nbma;
priority 10;
neighbor 192.168.22.202;
}
interface lo0.0;
interface em1.0 {
interface-type nbma;
priority 20;
neighbor 192.168.23.202;
}
}
}
}
[edit]
root#
[edit]
root#
[edit]
root#
[edit]
root#
[edit]
root# run show mpls lsp
Ingress LSP: 1 sessions
To From State Rt ActivePath P LSPname
202.1.1.3 202.1.1.1 Up 1 lsp1 * frr
Total 1 displayed, Up 1, Down 0
Egress LSP: 0 sessions
Total 0 displayed, Up 0, Down 0
Transit LSP: 0 sessions
Total 0 displayed, Up 0, Down 0
[edit]
root#
[edit]
root#
[edit]
root# run show mpls lsp extensive
Ingress LSP: 1 sessions
202.1.1.3
From: 202.1.1.1, State: Up, ActiveRoute: 1, LSPname: frr
ActivePath: lsp1 (primary)
FastReroute desired
LoadBalance: Random
Encoding type: Packet, Switching type: Packet, GPID: IPv4
*Primary lsp1 State: Up, COS: 0
SmartOptimizeTimer: 180
Include All: copper silver
Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 51)
192.168.22.202 S 192.168.23.203 S
Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt):
192.168.22.202 192.168.23.203
5 Apr 22 21:31:39.541 Selected as active path
4 Apr 22 21:31:39.523 Record Route: 192.168.22.202 192.168.23.203
3 Apr 22 21:31:39.523 Up
2 Apr 22 21:31:39.458 Originate Call
1 Apr 22 21:31:39.458 CSPF: computation result accepted 192.168.22.202 192.168.23.203
Created: Sun Apr 22 21:31:38 2007
Total 1 displayed, Up 1, Down 0
Egress LSP: 0 sessions
Total 0 displayed, Up 0, Down 0
Transit LSP: 0 sessions
Total 0 displayed, Up 0, Down 0
[edit]
root#