
关于Juniper内容,欢迎一起探讨。
By NP&IE高级群 69- de∞德哋
永远记得Juniper的接口上可以同时配置多个IP地址,并且最低IP地址为primary地址。在配置时记得将以前的接口删除!
RE:Routing Enginee
Show interface terse
显示接口简要信息
接口顺序:FPC->PIC->Port->Unit
排序:FPC从左到右,上到下,依次0到3;PIC和Port均为上到下,右到左,0开始数
Show interface terse | match inet
管道命令,匹配输出有INET字符的东东
命令RUN 等于cisco 里面的do
例如config t > do show run = configure > run show
结构树:
Commit : JUNIPER 默认修改配置后不会立即生效,会存放在Candidate Configuration文件下(目前使用的是active configuration文件),可以通过使用Commit来应用
可以使用”load merge terminal”命令,将配置文件从命令行中粘贴输入。
JUNIPER分为permanent interface(永久接口)及transient interface(瞬时接口):其中PERMANENT interface于管理使用。FXP0接口就是其中之一,仅用于远程TELNET管理使用;FXP1用于运行使用,转发表通过RE更新就是用FXP1接口。
Transient interface指一般转发数据用的接口,
JUNIPER的接口至少需要拥有一个逻辑接口,call a unit.
当接口上面配置了多个IP地址(如192.168.0.1/24及10.0.0.1/24),如果发送目的地非本地(如1.1.1.1),那么JUNIPER则会选择自己IP最低地址的为PRIMARY ADDRESS,作为源地址发送包出去。如果目的地址为本地之一,则取之。(如192.168.0.200,那么源IP就是192.168.0.1这个接口IP)
MTU:点到点链路(PPP、ATM、FR)一般为4470bytes,MPLS为4458,
广播链路中(ethernet)为1500,ISIS为1497byes,mpls为1488
MTU有interface MTU和Protocol MTU两种,INTERFACE MTU是指物理接口上最大可以发送的MTU。它包含所有层二的头,例如目的MAC地址或MPLS,(CRC不包含在内);
Protocol MTU是指:每一个封装类型,拥有的净荷信息长度。
关闭接口命令有两种:
Disable,就像administrator shutdown,仅仅禁用改端口(赔置仍在)
Deactiveate,就让路由器直接忽略该接口,就像从来没有配置过这样。
Monitor interface: monitor interface fa-2/0/0 监控该端口的流量状况
Monitor traffic interface : 监控某端口的数据包出入情况(明细),但会影响路由器性能 monitor traffic interface fa-0
Juniper 可以使用Remote loopback 或 local loopback 模式对接口进行环路测试[可以测试物理线路是否通,但无法测试信号质量]:
Local loopback模式:用于测试PIC物理上的错误,它让PIC仅接收属于自己的环路信息,而忽略其它从CSU上接收到的数据信息。[即系点样….?]通过查看Keeplive和Device flags信息可得知PIC工作是否正常.
命令:[edit interface t3-1/2/0]set t3-options loopback local
Remote loopback模式:接口会将所有从CSU收到的数据包立刻回传给CSU,从而检测中间链路是否正常.[仍然是?]
命令:[edit interface t3-1/2/0]set t3-options loopback remote
Juniper还可以用BERT(Bit Error Rate Test)测试链路的信号质量(可能指的是误码率?),支持T1/E1、T3/E3、CH DS3、CH OC-12、CH STM-1接口。
配置好BERT的周期(BERT-period)及运算方式(BERT-algorithm)、BERT-ERROR后,使用命令test interface t3-1/2/0 t3-bert start 开始,test interface t3-1/2/0 t3-BERT stop 停止
察看BERT测试情况,可用 show interface t3-1/2/0 extensive | find bert ,
静态路由:Juniper的静态路由有静态路由、聚合(aggregate)路由、生成(generate)路由3种
静态路由有6个下一跳属性:
1)直连IP地址:直连的接口IP地址
2)递归路由:可以使用递归路由,路由器会递归查看inet.0表里面的下一跳地址进行查询。(配置路由时,需要添加 resolve 关键字)
3)Reject:丢弃该包,并且翻回一个ICMP表示目的地址不可达
4)Discard:同样丢弃该包,但不返回ICMP包
5)Qualified next hop:我都唔明…
6)LSP:可以使用MPLS中的LSP值作为下一跳地址封包
配置方法:[edit routing-options]下:set static route 192.168.0.0/16 next-hop 1.1.1.1
静态路由的几个属性:
Active和passive: ACTIVE是默认属性,当下一跳不可用时,从路由表删除;passive指无论下一跳是否可用,均保留在路由表(永久路由);
Metric和 Preference : Preference 等于该路由的管理距离(AD);METIRC值就是度量,若有多条同Preference值的路由存在,则取值低的。
配置方法:[edit routing-options]下:set static defaults preference 200
聚合(aggregate)路由:将多个IP路由,汇总成一个单独的路由。至少有一个聚合路由中的明细有效时,该聚合路由才生效。它的preference为130。
聚合路由只有2个可用的next-hop属性:rejuect和discard
配置方法:[edit routing-options]下:set aggregate route 192.168.0.0/17
Show route protocol aggregate detail 可检查
生成(Generated)路由:其实同aggregate聚合路由差不多,唯一的区别就是生成路由的细致路由必须指定一下跳地址,或者是点到点接口.(discard和reject的路由不会当成细致路由)。生成路由将使用细致路由中的最细前缀(一样则IP)作为下一跳主地址。
配置方法:[edit routing-options]下:set generate route 192.168/16
Show route protocol generate detail
JUNIPER中的preference默认值:
负载均衡:juniper中默认没有为静态路由开启负载均衡。
可用命令查看实际转发表:show route forwarding-table match 192.168.80/24 |前缀24相同的转发表
若需要开启负载均衡需要使用自定义的策略:
[edit routing-options]Set forwarding-table export 策略名(aaa)
定义的策略为:
Policy-options{
Policy-statement 策略名(aaa){
Then {
Load-balance per-packet;
}}}
路由策略:
在JUNIPER中,默认RIP和OSPF、ISIS都不通告路由给邻居路由。以及可以在单个接口中应用多条策略。(可能是指应用policy-statement的情况下,若没有应用则通告)
在JUNIPER里,policy-statement 若最后没有匹配任何term,将作accect处理!所以建议在最后then -> accecpt 或 discard 作明文描述。
若在policy调用子程序进行判断,那么子程序不能修改任何参数。并且子程序返回的值只是match或unmatach,具体执行permit与deny还是要看主程序。
如:错误示范
#show policy-statement main-policy
Term subroute-as-mtach{
From policy sub-policy; //引用子policy
Then accept;} //若匹配子程序,则ACCEPT;
//若不匹配,则作默认行为(ACCPET BGP)
#Show policy-statement sub-policy
Term get-routes {
From protocol static;
Then accept;} //若协议是STATIC,那么就反回true值给主程序,执行动作
Term deny-BGP {
From protocol bgp; //若协议是BGP,那么就返回falue值给主程序,执行主程
Then reject;} 序的下一个term
在实际情况中,该策略将permit所有的BGP路由。
路由条件语句有from 和 to ,常用from,可选参数有下列及”route-filter”(路由条目信息)
在条件语句里面,一般是使用逻辑AND进行判断,但是若涉及到route-filter时,则route-filter内部使用or进行判断。注:route-filter 是使用or,它会按照最长条目进行判断,无论符合与否,只判断一次。
例:policy-options{
Policy-statement 路由名{
Term term策略一{
From {
Route-filter 192.168.0.0/16 orlonger;
Router-filter 192.168.0.0/24 exact;
}then accept; }}}
若有一个条目为192.168.0.128/25的路由想加入路由表,运用这个策略,那么这条路由将不会加入!(因为路由器将先进行匹配,192.168.0.128/25与192.168.0.0/24最接近[24位精确于16位],所以它进行判断,然后不符合192.168.0.0/24 exact,所以将跳过这个term。
Route-filter的几种语法:
1)exact ,只有完全匹配才会被选择。
如route-filter 192.168.0.0/16 exact;即仅指192.168.0.0/16这条路由(更细致的都不作考虑,如192.168.1.0/24则不选择)
2) orlonger, 与这条条目相符,以及更具体的都会被选择。
如route-filter 192.168.0.0/16 orlonger; 即指192.168.0.0/16这条路由和更具体的路由,含192.168.1.0/24等)
3) longer, 仅比这条路由更具体的才会选择(不含此路由).
如route-filter 192.168.0.0/16 longer; 192.168.0.0/16不会选择,但192.168.0.0/17 或192.168.2.0/24 则会被选择.
4) upto; 前缀在这两个数字之间,含这两个数值
如route-filter 192.168.0.0/16 upto /18 ,指/16和/18之间都树都会被选择,包含/16和/18
5) prefix-length-range; 前缀在两个数值之间的会被选择,含这两个数值
如 route-filter 192.168.0.0/16 prefix-length-range /17-/18; 指在192.168.0.0/16这个树中,192.168.0.0/17和/18之间的都会被选择,例如192.168.128.0/17,192.168..0/18等.但不包括192.168.0.0/16
6) through ;指在这两个条目之间的单个点被选择
如 route-filter 192.168.0.0/16 through 192.168.128.0/19 ; 指的是192.168.0.0/16、192.168.128.0/17、192.168.128.0/18、192.168.128.0/19
Juniper可以使用命令:
Show route receive-route 查看在策略生效前的路由
Show route advertising-protocol 查看经过策略过滤后,向邻居通告的路由
命令:应用策略给路由接口
[edit protocol ospf]
set export [ 策略1 策略2]
JUNIPER通配符定义:
* //所有匹配,不数量,any
. //单个字符 如” 1.1 “ = 111 or 121 131 141
$ //以xxx结尾,如 65009$ ,
+ //包含至少1个字符
? //可有可无,0或1 个字符
() // 空值,null
“ .* 65009 .+ “ 中间包含65009,并且最后仍有一个AS
“.* 65009” 以65009结尾,前面数量不限
“.* (65001 | 65002 ) //前面数量不限,以65001或65002结尾
RIP:
Juniper默认不会为路由器应用带毒性的水平分割;
同样Juniper都不会在边界路由自动汇总有类路由协议(RIP);
Juniper里面,RIP必须自定义neighbors和group,才会接收该邻居发过来的路由条目!(neighbor指定的是接口,其中就即系系个接口上面开启RIP。但要记住,默认是不会向外通告RIP信息的,例:
[edit protocols]
Rip{
Group neighbor-routers {
Neighbor fe-0/0/0.0;
Neighbor fe-0/0/1.0}
}
上述的仅仅是从指定的接口接收路由条目,并不会向外通告。若需要向外通告,还必须定义相关策略并且应用:
policy-statement 策略1-允许通告自己直连的路由出去{
term 宣告直连条目{
from protocol direct;
then accept ;
}}
Policy-statement 策略2-允许通告从RIP学来的信息{
Term 通告RIP信息{
From protocol rip;
Then accept;
}}
[edit protocols]
Rip {
Group neighbor-routers{
Export[策略1 策略2];//将上面两条策略应用在RIP出口
Neighbor fe-0/0/0.0
Neighbor fe-0/0/1.0
}}
RIP中过滤不想要的路由条目:例如想过滤192.168.0.0/16及更详细的路由
[edit policy-options] //定义策略
Policy-statement 策略3{
Term 过滤term{
From {
Protocol rip;
Route-filter 192.168.0.0/16 orlonger;
}
Then reject;
}}
[edit protocols]
Rip {
Group neighbor-routers{
Neighbor fe-0/0/0.0 {
Import 策略3 ; //从接口上接受到192.168.0.0/16及更具体的路由将会被reject
}
Neighbor fe-0/0/1.0;}}
OSPF:
配置方式:JUNIPER是在接口上面配置区域,并运作。如:
[edit protocol ospf ]
Set area 0 interface all
Set area 0 interface fxp0 disable
Set area 1 interface so-0/0/0.100
注意:必须在逻辑接口上面配置,若不指定逻辑接口则默认为.0 。
例如:若配置了set area 0 interface so-0/0/0 (没有指定逻辑接口)
那么,JUNIPER默认将会指向逻辑接口0(则系统定义变成 so-0/0/0.0
Show ospf database router,中看见的bits 值分别为V/E/B(000)3个bit,其中若v=1,代表Virtual Tunnel;E=1,代表该ROUTER是ASBR;B=1,代表该ROUTER是ABR。
例如: bits=0x3 (011,即为ASBR及ABR) ;bits=0x1 (001,即为ABR)
ABR永远将不会从另一个ABR学习来的3类LAS放进路由表,以防止环路。(所以,必须通过区域0,才能学习TYPE3的路由)
地址汇总:用在ABR上,使其它区域通告去BACKBONE(area 0)的Type 3(summary LSA)数量减少。(需要注意的是,若使用虚链路,远端ABR一般含有2个AREA,这两个AREA亦需一同通告,包括中间区域)
例如:area 0 {
Interface fe-1/1/1};
Area 1 {
Area-range 192.168.32.0/20; //向AREA0通告,当范围为192.168.32.0/20内的条目,合成一条通告
Interface fe-1/2/3};
地址汇总时,若需要汇总NSSA区域,亦要填写范围。
Area 3 {
Nssa
Default-lsa{
Default-metric 25;
Type-7;}
No-summaries;
Area-range 172.16.0.0/16; //NSSA的汇总,告诉ABR将范围内的NSSA汇总成为一条TYPE5的汇总路由宣告出去给其他区域.
}
Area-range 192.168.48.0/20 //平时的汇总,仅表示将48.0/20汇总至AREA 0
ISIS:
3个必须配置的步骤:
1.必须先在loopback接口配置NET ID,建议配置在loopback 0 。(注意,貌似这个接口也要通告出去?)
[edit interface lo0 unit 0]
Set family iso address 47.0123.4560.70.1234.1234.1234.00 //记得最后的.00
2.JUNIPER的路由器默认只接收IP包,需要配置其允许接收IS-IS的数据包.
[edit]
Set interface fe-0/1/0 unit 0 family iso
Set interface ee-0/0/2 unit 101 family iso
3.最后在ISIS路由协议里面配置其参与路由的接口,与Level Type.
[edit protocols]
Isis {
Level 1 disbale;
Interface e3-0/2/0.101;
Interface e3-0/2/3.100
Interface lo0.0;
Interface fxp0.0 {
Disable;
}
}
BGP:
BGP的几种特性:
1.不同AS之间建立的是EBGP,默认的TTL为1,所以当指定neighbor时为对方loopback接口,需要手动更改。
2.路由器会宣告从EBGP学习来的路由给IBGP;路由器会宣告从IBGP学习来的路由给EBGP邻居,但路由器不会再次宣告从IBGP学习来的路由给自己的IBGP邻居。所以,AS内部的所有IBGP路由器一般要求全互联。(只有从EBGP学习的路由才会发给自己的IBGP邻居)
3.当路由器向IBGP PEER宣告从EBGP学习来的路由时,默认情况下不会更改学习来的Next hop地址。(此举可能导致IBGP PEER学习到的路由next hop不能达到,从而不放进路由表。所以,可能需要边界路由器将自己的Loopback设置为next hop)
BGP中几种属性的种类:
Well-know : 所有router必须认识这个属性
Optional : 允许有部分router不支持这个属性
Mandatory: 强制发送给每个ROUTER
Nontransitive :仅本地AS有效,禁止传给邻居AS
Transtive :必须宣告给每个PEER
Discretionary :无需强制宣告这个属性
Origin—说明这条路由的起源。(这个路由最初是怎么得知的,如IGP/EGP/incomlete)
AS-PATH ---说明这个路由经过哪些AS
Next-hop ----路由器通过递归查找是否有可用的下一跳(如无则不放入路由表)[注意,当宣告从另一个EBGP学习来的路由起IBGP时,这条路由可能会使用学习回来的下一跳。可能导致IBGP无法达到下一跳,所以建议修改]
MED --- 当有多条链路与同一个AS连接时,用于宣告给邻接AS,使用哪条路到达自己的AS。(MED不会跨越AS传播,例如当前AS不会将从AS1中收到的MED,传播给同是邻接的AS2)[默认情况下,只有当一个BGP路由是从同一个邻接AS中学习回来的情况,才会比较MED值 JNCIS-337]
Local Preference --- 用于选择更优先的路传送数据给另一个AS。(仅本地AS有效)
Atomic Aggregate --- 貌似JUNIPER无用。关于细致路由选路用。(JNCIS-265)
Aggregator --- 汇总路由。(汇总路由里,至少有一个子路由是从BGP学习回来才加进路由表)
Community --- 用于对路由条目的管理。(一个Communtiy可分配给多条路由;同样,一条路由可有多个Community)
Well-Community --- community的几个属性,包括no-export ; no-advertise ; no-export-subconfed
No-export :若使用此属性,当宣告路由给邻AS时,但邻接AS不会再宣告给其邻接的AS。Community值为 0xFFFFFF01
No-Advertise: 若用此属性,则只宣告给自己的Peer。而自己的PEER不会再向外宣告。Community使用得值为 0xFFFFFF02
No-Export-Subconfed: 5明,JNCIS-268
BGP的几种建立状态关系顺序:
1.idle -初始化中,什么都不干
2.connect -已经发起TCP连接,并等待对方peer确认.
3.1 active -无法与对方建立TCP连接,并再次尝试中
3.2 Openstat -已经成功建立TCP连接,并发出Open Message.等待对方确认
4.Openconfirm -成功建立,并转入Established状态
5.Established -完成
BGP中路由的选项顺序: [JNCIS-277]
1.首先看Next Hop 自己能否达到,若不能,则丢弃
2.选择最高的Local Preference 值的路由
3.若2项相同,选取经过AS路径最短的路由
4.若上述相同,优先选择最初来源是从IGP>EGP>incompete学习来的路由;
5.上述相同,选择相同AS中最小的MED值(一般仅会发生路由是从同一个AS学回来的情况)
6.上述相同,优先选择是从EBGP邻居宣告来的路由;其次才是IBGP邻居宣告来的.若所有路由都是从EBGP学,则跳去第9步
7.若路由都是从IBGP学习来的,选择到达NEXT HOP最低的IGP路由度量;
8.If route Relfection is used for IBGP peering,the router selects the route with the shortest Cluster-list length.? [某个属性]
9.若路由都是从EBGP学习过来,则选择最低的RID值
10.若RID值相同,则选择最小的对等体地址.
Multipath: 允许从多个物理链路宣告的的路由的下一跳加进路由表。(必须是同一个邻AS) 其中就是到了判断RID那一步,就跳过判断。然后将所有符合上述的一同加进路由表。用于本地一个EBGP与邻接AS多个不同的EBGP相连时。[见JNCIS-P281例]
Multihop : 默认情况下,EBGP建立邻居,只允许物理上。若需指定Loopback地址为remote-address,则需开启multihop.
BGP的自动负载均衡:若路由器从同一个ibgp peer中,学习到多条路由。并且自己有多条路径到达这个IBGP PEER(路径度量一致)。那么,从这个IBGP PEER学习回来的路由,本地路由器会将每条路由的下一跳将轮流分配为这两个地址,从而允许负载均衡。[JNCIS-287]
最大接收的路由条目(Prefix Limts):
[bgp group EBGP]
Type external;
Family inet{
Unicast{
Prefix-limit{
Maximum 10; }}} //从1.1.1.1接收来的路由条目大概为10条
Teardown idle-timeout 2 //使用teardown,上面得值则为确切数字,idle-timeout 是指当超过10条后,在2分钟内将PEER的连接设置为idle.
Peer-as 65000;
Neighbor 1.1.1.1;
Route-Damping: 防止当邻接EBGP不断宣告/撤回路由时(链路不稳定),将这些可能导致内部IBGP震荡的信息拒绝。[JNCIS-301]
配置步骤:
1.在Routing-options中定义自己的AS编号。
[edit]
Set routing-options automous-system 20 //定义本地AS为20
2.定义group中的neighbor IP地址及AS号。及指定建立的是IBGP还是EBGP
[edit protocols bgp group group的名称]
Set neighbor 172.16.1.1 peer-as 10
Set neighbor 172.16.2.1 peer-as 30
Set type externa|internall //定义这个GROUP是EBGP还是IBGP
Set local-address 1.1.1.1 //与对方建立TCP连接的IP地址,注意该地址需要与对方路由器指定自己的neighbor一致
·默认情况下,必须手动在BGP下配置EXPORT策略,才会发布从IGP学习到的路由去BGP, 定义IGP路由发布到BGP里面.配置方法:
1.首先定义策略:
Policy-statement 策略1{
Term 链1 {
From protocol static; //发布直连的路由
Then accept;}}
2.在GROUP那里运用在出站接口,以便通告给指定的neighbor
[edit protocols bgp group group名称]
Set export 策略1
#show
Group group名称{
Type internal;
Local-address 1.1.1.1
Export 策略1
Neighbor 192.168.1.1
Neighbor 192.168.2.1}
·默认情况下,当路由器向IBGP邻居宣告从EBGP学习来的路由时,不会改变其next hop地址。可能必须手工更改自己为下一跳,以便自己的IBGP邻居能够拥有可达的next hop地址:
1.建立策略
Policy-statement 策略5{
Term change-the-attribute{
From protocol bgp; //所有从BGP学习来的路由
Then {
Next-hop self; //宣告出去时,都更改下一跳地址为自己 }}}
2.应用在指定GROUP(IBGP邻居)的export上。
Group ibgp-peer{
Type internal;
Local-address 1.1.1.1;
Export 策略5; //当宣告给2.2.2.2和3.3.3.3时,将应用策略5
Neighbor 2.2.2.2;
Neighbor 3.3.3.3;}
注意:不用将next-hop self这个属性的策略应用在入站的EBGP对等体上。否则将会引起所有入站路由都不显示在路由表-因为没有正确的下一跳地址。
Firewall Filter:类似CISCO的ACL
在修改filter时,建议使用命令commit confirmed 2(在2分钟内没有确认时,ROLLBACK。以防自己被档在外面)
JUNIPER使用FIREWALL FILTER必须有Internet Processor ASIC支持(show chassis hardware)
一个接口可以同时应用多个POLICER,但是只能应用一个Filter。
若在FILTER上加上LOG,它会计算500条记录,并且不保存在硬盘上面,而是保存在?
若在FILTER上面加上syslog,它就会计算机在RE的硬盘上面。(就是平时的show log message)
若在loopback0上应用FILTER,则表示在RE上面应用。Loopback0上面应用包括telnet和ssh。注意!若在LO0上应用FILTER,必须允许相应路由协议流量在上面通过,否则可能无法正常收敛路由协议!
若应用一个含有policer(with bandwitdth-limit 400K)的FILTER在多个接口上,默认情况下这些接口全部都会分享这一个400K。可以在policer下面加入参数if-exceeding,来给每个接口都分别应用一个速率。
相关配置:
[edit interface fe-9/0/0]
Unit 0 {
Family I net {
Filter {
Input filter-nameA; //应用入站FILTER
}
Policer{
Input policer-input-name //应用入站的policer
Output policer-output-name //应用出站的POLICER
}address 1.1.1.1/24;}}
[edit firewall]
Policer policr-input-name{
If-exceeding{ //指定这个POLICER是每个接口计算
Bandwidth-limit 10M; //承诺速率10M
Burst-size-limit 100K; //特发流量100K
}
Then {
Discard;}} //超过丢弃
Show BGP summary
Show BGP group
Show BGP neighbor
Show route receive-protocol bgp 192.168.7.7 //观察从7.7学习来的路由条目
Show route advertisting-protocol bgp 192.168.5.5 //观察发布去5.5的路由
疑问:
究竟”save common” 中的COMMON是一个文件名,还是指定命令?
可以使用”load common override”或”load common merge” 进行加载配置文件,但使用merge时,如果Candidate及Common文件均同时有同一个项,不同的值,会怎么取舍?
究竟loopback同的remote和local究竟是怎么运作的?
