Tag-switching mtu
Hi All,
We are wondering ,what would be the effect on performance of the traffic,where higher tag-switching mtu values are set (for example 4470 bytes).
I guess we should be fine with a maximum value of 1516 bytes instead of 4470.We are currently set with Tag-switching mtu value of 4470 and considering to change to 1520,is there any perfomance improvement by doing that. Any help would be appreciated.
Thanks
Regards
Anantha Subramanian Natarajan
Hello Anantha,
4470 is the default MTU size on WAN links like ATM (every speed) and POS or serial (T3 or E3).
But usually on the path of user data the first and the last hop are LAN segments (and there can be intermediate hops when moving data inside a Provider POP).
So a so high MTU is not used actually by user data: at least on the user side the IP MTU is 1500 bytes.
On the server side you can enable jumbo frames for server-to-server communication.
And what is important to take in account is that MPLS frames cannot be fragmented or they can go out a link or they are discarded.
The size can be calculated by thinking of:
an IP MTU of 1500 bytes needs to be carried in any case.
a L3 MPLS VPN would require a two label stacks.
More complex scenarios involving MPLS TE used to carry MPLS VPN traffic require a deeper stack.
Then if you offer Carrier Supporting Carrier sevices for example the stack is longer.
If you provide a EoMPLS service to someone using it to carry an MPLS VPN you may need 1534 bytes MTU (I did some calculations for a merge of two providers)
It is also important to increase the MTU on intervening L2 switches inside your POPs this has to be considered and implemented too.
This can be part of the problem a L2 switch on the path not configured to handle the added MPLS overhead and so causing some packets to be dropped.
The benefit of using an MPLS MTU of 1520 is that you don't leave space to possible ambiguities on what can travel on the MPLS backbone end-to-end.
Hope to help
Giuseppe
Similar Messages
-
URGENT - tag-switching over gre-tunnel - how ??
hi,
my problem is that i want to connect two pe-router
over a gre-tunnel.
this is because between the two pe´s i unfortunatly have two cisco828 router as modemrouter inbetween which do no tag-switching.
so i decided to use a gre tunnel between the two pe´s to do tag-switching.
but if i want to forward packets greater than 1492 bytes and the df-bit is set - no chance.
here is the figure and config of the two tunnels:
c3640 - c828 -LINE- c828 - c3640
<==========TUNNEL===============>
first c3640:
interface Tunnel65052
description PE-PE Verbdg. Hoersching-Pasching
ip unnumbered Loopback0
ip mtu 1512
load-interval 30
tag-switching mtu 1512
tag-switching ip
keepalive 10 3
tunnel source 10.20.192.3
tunnel destination 10.20.192.6
second c3640:
interface Tunnel65052
description PE-PE Verbdg. Hoersching-Pasching
ip unnumbered Loopback0
ip mtu 1512
load-interval 30
tag-switching mtu 1512
tag-switching ip
keepalive 10 3
tunnel source 10.20.192.6
tunnel destination 10.20.192.3
on the 828 router i did no adjustment of mtu !
if i do a ping:
r-enns1#pi vrf lkg 172.16.169.121 size 1492 df
Type escape sequence to abort.
Sending 5, 1492-byte ICMP Echos to 172.16.169.121, timeout is 2 seconds:
Packet sent with the DF bit set
Success rate is 100 percent (5/5), round-trip min/avg/max = 208/211/212 ms
r-enns1#
r-enns1#
r-enns1#
r-enns1#
r-enns1#pi vrf lkg 172.16.169.121 size 1493 df
Type escape sequence to abort.
Sending 5, 1493-byte ICMP Echos to 172.16.169.121, timeout is 2 seconds:
Packet sent with the DF bit set
M.M.M
Success rate is 0 percent (0/5)
r-enns1#
please help - thanksHere's at least two options you could try:
1) Lower the MTU on the tunnel-interface and let PMTU on the endpoints take care of the fragmentation. This could have some serious implications all depending on the systems and applications/protocols used on the network, but in most cases it'll work just fine.
2) Simply remove the DF-bit on incoming packets to the router and lower the MTU on the tunnel-interface and let the router do fragmentation regardless of what the endpoints says. Since you have a 3640 on each end and 828's in the middle, I think it should be capable of this..
You should do a MSS-modification as well in both cases.
Change the MTU like this:
interface Tunnel65052
ip mtu 1488
tag-switching mtu 1500
Then you have set all IP-packets to maximum 1488 bytes (including headers) and let there be room for 3 MPLS labels...
At least I think it should behave like this... please don't kill me if i'm wrong.. :)
Remove the DF-bit with route-map's on the inside interfaces:
interface FastEthernet1/0.100
description inside interface
ip policy route-map clear-df
ip tcp adjust-mss 1424
route-map clear-df permit 10
set ip df 0 -
I'm trying to bootstrap myself on MPLS and ran into an unusual problem in the field.
We've got a mesh of routers setup to do tag switching amongst each other to support a few pseudo-wire MPLS point to point links for customers.
Our typical conf:
ip cef
mpls label protocol ldp
tag-switching tdp router-id Loopback0 force
int FastEthernet0/0
description WAN link
ip address 1.2.3.1 255.255.255.252
mpls label protocol ldp
tag-switching mtu 1532
tag-switching ip
int POS1/0
description Another WAN link
ip address 1.2.3.5 255.255.255.252
mpls label protocol ldp
tag-switching ip
int FastEthernet 2/0
description Non MPLS Cust Facing
ip address 10.10.0.1 255.255.255.0
int FastEthernet 2/1
description MPLS Pseudowire Cust Facing
mpls l2transport route 1.2.3.253 10101
Now, it was my understanding that the tag-switching mtu statement is only for tag-switched packets, untagged IP uses the interface's default mtu of 1500 if not otherwise adjusted. Someone removed the tag-switched mtu 1532 statement off a couple WAN links, and both MPLS and non pseudowire tagged traffic were affected. There was still basic L2/L3 connectivity, but larger IP packets were being dropped.
The observed behavior implied to me that all packets were being tagged, and reading up on the tag-switching command reference re-enforces that assumption. Dropping down to the lab, doing a ping between two routers with tag-switching setup and ldp neighborship established, neither echo requests or replies are tagged.
Where is the hole in my understanding of how this works?Your understanding is correct. By default LDP will allocate and advertise label for all prefixes and all traffic will be therefore label switched. You need to configure label filtering if you only need certain prefixes to have labels assigned and advertised by LDP.
Here's a brief example where only loopback addresses for the routers hosting the pseudowires are advertised.
no tag-switching advertise-tags
tag-switching advertise-tags for 1
access-list 1 permit 192.168.100.0 0.0.0.255
This same configuration need to be applied for all LDP enabled routers. It will only allow label advertisement for prefixes in the 192.168.100.0-192.168.100.255 range.
Regards -
Hi
I have 2 routers with a FE link,
7206 ---Trunk---> switch 3560-48 ---> link WAN with FE to ---> 3640 --trunk->sw3560-48-->customers,
my Internet access is via the 7206 router.
I need to stablish a ibgp session to configure VPN-MPLS for some services, i set the mpls parameters and is posible to stablish the session,
ip cef is on, and i can see the TDP Neighbor UP between 7206 and 3640.
I have a switch 3560-48 connected to the router 3640, the link its a trunk, so i can use these ports for
internet customer access.
well, when I apply the tag-switching ip or mpls ip ont the interfaces between 7206 and 3640 link,
the customers that have only internet access via the 3640 router have problems to browse, www.yahoo.com and some other pages.
When I remove the tag-switching ip or mpls ip
the service normalizes.
could somebody help me with this issue
Thank you
RolandoJon
Thank you for the information,
just to be shure,
I can use this command to modify the MTU on my switches?
sw(config)#system mtu 1520
so could you help me to define where i must to change the mtu because i am using trunks,
and which MTU must modify,
the mtu only or mpls mtu or both
i attach a diagram with the topology
Thank you for your help
Rolando -
Hello everybody,
I would like to get some advise in a tag-switching config in order to perform a testing: I have a Cisco 12012 and a Cisco 7507 each with a GigE interface. I would like to establish several tdp sessions using this single interface. I was thinking in creating sub-interfaces and to add a dot1.q vlan tag to each of them and then to configure tag-swithching in all of the sub-interfaces. I wonder if this might work.
I cannot perform this test right now since I have my equipment in different sites so if I am certain of this to work I might transport them.
I would appreciate any help!! :)
Thanks in advance,
Regards,
NatanielThanks Martin, thanks Harold,
In fact what I want to achieve is to establish several (as many as possible) tdp sessions among my 12K and any other Cisco router, so I am not seeking for the label switching functionalities.
Soon after I posted my message I created in my lab a FE back to back connection among two 7507s and configured as I said: sub-interfaces tagged with dot1q and added a /30 in each of them. Afterwards I configured tag-switching in all the subinterfaces and could see that the tdp sessions were created. Certainly I did not verify the TCP sessions linked to the tdp sessiones neither did debugging to see messages but I think that this scenario might work for what I want: to give some stress in tdp sessions to my 12K as I have in production.
Our core is based in 12Ks and runs tag-switching so I am figuring out how to test a migration scenario towards mpls, this is my final goal. I want to observe a 12012´s performance while handling tdp and ldp sessions at the same time. ANY SUGGESTIONS? :)
Thank you guys!
Regards,
Nataniel -
Link errors when tag-switching enabled
I have 4 6506 with SUP720-3BXL connected via 100Mb ethernet links as below. (you may have to copy the diagram to look at it using a fixed font)
r3---utp---r4
|.........|
media......|
converter..|
|.........|
fibre....Telstra 2Mb Ethernet service
|.........|
media......|
converter..|
|.........|
r1--fibre--r2
On the link between r1 and r3 I am getting CRC errors and runts for about 5% of packets.
When I turn off tag-switching on that link I get no errors so it doesn't appear to be a physical link problem.
No other links are showing these symptoms.
Any ideas as to what could be causing this?
Michaelrepeat after me (as many time as necessary)
a layer 1 problem is not an mpls problem
a layer 1 problem is not an mpls problem
a layer 1 problem is not an mpls problem
a layer 1 problem is not an mpls problem
Switch interface is set for 100Mb full-duplex
Media converter is set for 100Mb full-duplex also, but this media converter also has a DIP switch labelled 'force'
I changed this DIP switch and everthing runs perfectly.
I hate media converters. -
About command"tag-switching advertise-tags"
Does the command "tag-switching advertise-tags" must be used in the mpls environment? If I do not use it, whether the PE or P router can not work normally?
Hi,
Well the tag-switching advertise tags is used only to apply the tags to an IP Prefix selectively & not for the Global IP Table..
As soon as u enable MPLS on an interface it floods the MPLS LFIB with the local labels & with the labelled prefix only with the allowed Prefx range..
The advertised -tag is normally associated with the access-list..
As an example I can use advertise tags associating with the only the loopback which shall be the next-hop for PE/P..
Pls do let me know for further queries..
Thanks.
Pinku P Doshi
CCIE-Datacraft India -
Do I always need tag-switching ip
Do I always need tag-switching ip on a mpls interface
And what does it actually do
Regards
PErHi
It doesnt really mention anything regarding the
tag-switching ip command
this is what i have in my config
interface FastEthernet0/0
no ip address
duplex auto
speed auto
interface FastEthernet0/0.103
encapsulation dot1Q 103
ip address 10.1.1.9 255.255.255.252
mpls traffic-eng tunnels
tag-switching ip
interface FastEthernet0/0.104
encapsulation dot1Q 104
ip address 10.1.1.13 255.255.255.252
mpls traffic-eng tunnels
interface FastEthernet0/0.108
encapsulation dot1Q 108
ip vrf forwarding int-cust
ip address 192.168.1.14 255.255.255.252
interface FastEthernet0/0.131
encapsulation dot1Q 131
ip address 10.111.64.237 255.255.255.0
interface FastEthernet0/1
no ip address
shutdown
duplex auto
speed auto
as you can see some of the interfaces uses tag-switching ip and others dont
can you clearify if its needed or not and what does it do.
In this config there is no mpls ip commands ????
Regards -
TDP tag-switching - "tag not in FIB"
Afternoon all,
Some guidance would be appreciated. I am supporting a small EU MPLS network - 3 P routers linked by ATM PVCs to 17 PE routers. The P routers are the route reflectors and the IGP is OSPF - most routers 7206VXR/NPE300. IOS = 12.2(7). TDP being used.
I have a customer requirement to break the traditional PE link to a P router directly by a PVC or FE if on same site.
I have attempted to link 3 PE routers in a chain, hanging off another PE router (see diagram). Basically this would result in "Top-PE" linking the chain with the rest of the EU network. Connecting "Second-PE" directly to the P router is not an option sadly. All router tag-switching interfaces and loopbacks are part of OSPF area 0 and all loopbacks can be contacted perfectly. All routers VPNV4 peer with the 3 RRs. The chain of PEs in the yellow box are all tag-switching perfectly and VPNs are working perfectly - just not beyond "Second-PE". When I run "tag-switching ip" on "Top-PE", it does not create any forwarding tags to "Second-PE" as you can see below (tag not in FIB):
top-PE# sh ip cef vrf XYZ 194.13.125.78
194.13.125.64/28, version 13780
0 packets, 0 bytes
Flow: AS 0, mask 28
tag information set
local tag: VPN-route-head
fast tag rewrite with
Recursive rewrite via tag not in FIB , tags imposed {116}
via 20.63.4.133, 0 dependencies, recursive
next hop 20.63.38.114, Ethernet6/2.2706 via 20.63.4.133/32
valid punt adjacency
tag rewrite with
Recursive rewrite via tag not in FIB , tags imposed {116}
top-PE# sh tag-switching int
Interface IP Tunnel Operational
FastEthernet1/1 Yes No Yes ! to P router
Ethernet6/2.2706 Yes No Yes ! to "Second-PE"
"sh tag forwarding-table" does not show any tags for Interface Ethernet6/2.2706
Everything works fine on "Second-PE" as follows:
Second-PE# sh ip cef vrf XYZ 194.13.125.46
194.13.125.32/28, version 318, epoch 0, cached adjacency 20.63.38.113
0 packets, 0 bytes
tag information set
local tag: VPN-route-head
fast tag rewrite with Fa0/1.2706, 20.63.38.113, tags imposed: {159 147}
via 20.63.4.131, 0 dependencies, recursive
next hop 20.63.38.113, FastEthernet0/1.2706 via 20.63.4.131/32
valid cached adjacency
tag rewrite with Fa0/1.2706, 20.63.38.113, tags imposed: {159 147}
Q1) Can PE routers simply onward tag-switch packets that are not destined for them, just as P routers do.
Q2) Can PE routers act as a P router and PE router at the same time - so have some interfaces running VRFs, and some tag-switching?
Q3) If answers to above state this "should" work, is it likely to be an IOS bug? I can find nothing on CCO about "tag not in FIB"
Q4) should the design (although not ideal in any way) shown in diagram work?
Many thanks for any assistance anybody can provide,
best regards
NeilA1) yes.
A2) yes.
A3) "Recursive rewrite via tag not in FIB" means that there is no label in the fib for the loopback address of the egress PE (20.63.4.133).
Could you please provide a "show ip route 20.63.4.133", "show ip cef 20.63.4.133" and "show mpls ldp bind 20.63.4.133 32" from the "top PE".
A4) It should definitely work.
Hope this helps, -
Can not enable tag-switching on the router
Good day for all,
i have 7206 g1 router with 7200 Software (C7200-JK9S-M), Version 12.3(4)T4 (enterprise)
and i can not enable mpls.
Router(config)#int gigabitEthernet 0/2.102
Router(config-subif)#mpls ip
% Tag switching not supported on interface GigabitEthernet0/2.102
this error on all interfaces
what is the problem? (cef enable)
Thank YouI have 2 identical 7206VXR, same IOS, same PAs
And one of em allows tag-switching on FasteEthernet 0/0.30 (dot1q), other - doesnt :(
--- rtr 1 ----
Cisco Internetwork Operating System Software
IOS (tm) 7200 Software (C7200-P-M), Version 12.2(18)S5, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Sat 08-May-04 10:43 by nmasa
Image text-base: 0x60008FE0, data-base: 0x6151E000
ROM: System Bootstrap, Version 12.0(19990210:195103) [12.0XE 105], DEVELOPMENT SOFTWARE
BOOTLDR: 7200 Software (C7200-BOOT-M), Version 12.0(18)S, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1)
TV3 uptime is 3 weeks, 14 hours, 28 minutes
System returned to ROM by reload at 23:02:24 EEST Thu Aug 12 2004
System image file is "slot0:c7200-p-mz.122-18.S5.bin"
Last reload reason: Reload command
cisco 7206VXR (NPE300) processor (revision D) with 229376K/65536K bytes of memory.
Processor board ID 21265679
R7000 CPU at 262Mhz, Implementation 39, Rev 2.1, 256KB L2 Cache
6 slot VXR midplane, Version 2.0
Last reset from power-on
Channelized E1, Version 1.0.
X.25 software, Version 3.0.0.
Bridging software.
Primary Rate ISDN software, Version 1.1.
PCI bus mb0_mb1 has 200 bandwidth points
PCI bus mb2 has 0 bandwidth points
1 FastEthernet/IEEE 802.3 interface(s)
53 Serial network interface(s)
48 Channelized E1/PRI port(s)
125K bytes of non-volatile configuration memory.
20480K bytes of Flash PCMCIA card at slot 0 (Sector size 128K).
4096K bytes of Flash internal SIMM (Sector size 256K).
Configuration register is 0x2112
--- rtr 2 ---
Cisco Internetwork Operating System Software
IOS (tm) 7200 Software (C7200-P-M), Version 12.2(18)S5, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Sat 08-May-04 10:43 by nmasa
Image text-base: 0x60008FE0, data-base: 0x6151E000
ROM: System Bootstrap, Version 12.0(19990210:195103) [12.0XE 105], DEVELOPMENT SOFTWARE
BOOTLDR: 7200 Software (C7200-BOOT-M), Version 12.0(9)S, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1)
TV1 uptime is 3 weeks, 14 hours, 39 minutes
System returned to ROM by reload at 22:51:22 EEST Thu Aug 12 2004
System restarted at 22:53:54 EEST Thu Aug 12 2004
System image file is "slot0:c7200-p-mz.122-18.S5.bin"
Last reload reason: Reload command
cisco 7206VXR (NPE300) processor (revision D) with 229376K/65536K bytes of memory.
Processor board ID 18285647
R7000 CPU at 262Mhz, Implementation 39, Rev 1.0, 256KB L2 Cache
6 slot VXR midplane, Version 2.0
Last reset from power-on
Channelized E1, Version 1.0.
X.25 software, Version 3.0.0.
Bridging software.
Primary Rate ISDN software, Version 1.1.
PCI bus mb0_mb1 has 200 bandwidth points
PCI bus mb2 has 0 bandwidth points
1 FastEthernet/IEEE 802.3 interface(s)
68 Serial network interface(s)
48 Channelized E1/PRI port(s)
125K bytes of non-volatile configuration memory.
20480K bytes of Flash PCMCIA card at slot 0 (Sector size 128K).
4096K bytes of Flash internal SIMM (Sector size 256K).
Configuration register is 0x102
TV3(config)#in fas 0/0.30
TV3(config-subif)#tag ip
% Tag switching not supported on interface FastEthernet0/0.30 -
Awesome WM text pointer disappears on tag switch
Hi,
I have the following problem. On one tag I keep Atom with some file open. If I use the mouse to click on some other tag and go back to Atom everything is ok. If I use modkey+<num> to switch to another tag and back while the mouse is over the task bar or over the widgets everything is ok. But when I switch the tag again with the keyboard shortcut and go back to Atom while the mouse is somewhere over the clients the text pointer in Atom disappears and I need to click somewhere in the text to make it reappear. And it's really annoying when coding to reach for the mouse every time you change to some other tag and back.
Here's my rc.lua:
Dremora Awesome WM config 2.0
github.com/copycat-killer
-- {{{ Required libraries
local gears = require("gears")
local awful = require("awful")
awful.rules = require("awful.rules")
require("awful.autofocus")
local wibox = require("wibox")
local beautiful = require("beautiful")
local naughty = require("naughty")
local drop = require("scratchdrop")
local lain = require("lain")
-- {{{ Error handling
if awesome.startup_errors then
naughty.notify({ preset = naughty.config.presets.critical,
title = "Oops, there were errors during startup!",
text = awesome.startup_errors })
end
do
local in_error = false
awesome.connect_signal("debug::error", function (err)
if in_error then return end
in_error = true
naughty.notify({ preset = naughty.config.presets.critical,
title = "Oops, an error happened!",
text = err })
in_error = false
end)
end
-- {{{ Autostart applications
function run_once(cmd)
findme = cmd
firstspace = cmd:find(" ")
if firstspace then
findme = cmd:sub(0, firstspace-1)
end
awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
end
run_once("urxvtd")
run_once("unclutter")
-- {{{ Variable definitions
-- localization
--os.setlocale(os.getenv("LANG"))
-- beautiful init
beautiful.init(os.getenv("HOME") .. "/.config/awesome/themes/dremora/theme.lua")
-- common
modkey = "Mod4"
altkey = "Mod1"
terminal = "xfce4-terminal" or "xterm"
editor = os.getenv("EDITOR") or "nano" or "vi"
editor_cmd = terminal .. " -e " .. editor
-- user defined
browser = "google-chrome"
browser2 = "iron"
gui_editor = "atom"
-- graphics = "gimp"
local layouts = {
awful.layout.suit.floating,
lain.layout.uselesstile,
awful.layout.suit.fair,
lain.layout.uselesstile.left,
lain.layout.uselesstile.top
-- {{{ Tags
tags = {
names = { "ƀ", "Ƅ", "Ɗ", "ƈ", "ƙ" },
layout = { layouts[1], layouts[3], layouts[2], layouts[1], layouts[5] }
for s = 1, screen.count() do
tags[s] = awful.tag(tags.names, s, tags.layout)
end
-- {{{ Wallpaper
if beautiful.wallpaper then
for s = 1, screen.count() do
gears.wallpaper.maximized(beautiful.wallpaper, s, true)
end
end
-- {{{ Menu
mymainmenu = awful.menu.new({ items = require("menugen").build_menu(),
theme = { height = 16, width = 130 }})
-- {{{ Wibox
markup = lain.util.markup
white = beautiful.fg_focus
gray = "#858585"
-- Textclock
mytextclock = awful.widget.textclock(markup(gray, " %a")
.. markup(white, " %d ") .. markup(gray, "%b ") .. markup(white, "%H:%M "))
-- Calendar
lain.widgets.calendar:attach(mytextclock, { fg = white })
--[[ Mail IMAP check
-- commented because it needs to be set before use
mailwidget = lain.widgets.imap({
timeout = 180,
server = "server",
mail = "mail",
password = "keyring get mail",
settings = function()
mail_notification_preset.fg = white
mail = ""
count = ""
if mailcount > 0 then
mail = "Mail "
count = mailcount .. " "
end
widget:set_markup(markup(gray, mail) .. markup(white, count))
end
-- MPD
mpdwidget = lain.widgets.mpd({
settings = function()
mpd_notification_preset.fg = white
artist = mpd_now.artist .. " "
title = mpd_now.title .. " "
file = mpd_now.file .. " "
if mpd_now.state == "pause" then
file = "mpd paused"
elseif mpd_now.state == "stop" then
file = ""
end
widget:set_markup(markup(gray, file))
end
-- /home fs
fshome = lain.widgets.fs({
partition = "/home",
settings = function()
fs_notification_preset.fg = white
fs_header = ""
fs_p = ""
if fs_now.used >= 90 then
fs_header = " Hdd "
fs_p = fs_now.used
end
widget:set_markup(markup(gray, fs_header) .. markup(white, fs_p))
end
-- Battery
batwidget = lain.widgets.bat({
settings = function()
bat_header = " Bat "
bat_p = bat_now.perc .. " "
if bat_now.status == "Not present" then
bat_header = ""
bat_p = ""
end
widget:set_markup(markup(gray, bat_header) .. markup(white, bat_p))
end
-- ALSA volume
volumewidget = lain.widgets.alsa({
settings = function()
header = " Vol "
vlevel = volume_now.level
if volume_now.status == "off" then
vlevel = vlevel .. "M "
else
vlevel = vlevel .. " "
end
widget:set_markup(markup(gray, header) .. markup(white, vlevel))
end
-- Weather
yawn = lain.widgets.yawn(123456,
settings = function()
yawn_notification_preset.fg = white
end
-- Separators
first = wibox.widget.textbox('<span font="Tamsyn 4"> </span>')
arrl_pre = wibox.widget.imagebox()
arrl_pre:set_image(beautiful.arrl_lr_pre)
arrl_post = wibox.widget.imagebox()
arrl_post:set_image(beautiful.arrl_lr_post)
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
awful.button({ }, 1, awful.tag.viewonly),
awful.button({ modkey }, 1, awful.client.movetotag),
awful.button({ }, 3, awful.tag.viewtoggle),
awful.button({ modkey }, 3, awful.client.toggletag),
awful.button({ }, 4, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
awful.button({ }, 1, function (c)
if c == client.focus then
c.minimized = true
else
-- Without this, the following
-- :isvisible() makes no sense
c.minimized = false
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
-- This will also un-minimize
-- the client, if needed
client.focus = c
c:raise()
end
end),
awful.button({ }, 3, function ()
if instance then
instance:hide()
instance = nil
else
instance = awful.menu.clients({ width=250 })
end
end),
awful.button({ }, 4, function ()
awful.client.focus.byidx(1)
if client.focus then client.focus:raise() end
end),
awful.button({ }, 5, function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end))
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = awful.widget.prompt()
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = awful.widget.layoutbox(s)
mylayoutbox[s]:buttons(awful.util.table.join(
awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
-- Create the wibox
mywibox[s] = awful.wibox({ position = "top", screen = s, height = 18 })
-- Widgets that are aligned to the left
local left_layout = wibox.layout.fixed.horizontal()
left_layout:add(first)
left_layout:add(mytaglist[s])
left_layout:add(arrl_pre)
left_layout:add(mylayoutbox[s])
left_layout:add(arrl_post)
left_layout:add(mypromptbox[s])
left_layout:add(first)
-- Widgets that are aligned to the right
local right_layout = wibox.layout.fixed.horizontal()
if s == 1 then right_layout:add(wibox.widget.systray()) end
right_layout:add(first)
right_layout:add(mpdwidget)
--right_layout:add(mailwidget)
right_layout:add(fshome)
right_layout:add(batwidget)
right_layout:add(volumewidget)
right_layout:add(mytextclock)
-- Now bring it all together (with the tasklist in the middle)
local layout = wibox.layout.align.horizontal()
layout:set_left(left_layout)
layout:set_middle(mytasklist[s])
layout:set_right(right_layout)
mywibox[s]:set_widget(layout)
end
-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
awful.button({ }, 3, function () mymainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
globalkeys = awful.util.table.join(
-- Take a screenshot
-- https://github.com/copycat-killer/dots/blob/master/bin/screenshot
awful.key({ altkey }, "p", function() os.execute("screenshot") end),
-- Tag browsing
awful.key({ modkey }, "Left", awful.tag.viewprev ),
awful.key({ modkey }, "Right", awful.tag.viewnext ),
awful.key({ modkey }, "Escape", awful.tag.history.restore),
-- Non-empty tag browsing
awful.key({ altkey }, "Left", function () lain.util.tag_view_nonempty(-1) end),
awful.key({ altkey }, "Right", function () lain.util.tag_view_nonempty(1) end),
-- Default client focus
awful.key({ altkey }, "k",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
awful.key({ altkey }, "j",
function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end),
-- By direction client focus
awful.key({ modkey }, "j",
function()
awful.client.focus.bydirection("down")
if client.focus then client.focus:raise() end
end),
awful.key({ modkey }, "k",
function()
awful.client.focus.bydirection("up")
if client.focus then client.focus:raise() end
end),
awful.key({ modkey }, "h",
function()
awful.client.focus.bydirection("left")
if client.focus then client.focus:raise() end
end),
awful.key({ modkey }, "l",
function()
awful.client.focus.bydirection("right")
if client.focus then client.focus:raise() end
end),
-- Show Menu
-- awful.key({ modkey }, "w",
-- function ()
-- mymainmenu:show({ keygrabber = true })
-- end),
-- Show/Hide Wibox
-- awful.key({ modkey }, "b", function ()
-- mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
-- end),
-- On the fly useless gaps change
awful.key({ altkey, "Control" }, "=", function () lain.util.useless_gaps_resize(1) end),
awful.key({ altkey, "Control" }, "-", function () lain.util.useless_gaps_resize(-1) end),
-- Layout manipulation
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
awful.key({ altkey, "Shift" }, "l", function () awful.tag.incmwfact( 0.05) end),
awful.key({ altkey, "Shift" }, "h", function () awful.tag.incmwfact(-0.05) end),
awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end),
awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end),
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
awful.key({ modkey, "Control" }, "n", awful.client.restore),
-- Standard program
awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
awful.key({ modkey, "Control" }, "r", awesome.restart),
awful.key({ modkey, "Shift" }, "q", awesome.quit),
-- Dropdown terminal
awful.key({ modkey, }, "z", function () drop(terminal) end),
-- Widgets popups
awful.key({ altkey, }, "c", function () lain.widgets.calendar:show(7) end),
awful.key({ altkey, }, "h", function () fshome.show(7) end),
awful.key({ altkey, }, "w", function () yawn.show(7) end),
-- ALSA volume control
awful.key({ }, "XF86AudioRaiseVolume",
function ()
awful.util.spawn(string.format("amixer -c %s set %s 1+", volumewidget.card, volumewidget.channel))
volumewidget.update()
end),
awful.key({ }, "XF86AudioLowerVolume",
function ()
awful.util.spawn(string.format("amixer -c %s set %s 1-", volumewidget.card, volumewidget.channel))
volumewidget.update()
end),
awful.key({ }, "XF86AudioMute",
function ()
awful.util.spawn(string.format("amixer -c %s set %s toggle", volumewidget.card, volumewidget.channel))
--awful.util.spawn(string.format("amixer set %s toggle", volumewidget.channel))
volumewidget.update()
end),
awful.key({ altkey, "Control" }, "m",
function ()
awful.util.spawn(string.format("amixer -c %s set %s 100%%", volumewidget.card, volumewidget.channel))
volumewidget.update()
end),
-- MPD control
awful.key({ }, "XF86AudioPlay",
function ()
awful.util.spawn_with_shell("mpc toggle || ncmpc toggle || pms toggle")
mpdwidget.update()
end),
awful.key({ }, "XF86AudioStop",
function ()
awful.util.spawn_with_shell("mpc stop || ncmpc stop || pms stop")
mpdwidget.update()
end),
awful.key({ }, "XF86AudioPrev",
function ()
awful.util.spawn_with_shell("mpc prev || ncmpc prev || pms prev")
mpdwidget.update()
end),
awful.key({ }, "XF86AudioNext",
function ()
awful.util.spawn_with_shell("mpc next || ncmpc next || pms next")
mpdwidget.update()
end),
-- Copy to clipboard
awful.key({ modkey }, "c", function () os.execute("xsel -p -o | xsel -i -b") end),
-- User programs
awful.key({ modkey }, "w", function () awful.util.spawn(browser) end),
awful.key({ modkey }, "s", function () awful.util.spawn(gui_editor) end),
awful.key({ modkey }, "g", function () awful.util.spawn(graphics) end),
awful.key({ modkey }, "e", function () awful.util.spawn("thunar") end),
-- Prompt
awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end),
awful.key({ modkey }, "x",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen].widget,
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end),
-- {{ Configures Keymap }} --
awful.key({ "Control", "Shift" }, "k",
function()
awful.util.spawn("xmodmap /home/peio/.Xmodmap_Internal")
naughty.notify({ timeout = 8, text = "Keyboard configured for internal." })
end),
awful.key({ "Control", "Shift" }, "l",
function()
awful.util.spawn("xmodmap /home/peio/.Xmodmap_External")
naughty.notify({ timeout = 8, text = "Keyboard configured for external." })
end)
clientkeys = awful.util.table.join(
awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
awful.key({ modkey, }, "q", function (c) c:kill() end),
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
awful.key({ modkey, }, "o", awful.client.movetoscreen ),
awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end),
awful.key({ modkey, }, "n",
function (c)
-- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus.
c.minimized = true
end),
awful.key({ modkey, }, "m",
function (c)
c.maximized_horizontal = not c.maximized_horizontal
c.maximized_vertical = not c.maximized_vertical
end)
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it works on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
globalkeys = awful.util.table.join(globalkeys,
awful.key({ modkey }, "#" .. i + 9,
function ()
local screen = mouse.screen
local tag = awful.tag.gettags(screen)[i]
if tag then
awful.tag.viewonly(tag)
end
end),
awful.key({ modkey, "Control" }, "#" .. i + 9,
function ()
local screen = mouse.screen
local tag = awful.tag.gettags(screen)[i]
if tag then
awful.tag.viewtoggle(tag)
end
end),
awful.key({ modkey, "Shift" }, "#" .. i + 9,
function ()
local tag = awful.tag.gettags(client.focus.screen)[i]
if client.focus and tag then
awful.client.movetotag(tag)
end
end),
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
function ()
local tag = awful.tag.gettags(client.focus.screen)[i]
if client.focus and tag then
awful.client.toggletag(tag)
end
end))
end
clientbuttons = awful.util.table.join(
awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
awful.button({ modkey }, 1, awful.mouse.client.move),
awful.button({ modkey }, 3, awful.mouse.client.resize))
-- Set keys
root.keys(globalkeys)
-- {{{ Rules
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal,
focus = awful.client.focus.filter,
keys = clientkeys,
buttons = clientbuttons,
size_hints_honor = false } },
{ rule = { class = "URxvt" },
properties = { opacity = 0.99 } },
{ rule = { class = "MPlayer" },
properties = { floating = true } },
{ rule = { class = "Dwb" },
properties = { tag = tags[1][1] } },
{ rule = { class = "Iron" },
properties = { tag = tags[1][1] } },
{ rule = { instance = "plugin-container" },
properties = { tag = tags[1][1] } },
{ rule = { class = "Gimp" },
properties = { tag = tags[1][4] } },
{ rule = { class = "Gimp", role = "gimp-image-window" },
properties = { maximized_horizontal = true,
maximized_vertical = true } },
-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c, startup)
-- Enable sloppy focus
c:connect_signal("mouse::enter", function(c)
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
if not startup and not c.size_hints.user_position
and not c.size_hints.program_position then
awful.placement.no_overlap(c)
awful.placement.no_offscreen(c)
end
local titlebars_enabled = false
if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then
-- buttons for the titlebar
local buttons = awful.util.table.join(
awful.button({ }, 1, function()
client.focus = c
c:raise()
awful.mouse.client.move(c)
end),
awful.button({ }, 3, function()
client.focus = c
c:raise()
awful.mouse.client.resize(c)
end)
-- Title in the middle
local middle_layout = wibox.layout.flex.horizontal()
local title = awful.titlebar.widget.titlewidget(c)
title:set_align("center")
middle_layout:add(title)
middle_layout:buttons(buttons)
local layout = wibox.layout.align.horizontal()
layout:set_middle(middle_layout)
awful.titlebar(c,{size=18}):set_widget(layout)
end
end)
-- No border for maximized clients
client.connect_signal("focus",
function(c)
if c.maximized_horizontal == true and c.maximized_vertical == true then
c.border_color = beautiful.border_normal
else
c.border_color = beautiful.border_focus
end
end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- {{{ Arrange signal handler
for s = 1, screen.count() do screen[s]:connect_signal("arrange", function ()
local clients = awful.client.visible(s)
local layout = awful.layout.getname(awful.layout.get(s))
if #clients > 0 then -- Fine grained borders and floaters control
for _, c in pairs(clients) do -- Floaters always have borders
if awful.client.floating.get(c) or layout == "floating" then
c.border_width = beautiful.border_width
-- No borders with only one visible client
elseif #clients == 1 or layout == "max" then
clients[1].border_width = 0
else
c.border_width = beautiful.border_width
end
end
end
end)
end
function run_once(cmd)
findme = cmd
firstspace = cmd:find(" ")
if firstspace then
findme = cmd:sub(0, firstspace-1)
end
awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
end
run_once("nm-applet")
If someone can help me I'll be really thankful.
Best regards,
GeorgiThis is weird behavior that I don't experience with Awesome and Atom. Does this happen only with Atom, or with anything? One aspect of your rc.lua that might cause something like this is the sloppy focusing, this bit here:
-- Enable sloppy focus
c:connect_signal("mouse::enter", function(c)
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
Try disabling that, by commenting it out entirely, and see if the problem persists.
If it only happens with Atom, then maybe Atom conflicts for some reason with this sloppy focusing. -
SG200-26 26-Port Gigabit Smart Switch - MTU settings
SG200-26 26-Port, firmware 1.3.7.18
I have MTU mismatch on the network and the last device that can be responsible for the mismatch is my Cisco SG200-26. I was looking long and hard for where I can at least check what is the value of MTU on the switch but I can't find it. Ideally I would like to know not only where to check it but also where to change it. Can you please help?
Many thanks,
JayHi Jay,
I am not very sure if this is the correct location to find the MTU, but you may check the following link:-
http://www.cisco.com/c/dam/en/us/td/docs/switches/lan/csbss/sf20x_sg20x/administration_guide/78-21139.pdf
Administration > Discovery - LLDP > LLDP Local Information
LLDP Port Status Table
LLDP Local Information Details
802.3 Details
Let me know if this helps.
Aniket -
Show tag-switching forwarding-table output
Hi
I'm doing a bit of mpls study and wondered if someone could confirm, or otherwise, my understanding of the LFIB table.
Local tag - The tag that this device would advertise upstream for a neighbour to use to get to a prefix ?
Outgoing tag - The tag I will apply as I send data downstream towards the destination ?
So for example prefix 10.1.1.0/24
Local tag 30 Outgoing tag 35. I put 30 on if I send to 10.1.1.0/24 and I advertise tag 35 to upstream neighbours to get to 10.1.1.0/24. Is that correct ?
What would pop tag mean in the outgoing tag column ? Would that be a PE telling a P to send untagged data because the PE is a neighbour with the CE advertising that prefix ?
Lastly what would the untagged and aggregate options mean ?
Thanks, Stephen.Hello Steven,
>> Local tag 30 Outgoing tag 35. I put 30 on if I send to 10.1.1.0/24 and I advertise tag 35 to upstream neighbours to get to 10.1.1.0/24. Is that correct ?
It is just the opposite:
outgoing label = it is the label received by the device that is in the path to the destination prefix
local label= it is the label assigned by local node to the prefix and advertised to all LDP neighbors and used by neighbors that use local node to reach the destination.
if an MPLS frame with label 30 is received on an interface of local node it is swapped to label 35 and sent out the interface where this label binding has been received, that is on the best path to destination according to IGP metric.
the signalling protocol for MPLS builds other tables.
CEF builds the FIB forwarding information table.
LDP builds LFIB = label forwarding information table.
the routers in the MPLS cloud build LDP sessions between them.
In MPLS framed mode the labels are assigned in unsolicited mode: they are assigned to prefixes in the FIB before traffic for that prefix is seen.
Each router sends out its label assignments towards its LDP neighbors.
On each router each label value is used only once and associated to a prefix or other FEC.
the labels actually travel in the opposite direction of traffic: from nearest to farest node. Thi is called downstream.
unsolicited downstream indipendent
indipendent means that a node is free to associate a label to a prefix in FIB before receiving the label binding from the router that is on the path to the prefix.
note that all prefixes to be in CEF FIB have to be advertised by an IPV4 routing protocol like OSPF, EIGRP or IS-IS.
Also the LDP sessions are built using loopback interfaces so they can be setup only after the routing protocol convergence.
the end result that can be checked with
sh mpls forwarding
is that a local label is associated to the prefix,
the label received by the router upstream (nearest to the destination ) is used to send out MPLS packets
the local label is used by the router downstream (farer from destination) the current node when sending frame to this node
the mpls forwarding table says
if an incoming packet with label local-label is received I will send out a specific interface with label= action or outgoing label.
The edge nodes are the routers with at least one non mpls interface.
These nodes when sending traffic to a prefix perform label imposition by looking at LFIB if an entry is found is used to build the outgoing label.
when the edge routers receive packets destinated to their non mpls connected interaces they do the opposite by extracting the packet.
IOS uses normally penultimate hop popping: actually the last router before the edge node receives a special label (implicit-null) that instructs it to send packets for the prefix untagged to the edge node.
This is an optimization.
To be noted that MPLS support multiple label stacks and these are used for many applications: L3 VPN, L2 VPN, MPLS TE protection, 6PE, 6VPE.
when moving in the MPLS cloud only the more external label is changed at each node hop.
Inner labels travel unchanged end-to-end.
Hope to help
Giuseppe -
hy guys,
we have a border router in our network who originate the default. the border is running ldp and it is positioned as a PE. the idea is that on the directly connected P router the 0.0.0.0/0 prefix appears as tagged instead of having a PHP for it.
the configuration on the PE is :
router isis
net 49.0193.0231.0103.0055.00
metric-style wide
max-lsp-lifetime 65535
lsp-refresh-interval 63000
no hello padding
log-adjacency-changes
redistribute connected
default-information originate route-map Metric_Default
interface POS1/0
ip address 80.231.64.6 255.255.255.252
route-map Metric_Default permit 10
match ip address 15
set metric 10000
set metric-type external
access-list 15 permit 80.231.64.4 0.0.0.3
ip route 0.0.0.0 0.0.0.0 POS1/0Marius,
You need to configure "mpls ip default-route" if you want to enable label distribution for the default route.
Hope this helps, -
Hi All,
We are getting this error, just wonder if someone has seen it before.
"%TFIB-SP-7-SCANSABORTED: TFIB scan not completing. Unresolved adjacency"
Regards,hi
this is what i have recd for the error message the temporary fix would be clearing the cef table.
%TFIB-7-SCANSABORTED: TFIB scan not completing. [chars] [chars]
The periodic TFIB scan is being repeatedly aborted due a some problem such as an unresolved adjacency.
Recommended Action: The system will proceed by letting a TFIB scan complete. Copy the message exactly as it appears on the console or in the system log. Research and attempt to resolve the issue using the tools and utilities provided at http://www.cisco.com/tac. With some messages, these tools and utilities will supply clarifying information. Search for resolved software issues using the Bug Toolkit at http://www.cisco.com/cgi-bin/Support/Bugtool/launch_bugtool.pl. If you still require assistance, open a case with the Technical Assistance Center via the Internet at http://www.cisco.com/cgi-bin/front.x/case_tools/caseOpen.pl, or contact your Cisco technical support representative and provide the representative with the information you have gathered. Attach the following information to your case in nonzipped, plain-text (.txt) format: the output of the show logging and show tech-support commands and your pertinent troubleshooting logs.
but i would suggest to get in touch with your support representative and to hear from him for this problem or else open a valid case with TAC if you have service contract id available with you.
regds
Maybe you are looking for
-
Choppy iPhone video playback after upgrading to 10.5 + QuickTime 7.6.9
Hi, I recently upgraded from 10.4 to 10.5 on my Powerbook G4. I used the "Archive and Install" option. After updating all software to the latest (10.5.8 OSX + 7.6.9 QuickTime), I noticed that the playback of the videos shot with my iPhone 3GS becomes
-
I am used to using older versions of premiere, and I've never run into this problem. I worked on my video just yesterday and everything was working fine, and today it waits for like a minute or two before playing anything on my timeline. When it does
-
PowerBook G4 Alu - The painting flaked
NOTICE : English version follow Moins de 6 mois après l'achat de mon PowerBook, il est survenu un défaut dans le panneau qui entoure le clavier, juste au dessous de la touche option/pomme du clavier. La peinture s'est écaillée. Les photos du problème
-
Keyboard shortcut for top/bottom of mailbox list
Hi, I have some large mailboxes, and when in the middle of the listing it is a pain to have to scroll all the way to the top/bottom to get to the most recent messages (mailbox ordered by date). Home and end keys don't seem to work - is there another
-
Cannot download or install flash update
Tried to view a video on youtube and I'm instructed to turn on java or upgrade to the latest flash player. Java is on, yet everytime I click on the install now button the only result I get is the page refreshes. Going through previous posts I followe